From 4565069f93bfd1c9d54e031036b4f4e23f1d4e70 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:36:36 +0000 Subject: [PATCH 01/51] Phase 1-2: Foundation, build system, and non-conflicting upstream additions Agent-Logs-Url: https://github.com/pbs/django-filer/sessions/cad30a66-0889-48ba-bb3e-2ab3bf2939b2 Co-authored-by: andreilupuleasa <124138251+andreilupuleasa@users.noreply.github.com> --- filer/__init__.py | 17 +- filer/admin/permissionadmin.py | 56 ++++ filer/admin/permissions.py | 48 +++ filer/admin/thumbnailoptionadmin.py | 5 + filer/admin/views.py | 131 ++++++++ filer/apps.py | 61 ++++ filer/cache.py | 91 ++++++ filer/contrib/__init__.py | 0 filer/contrib/clamav/__init__.py | 0 filer/contrib/django_cms/__init__.py | 0 filer/contrib/django_cms/cms_toolbars.py | 51 ++++ filer/management/commands/filer_check.py | 183 ++++++++++++ .../commands/generate_thumbnails.py | 28 ++ filer/models/abstract.py | 282 ++++++++++++++++++ filer/models/thumbnailoptionmodels.py | 61 ++++ filer/urls.py | 13 + filer/utils/compatibility.py | 33 ++ filer/validation.py | 115 +++++++ filer/views.py | 22 +- pyproject.toml | 108 +++++++ 20 files changed, 1301 insertions(+), 4 deletions(-) create mode 100644 filer/admin/permissionadmin.py create mode 100644 filer/admin/permissions.py create mode 100644 filer/admin/thumbnailoptionadmin.py create mode 100644 filer/admin/views.py create mode 100644 filer/cache.py create mode 100644 filer/contrib/__init__.py create mode 100644 filer/contrib/clamav/__init__.py create mode 100644 filer/contrib/django_cms/__init__.py create mode 100644 filer/contrib/django_cms/cms_toolbars.py create mode 100644 filer/management/commands/filer_check.py create mode 100644 filer/management/commands/generate_thumbnails.py create mode 100644 filer/models/abstract.py create mode 100644 filer/models/thumbnailoptionmodels.py create mode 100644 filer/urls.py create mode 100644 filer/utils/compatibility.py create mode 100644 filer/validation.py create mode 100644 pyproject.toml diff --git a/filer/__init__.py b/filer/__init__.py index f705a2ba8..bde226217 100644 --- a/filer/__init__.py +++ b/filer/__init__.py @@ -1,3 +1,14 @@ -#-*- coding: utf-8 -*- -# version string following pep-0440 -__version__ = '0.9.123' # pragma: nocover +""" +See PEP 386 (https://www.python.org/dev/peps/pep-0386/) + +Release logic: + 1. Increase version number (change __version__ below). + 2. Check that all changes have been documented in CHANGELOG.rst. + 3. git add filer/__init__.py CHANGELOG.rst + 4. git commit -m 'Bump to {new version}' + 5. git push + 6. Assure that all tests pass on CI + 7. Create a new release on github. +""" + +__version__ = '3.5.0.pbs.1' diff --git a/filer/admin/permissionadmin.py b/filer/admin/permissionadmin.py new file mode 100644 index 000000000..f3b03bd36 --- /dev/null +++ b/filer/admin/permissionadmin.py @@ -0,0 +1,56 @@ +from django import VERSION as django_version +from django.contrib import admin +from django.contrib.auth import get_user_model +from django.utils.translation import gettext_lazy as _ + +from .. import settings +from ..cache import clear_folder_permission_cache + + +class PermissionAdmin(admin.ModelAdmin): + fieldsets = [ + (None, {'fields': ['type', 'folder']}), + (_("Who"), {'fields': ['user', 'group', 'everybody']}), + (_("What"), {'fields': ['can_edit', 'can_read', 'can_add_children']}), + ] + list_filter = ['group'] + list_display = ['pretty_logical_path', 'who', 'what'] + search_fields = ['user__username', 'group__name', 'folder__name'] + autocomplete_fields = ['user', 'group', 'folder'] + + class Media: + css = {'all': ['filer/css/admin_folderpermissions.css']} + + def get_autocomplete_fields(self, request): + """Remove "owner" from autocomplete_fields if User model has no search_fields""" + + autocomplete_fields = super().get_autocomplete_fields(request) + if django_version >= (5, 0): + user_admin = self.admin_site.get_model_admin(get_user_model()) + else: + user_admin = self.admin_site._registry[get_user_model()] + if not user_admin.get_search_fields(request): + autocomplete_fields.remove('user') + return autocomplete_fields + + def get_queryset(self, request): + qs = super().get_queryset(request) + return qs.prefetch_related("group", "folder") + + def get_model_perms(self, request): + # don't display the permissions admin if permissions are disabled. + # This method is easier for testing than not registering the admin at all at import time + enable_permissions = settings.FILER_ENABLE_PERMISSIONS and request.user.has_perm('filer.add_folderpermission') + return { + 'add': enable_permissions, + 'change': enable_permissions, + 'delete': enable_permissions, + } + + def save_model(self, request, obj, form, change): + clear_folder_permission_cache(request.user) + super().save_model(request, obj, form, change) + + def delete_model(self, request, obj): + clear_folder_permission_cache(request.user) + super().delete_model(request, obj) diff --git a/filer/admin/permissions.py b/filer/admin/permissions.py new file mode 100644 index 000000000..a747990bc --- /dev/null +++ b/filer/admin/permissions.py @@ -0,0 +1,48 @@ +from django import VERSION as django_version +from django.contrib import admin +from django.contrib.auth import get_user_model +from django.urls import reverse + + +class PrimitivePermissionAwareModelAdmin(admin.ModelAdmin): + def get_autocomplete_fields(self, request): + """Remove "owner" from autocomplete_fields if User model has no search_fields""" + + autocomplete_fields = super().get_autocomplete_fields(request) + if django_version >= (5, 0): + user_admin = self.admin_site.get_model_admin(get_user_model()) + else: + user_admin = self.admin_site._registry[get_user_model()] + if not user_admin.get_search_fields(request) and 'owner' in autocomplete_fields: + autocomplete_fields.remove('owner') + return autocomplete_fields + + def has_add_permission(self, request): + # we don't have a "add" permission... but all adding is handled + # by special methods that go around these permissions anyway + # TODO: reactivate return False + return False + + def has_change_permission(self, request, obj=None): + if hasattr(obj, 'has_edit_permission'): + if obj.has_edit_permission(request): + return True + else: + return False + else: + return True + + def has_delete_permission(self, request, obj=None): + # we don't have a specific delete permission... so we use change + return self.has_change_permission(request, obj) + + def _get_post_url(self, obj): + """ + Needed to retrieve the changelist url as Folder/File can be extended + and admin url may change + """ + # Code from django ModelAdmin to determine changelist on the fly + opts = obj._meta + return reverse('admin:%s_%s_changelist' % + (opts.app_label, opts.model_name), + current_app=self.admin_site.name) diff --git a/filer/admin/thumbnailoptionadmin.py b/filer/admin/thumbnailoptionadmin.py new file mode 100644 index 000000000..9bdf5ff26 --- /dev/null +++ b/filer/admin/thumbnailoptionadmin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + + +class ThumbnailOptionAdmin(admin.ModelAdmin): + list_display = ('name', 'width', 'height') diff --git a/filer/admin/views.py b/filer/admin/views.py new file mode 100644 index 000000000..542cff139 --- /dev/null +++ b/filer/admin/views.py @@ -0,0 +1,131 @@ +from django import forms +from django.contrib import admin +from django.contrib.admin import widgets +from django.contrib.auth.decorators import login_required +from django.core.exceptions import PermissionDenied +from django.http import HttpResponseRedirect +from django.http.response import HttpResponseBadRequest +from django.template.response import TemplateResponse +from django.utils.translation import gettext_lazy as _ + +from .. import settings as filer_settings +from ..models import Clipboard, Folder, FolderRoot, tools +from .tools import AdminContext, admin_url_params_encoded, popup_status + + +class NewFolderForm(forms.ModelForm): + class Meta: + model = Folder + fields = ('name',) + widgets = { + 'name': widgets.AdminTextInputWidget, + } + + +@login_required +def make_folder(request, folder_id=None): + if not folder_id: + folder_id = request.GET.get('parent_id') + if not folder_id: + folder_id = request.POST.get('parent_id') + if folder_id: + try: + folder = Folder.objects.get(id=folder_id) + except Folder.DoesNotExist: + raise PermissionDenied + else: + folder = None + + if request.user.is_superuser: + pass + elif folder is None: + # regular users may not add root folders unless configured otherwise + if not filer_settings.FILER_ALLOW_REGULAR_USERS_TO_ADD_ROOT_FOLDERS: + raise PermissionDenied + elif not folder.has_add_children_permission(request): + # the user does not have the permission to add subfolders + raise PermissionDenied + + if request.method == 'POST': + new_folder_form = NewFolderForm(request.POST) + if new_folder_form.is_valid(): + new_folder = new_folder_form.save(commit=False) + if (folder or FolderRoot()).contains_folder(new_folder.name): + new_folder_form._errors['name'] = new_folder_form.error_class( + [_('Folder with this name already exists.')]) + else: + context = admin.site.each_context(request) + new_folder.parent = folder + new_folder.owner = request.user + new_folder.save() + return TemplateResponse(request, 'admin/filer/dismiss_popup.html', context) + else: + new_folder_form = NewFolderForm() + + context = admin.site.each_context(request) + context.update({ + 'opts': Folder._meta, + 'new_folder_form': new_folder_form, + 'is_popup': popup_status(request), + 'filer_admin_context': AdminContext(request), + }) + return TemplateResponse(request, 'admin/filer/folder/new_folder_form.html', context) + + +@login_required +def paste_clipboard_to_folder(request): + if True: + # TODO: cleanly remove Clipboard code if it is no longer needed + return HttpResponseBadRequest('not implemented anymore') + + if request.method == 'POST': + folder = Folder.objects.get(id=request.POST.get('folder_id')) + clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) + if folder.has_add_children_permission(request): + tools.move_files_from_clipboard_to_folder(clipboard, folder) + tools.discard_clipboard(clipboard) + else: + raise PermissionDenied + redirect = request.GET.get('redirect_to', '') + if not redirect: + redirect = request.POST.get('redirect_to', '') + return HttpResponseRedirect( + '{}?order_by=-modified_at{}'.format( + redirect, + admin_url_params_encoded(request, first_separator='&'), + ) + ) + + +@login_required +def discard_clipboard(request): + if True: + # TODO: cleanly remove Clipboard code if it is no longer needed + return HttpResponseBadRequest('not implemented anymore') + + if request.method == 'POST': + clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) + tools.discard_clipboard(clipboard) + return HttpResponseRedirect( + '{}{}'.format( + request.POST.get('redirect_to', ''), + admin_url_params_encoded(request, first_separator='&'), + ) + ) + + +@login_required +def delete_clipboard(request): + if True: + # TODO: cleanly remove Clipboard code if it is no longer needed + return HttpResponseBadRequest('not implemented anymore') + + if request.method == 'POST': + clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) + tools.delete_clipboard(clipboard) + return HttpResponseRedirect( + '{}{}'.format( + request.POST.get('redirect_to', ''), + admin_url_params_encoded(request, first_separator='&'), + ) + ) diff --git a/filer/apps.py b/filer/apps.py index f92cd7939..ce0dc38a1 100644 --- a/filer/apps.py +++ b/filer/apps.py @@ -1,8 +1,69 @@ +import mimetypes + from django.apps import AppConfig +from django.core.exceptions import ImproperlyConfigured from django.utils.translation import gettext_lazy as _ + from filer import __version__ as filer_version class FilerConfig(AppConfig): + default_auto_field = 'django.db.models.AutoField' name = 'filer' verbose_name = _(f"Filer ({filer_version})") + + def register_optional_heif_supprt(self): + try: # pragma: no cover + from pillow_heif import register_heif_opener + + from .settings import IMAGE_EXTENSIONS, IMAGE_MIME_TYPES + + # Register with easy_thumbnails + register_heif_opener() + HEIF_EXTENSIONS = [".heic", ".heics", ".heif", ".heifs", ".hif"] + # Add extensions to python mimetypes which filer uses + for ext in HEIF_EXTENSIONS: + mimetypes.add_type("image/heic", ext) + # Mark them as images + IMAGE_EXTENSIONS += HEIF_EXTENSIONS + IMAGE_MIME_TYPES.append("heic") + except (ModuleNotFoundError, ImportError): + # No heif support installed + pass + + def resolve_validators(self): + """Resolve dotted path file validators""" + + import importlib + + from filer.settings import FILE_VALIDATORS, FILER_MIME_TYPE_WHITELIST + + if ( + not isinstance(FILER_MIME_TYPE_WHITELIST, (list, tuple)) or # noqa W504 + any(map(lambda x: not isinstance(x, str), FILER_MIME_TYPE_WHITELIST)) + ): # pragma: no cover + raise ImproperlyConfigured( + "filer: setting FILER_MIME_TYPE_WHITELIST needs to be a list or tuple of strings" + ) + self.MIME_TYPE_WHITELIST = FILER_MIME_TYPE_WHITELIST + self.FILE_VALIDATORS = {} + for mime_type, validators in FILE_VALIDATORS.items(): + functions = [] + for item in validators: + if callable(item): # pragma: no cover + functions.append(item) + else: + split = item.rsplit(".", 1) + try: + module = importlib.import_module(split[0]) + functions.append(getattr(module, split[-1])) + except (ImportError, ModuleNotFoundError, AttributeError): + raise ImproperlyConfigured(f"""filer: could not import validator "{item}".""") + self.FILE_VALIDATORS[mime_type] = functions + + def ready(self): + # Make webp mime type known to python (needed for python < 3.11) + mimetypes.add_type("image/webp", ".webp") + # + self.resolve_validators() + self.register_optional_heif_supprt() diff --git a/filer/cache.py b/filer/cache.py new file mode 100644 index 000000000..d9861ac60 --- /dev/null +++ b/filer/cache.py @@ -0,0 +1,91 @@ +import typing + +from django.core.cache import cache +from django.db.models import Model + + +UserModel = typing.TypeVar('UserModel', bound=Model) + + +def get_folder_perm_cache_key(user: UserModel, permission: str) -> str: + """ + Generates a unique cache key for a given user and permission. + + The key is a string in the format "filer:perm:", i.e. it does not + contain the user id. This will be sufficient for most use cases. + + Patch this method to include the user id in the cache key if necessary, e.g., + for far more than 1,000 admin users to make the cached unit require less memory. + + Parameters: + user (UserModel): The user for whom the cache key is being generated. + The `user` can be an instance of the default `django.contrib.auth.models.User` + or any custom user model specified by `AUTH_USER_MODEL` in the settings. + permission (str): The permission for which the cache key is being generated. + + Returns: + str: The generated cache key. + """ + return f"filer:perm:{permission}" + + +def get_folder_permission_cache(user: UserModel, permission: str) -> typing.Optional[typing.Set[int]]: + """ + Retrieves the cached folder permissions for a given user and permission. + + If the cache value exists, it returns the permissions for the user. + If the cache value does not exist, it returns None. + + Parameters: + user (UserModel): The user for whom the permissions are being retrieved. + The `user` can be an instance of the default `django.contrib.auth.models.User` + or any custom user model specified by `AUTH_USER_MODEL` in the settings. + permission (str): The permission for which the permissions are being retrieved. + + Returns: + set or None: The permissions for the user, or None if no cache value exists. + """ + cache_value = cache.get(get_folder_perm_cache_key(user, permission)) + if cache_value: + return cache_value.get(user.pk, None) + return None + + +def clear_folder_permission_cache(user: UserModel, permission: typing.Optional[str] = None) -> None: + """ + Clears the cached folder permissions for a given user. + + If a specific permission is provided, it clears the cache for that permission only. + If no specific permission is provided, it clears the cache for all permissions. + + Parameters: + user (UserModel): The user for whom the permissions are being cleared. + The `user` can be an instance of the default `django.contrib.auth.models.User` + or any custom user model specified by `AUTH_USER_MODEL` in the settings. + permission (str, optional): The specific permission to clear. Defaults to None. + """ + if permission is None: + for perm in ['can_read', 'can_edit', 'can_add_children']: + cache.delete(get_folder_perm_cache_key(user, perm)) + else: + cache.delete(get_folder_perm_cache_key(user, permission)) + + +def update_folder_permission_cache(user: UserModel, permission: str, id_list: typing.Set[int]) -> None: + """ + Updates the cached folder permissions for a given user and permission. + + It first retrieves the current permissions from the cache (or an empty dictionary if none exist). + Then it updates the permissions for the user with the provided list of IDs. + Finally, it sets the updated permissions back into the cache. + + Parameters: + user (UserModel): The user for whom the permissions are being updated. + The `user` can be an instance of the default `django.contrib.auth.models.User` + or any custom user model specified by `AUTH_USER_MODEL` in the settings. + permission (str): The permission to update. + id_list (set): The set of IDs to set as the new permissions. + """ + perms = cache.get(get_folder_perm_cache_key(user, permission)) or {} + perms[user.pk] = set(id_list) + cache.set(get_folder_perm_cache_key(user, permission), perms) diff --git a/filer/contrib/__init__.py b/filer/contrib/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/filer/contrib/clamav/__init__.py b/filer/contrib/clamav/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/filer/contrib/django_cms/__init__.py b/filer/contrib/django_cms/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/filer/contrib/django_cms/cms_toolbars.py b/filer/contrib/django_cms/cms_toolbars.py new file mode 100644 index 000000000..a42928dd2 --- /dev/null +++ b/filer/contrib/django_cms/cms_toolbars.py @@ -0,0 +1,51 @@ +from django.urls import reverse +from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ + +from cms.cms_toolbars import ADMIN_MENU_IDENTIFIER, ADMINISTRATION_BREAK +from cms.toolbar.items import Break +from cms.toolbar_base import CMSToolbar +from cms.toolbar_pool import toolbar_pool + + +SHORTCUTS_BREAK = 'Shortcuts Break' + + +@toolbar_pool.register +class FilerToolbar(CMSToolbar): + """ + Adds a Filer menu-item into django CMS's "ADMIN" (first) menu. + """ + @staticmethod + def get_insert_position(admin_menu, item_name): + """ + Ensures that there is a SHORTCUTS_BREAK and returns a position for an + alphabetical position against all items between SHORTCUTS_BREAK, and + the ADMINISTRATION_BREAK. + """ + start = admin_menu.find_first(Break, identifier=SHORTCUTS_BREAK) + if not start: + end = admin_menu.find_first(Break, identifier=ADMINISTRATION_BREAK) + admin_menu.add_break(SHORTCUTS_BREAK, position=end.index) + start = admin_menu.find_first(Break, identifier=SHORTCUTS_BREAK) + end = admin_menu.find_first(Break, identifier=ADMINISTRATION_BREAK) + + items = admin_menu.get_items()[start.index + 1: end.index] + for idx, item in enumerate(items): + try: + if force_str(item_name.lower()) < force_str(item.name.lower()): + return idx + start.index + 1 + except AttributeError: + # Some item types do not have a 'name' attribute. + pass + return end.index + + def populate(self): + media_library = _('Media library') + + admin_menu = self.toolbar.get_or_create_menu(ADMIN_MENU_IDENTIFIER) + admin_menu.add_sideframe_item( + media_library, + url=reverse('admin:filer_folder_changelist'), + position=self.get_insert_position(admin_menu, media_library) + ) diff --git a/filer/management/commands/filer_check.py b/filer/management/commands/filer_check.py new file mode 100644 index 000000000..2213de57d --- /dev/null +++ b/filer/management/commands/filer_check.py @@ -0,0 +1,183 @@ +import os + +from django.core.management.base import BaseCommand +from django.utils.module_loading import import_string + +from PIL import UnidentifiedImageError + +from filer import settings as filer_settings +from filer.models.filemodels import File +from filer.utils.loader import load_model + + +class Command(BaseCommand): + help = "Check for orphaned files, missing file references, and set image dimensions." + + def add_arguments(self, parser): + parser.add_argument( + '--orphans', + action='store_true', + dest='orphans', + default=False, + help="Scan media folders for orphaned files.", + ) + parser.add_argument( + '--delete-orphans', + action='store_true', + dest='delete_orphans', + default=False, + help="Delete orphaned files from storage.", + ) + parser.add_argument( + '--missing', + action='store_true', + dest='missing', + default=False, + help="Check file references and report missing files.", + ) + parser.add_argument( + '--delete-missing', + action='store_true', + dest='delete_missing', + default=False, + help="Delete database entries if files are missing in the media folder.", + ) + parser.add_argument( + '--image-dimensions', + action='store_true', + dest='image_dimensions', + default=False, + help="Set image dimensions if they are not set.", + ) + parser.add_argument( + '--noinput', + '--no-input', + action='store_false', + dest='interactive', + default=True, + help="Do not prompt the user for any interactive input.", + ) + + def handle(self, *args, **options): + if options['missing']: + self.verify_references(options) + if options['delete_missing']: + if options['interactive']: + if input( + "\nThis will delete missing file references from the database.\n" + "Type 'yes' to continue, or 'no' to cancel: " + ) != 'yes': + self.stdout.write("Aborted: Missing file references were not deleted.\n") + self.stdout.flush() + return + self.verify_references(options) + + if options['orphans'] or options['delete_orphans']: + if options['delete_orphans'] and options['interactive']: + if input( + "\nThis will delete orphaned files from storage.\n" + "Type 'yes' to continue, or 'no' to cancel: " + ) != 'yes': + self.stdout.write("Aborted: Orphaned files were not deleted.\n") + self.stdout.flush() + return + self.verify_storages(options) + + if options['image_dimensions']: + self.image_dimensions(options) + + def verify_references(self, options): + """ + Checks that every file reference in the database exists in storage. + If a file is missing, either report it or delete the reference based on the provided options. + """ + for file in File.objects.all(): + if not file.file.storage.exists(file.file.name): + if options['delete_missing']: + file.delete() + verbose_msg = f"Deleted missing file reference '{file.folder}/{file}' from the database." + else: + verbose_msg = f"File reference '{file.folder}/{file}' is missing in storage." + if options.get('verbosity', 1) > 2: + self.stdout.write(verbose_msg + "\n") + self.stdout.flush() + elif options.get('verbosity'): + self.stdout.write(os.path.join(str(file.folder), str(file)) + "\n") + self.stdout.flush() + + def verify_storages(self, options): + """ + Scans all storages defined in FILER_STORAGES (e.g., public and private) + for orphaned files, then reports or deletes them based on the options. + """ + + def walk(storage, prefix, label_prefix): + # If the directory does not exist, there is nothing to scan + if not storage.exists(prefix): + return + child_dirs, files = storage.listdir(prefix) + for filename in files: + actual_path = os.path.join(prefix, filename) + relfilename = os.path.join(label_prefix, filename) + if not File.objects.filter(file=actual_path).exists(): + if options['delete_orphans']: + storage.delete(actual_path) + message = f"Deleted orphaned file '{relfilename}'" + else: + message = f"Found orphaned file '{relfilename}'" + if options.get('verbosity', 1) > 2: + self.stdout.write(message + "\n") + self.stdout.flush() + elif options.get('verbosity'): + self.stdout.write(relfilename + "\n") + self.stdout.flush() + for child in child_dirs: + walk(storage, os.path.join(prefix, child), os.path.join(label_prefix, child)) + + # Loop through each storage configuration (e.g., public, private, etc.) + for storage_name, storage_config in filer_settings.FILER_STORAGES.items(): + storage_settings = storage_config.get('main') + if not storage_settings: + continue + storage = import_string(storage_settings['ENGINE'])() + if storage_settings.get('OPTIONS', {}).get('location'): + storage.location = storage_settings['OPTIONS']['location'] + # Set label_prefix: for public and private storages, use their names. + label_prefix = storage_name if storage_name in ['public', 'private'] else storage_settings.get('UPLOAD_TO_PREFIX', '') + walk(storage, storage_settings.get('UPLOAD_TO_PREFIX', ''), label_prefix) + + def image_dimensions(self, options): + """ + For images without set dimensions (_width == 0 or None), try to read their dimensions + and save them, handling SVG files and possible image errors. + """ + from django.db.models import Q + + import easy_thumbnails + from easy_thumbnails.VIL import Image as VILImage + + from filer.utils.compatibility import PILImage + + ImageModel = load_model(filer_settings.FILER_IMAGE_MODEL) + images_without_dimensions = ImageModel.objects.filter(Q(_width=0) | Q(_width__isnull=True)) + self.stdout.write(f"Setting dimensions for {images_without_dimensions.count()} images" + "\n") + self.stdout.flush() + for image in images_without_dimensions: + file_holder = image.file_ptr if getattr(image, 'file_ptr', None) else image + try: + imgfile = file_holder.file + imgfile.seek(0) + except FileNotFoundError: + continue + if image.file.name.lower().endswith('.svg'): + # For SVG files, use VILImage (invalid SVGs do not throw errors) + with VILImage.load(imgfile) as vil_image: + image._width, image._height = vil_image.size + else: + try: + with PILImage.open(imgfile) as pil_image: + image._width, image._height = pil_image.size + image._transparent = easy_thumbnails.utils.is_transparent(pil_image) + except UnidentifiedImageError: + continue + image.save() diff --git a/filer/management/commands/generate_thumbnails.py b/filer/management/commands/generate_thumbnails.py new file mode 100644 index 000000000..64bf3df2f --- /dev/null +++ b/filer/management/commands/generate_thumbnails.py @@ -0,0 +1,28 @@ +from django.core.management.base import BaseCommand + +from filer.models.imagemodels import Image + + +class Command(BaseCommand): + + def handle(self, *args, **options): + """ + Generates image thumbnails + + NOTE: To keep memory consumption stable avoid iteration over the Image queryset + """ + pks = Image.objects.all().values_list('id', flat=True) + total = len(pks) + for idx, pk in enumerate(pks): + image = None + try: + image = Image.objects.get(pk=pk) + self.stdout.write(u'Processing image {0} / {1} {2}'.format(idx + 1, total, image)) + self.stdout.flush() + image.thumbnails + image.icons + except IOError as e: + self.stderr.write('Failed to generate thumbnails: {0}'.format(str(e))) + self.stderr.flush() + finally: + del image diff --git a/filer/models/abstract.py b/filer/models/abstract.py new file mode 100644 index 000000000..e4345896f --- /dev/null +++ b/filer/models/abstract.py @@ -0,0 +1,282 @@ +import logging + +from django.conf import settings +from django.core.checks import Warning +from django.core.checks import register as register_check +from django.core.exceptions import ValidationError +from django.db import models +from django.utils.functional import cached_property +from django.utils.translation import gettext_lazy as _ + +import easy_thumbnails.utils +from easy_thumbnails.VIL import Image as VILImage +from PIL.Image import MAX_IMAGE_PIXELS + +from .. import settings as filer_settings +from ..utils.compatibility import PILImage +from ..utils.filer_easy_thumbnails import FilerThumbnailer +from ..utils.pil_exif import get_exif_for_file +from .filemodels import File + + +logger = logging.getLogger(__name__) + + +# We can never exceed the max pixel value set by Pillow's PIL Image MAX_IMAGE_PIXELS +# as if we allow it, it will fail while thumbnailing (first in the admin thumbnails +# and then in the page itself. +# Refer this https://github.com/python-pillow/Pillow/blob/b723e9e62e4706a85f7e44cb42b3d838dae5e546/src/PIL/Image.py#L3148 +FILER_MAX_IMAGE_PIXELS = getattr(settings, "FILER_MAX_IMAGE_PIXELS", MAX_IMAGE_PIXELS) +if MAX_IMAGE_PIXELS is not None: + FILER_MAX_IMAGE_PIXELS = min(FILER_MAX_IMAGE_PIXELS, MAX_IMAGE_PIXELS) + + +@register_check() +def max_pixel_setting_check(app_configs, **kwargs): + if not FILER_MAX_IMAGE_PIXELS: + return [ + Warning( + "Both settings.FILER_MAX_IMAGE_PIXELS and PIL.Image.MAX_IMAGE_PIXELS are not set.", + hint="Set FILER_MAX_IMAGE_PIXELS to a positive integer value in your settings.py. " + "This setting is used to limit the maximum number of pixels an image can have " + "to protect your site from memory bombs.", + obj=settings, + ) + ] + return [] + + +class BaseImage(File): + SIDEBAR_IMAGE_WIDTH = 210 + DEFAULT_THUMBNAILS = { + 'admin_clipboard_icon': {'size': (32, 32), 'crop': True, + 'upscale': True}, + 'admin_sidebar_preview': {'size': (SIDEBAR_IMAGE_WIDTH, 0), 'upscale': True}, + 'admin_directory_listing_icon': {'size': (48, 48), + 'crop': True, 'upscale': True}, + 'admin_tiny_icon': {'size': (32, 32), 'crop': True, 'upscale': True}, + } + file_type = 'Image' + _icon = "image" + + _height = models.FloatField( + null=True, + blank=True, + ) + + _width = models.FloatField( + null=True, + blank=True, + ) + + _transparent = models.BooleanField( + null=False, + default=False, + ) + + default_alt_text = models.CharField( + _("default alt text"), + max_length=255, + blank=True, + null=True, + ) + + default_caption = models.CharField( + _("default caption"), + max_length=255, + blank=True, + null=True, + ) + + subject_location = models.CharField( + _("subject location"), + max_length=64, + blank=True, + default='', + ) + + file_ptr = models.OneToOneField( + to='filer.File', + parent_link=True, + related_name='%(app_label)s_%(class)s_file', + on_delete=models.CASCADE, + ) + + class Meta: + app_label = 'filer' + verbose_name = _("image") + verbose_name_plural = _("images") + abstract = True + default_manager_name = 'objects' + + @classmethod + def matches_file_type(cls, iname, ifile, mime_type): + # source: https://www.freeformatter.com/mime-types-list.html + from ..settings import IMAGE_MIME_TYPES + maintype, subtype = mime_type.split('/') + return maintype == 'image' and subtype in IMAGE_MIME_TYPES + + def file_data_changed(self, post_init=False): + attrs_updated = super().file_data_changed(post_init=post_init) + if attrs_updated: + try: + try: + imgfile = self.file.file + except ValueError: + imgfile = self.file_ptr.file + imgfile.seek(0) + if self.mime_type == 'image/svg+xml': + self._width, self._height = VILImage.load(imgfile).size + self._transparent = True + else: + pil_image = PILImage.open(imgfile) + self._width, self._height = pil_image.size + self._transparent = easy_thumbnails.utils.is_transparent(pil_image) + imgfile.seek(0) + except Exception: + if post_init is False: + # in case `imgfile` could not be found, unset dimensions + # but only if not initialized by loading a fixture file + self._width, self._height = None, None + self._transparent = False + return attrs_updated + + def clean(self): + # We check the Image size and calculate the pixel before + # the image gets attached to a folder and saved. We also + # send the error msg in the JSON and also post the message + # so that they know what is wrong with the image they uploaded + if not self.file or not FILER_MAX_IMAGE_PIXELS: + return + + if self._width is None or self._height is None: + # If image size exceeds Pillow's max image size, Pillow will not return width or height + pixels = 2 * FILER_MAX_IMAGE_PIXELS + 1 + aspect = 16 / 9 + else: + width, height = max(1, self.width), max(1, self.height) + pixels: int = width * height + aspect: float = width / height + res_x: int = int((FILER_MAX_IMAGE_PIXELS * aspect) ** 0.5) + res_y: int = int(res_x / aspect) + if pixels > 2 * FILER_MAX_IMAGE_PIXELS: + msg = _( + "Image format not recognized or image size exceeds limit of %(max_pixels)d million " + "pixels by a factor of two or more. Before uploading again, check file format or resize " + "image to %(width)d x %(height)d resolution or lower." + ) % dict(max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, width=res_x, height=res_y) + raise ValidationError(str(msg), code="image_size") + + if pixels > FILER_MAX_IMAGE_PIXELS: + msg = _( + "Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " + "million pixels. Before uploading again, resize image to %(width)d x %(height)d " + "resolution or lower." + ) % dict(pixels=pixels // 1000000, max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, + width=res_x, height=res_y) + raise ValidationError(str(msg), code="image_size") + + def save(self, *args, **kwargs): + self.has_all_mandatory_data = self._check_validity() + super().save(*args, **kwargs) + + def _check_validity(self): + if not self.name: + return False + return True + + def sidebar_image_ratio(self): + if self.width: + return float(self.width) / float(self.SIDEBAR_IMAGE_WIDTH) + else: + return 1.0 + + @cached_property + def exif(self): + try: + return get_exif_for_file(self.file) + except Exception: + return {} + + def has_edit_permission(self, request): + return self.has_generic_permission(request, 'edit') + + def has_read_permission(self, request): + return self.has_generic_permission(request, 'read') + + def has_add_children_permission(self, request): + return self.has_generic_permission(request, 'add_children') + + def has_generic_permission(self, request, permission_type): + """ + Return true if the current user has permission on this + image. Return the string 'ALL' if the user has all rights. + """ + user = request.user + if not user.is_authenticated: + return False + elif user.is_superuser: + return True + elif user == self.owner: + return True + elif self.folder: + return self.folder.has_generic_permission(request, permission_type) + else: + return False + + @property + def label(self): + if self.name in ['', None]: + return self.original_filename or 'unnamed file' + else: + return self.name + + @property + def width(self): + return self._width or 0.0 + + @property + def height(self): + return self._height or 0.0 + + def _generate_thumbnails(self, required_thumbnails): + _thumbnails = {} + for name, opts in required_thumbnails.items(): + try: + opts.update({'subject_location': self.subject_location}) + thumb = self.file.get_thumbnail(opts) + _thumbnails[name] = thumb.url + except Exception as e: + # catch exception and manage it. We can re-raise it for debugging + # purposes and/or just logging it, provided user configured + # proper logging configuration + if filer_settings.FILER_ENABLE_LOGGING: + logger.error('Error while generating thumbnail: %s', e) + if filer_settings.FILER_DEBUG: + raise + return _thumbnails + + @property + def icons(self): + required_thumbnails = { + size: { + 'size': (int(size), int(size)), + 'crop': True, + 'upscale': True, + 'subject_location': self.subject_location, + } + for size in filer_settings.FILER_ADMIN_ICON_SIZES} + return self._generate_thumbnails(required_thumbnails) + + @property + def thumbnails(self): + return self._generate_thumbnails(BaseImage.DEFAULT_THUMBNAILS) + + @property + def easy_thumbnails_thumbnailer(self): + tn = FilerThumbnailer( + file=self.file, name=self.file.name, + source_storage=self.file.source_storage, + thumbnail_storage=self.file.thumbnail_storage, + thumbnail_basedir=self.file.thumbnail_basedir) + return tn diff --git a/filer/models/thumbnailoptionmodels.py b/filer/models/thumbnailoptionmodels.py new file mode 100644 index 000000000..883df7989 --- /dev/null +++ b/filer/models/thumbnailoptionmodels.py @@ -0,0 +1,61 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ + + +class ThumbnailOption(models.Model): + """ + This class defines the option use to create the thumbnail. + """ + name = models.CharField( + _("name"), + max_length=100, + ) + + width = models.IntegerField( + _("width"), + help_text=_("width in pixel."), + ) + + height = models.IntegerField( + _("height"), + help_text=_("height in pixel."), + ) + + crop = models.BooleanField( + _("crop"), + default=True, + ) + + upscale = models.BooleanField( + _("upscale"), + default=True, + ) + + class Meta: + app_label = 'filer' + ordering = ('width', 'height') + verbose_name = _("thumbnail option") + verbose_name_plural = _("thumbnail options") + + def __str__(self): + return f'{self.name} -- {self.width} x {self.height}' + + @property + def as_dict(self): + """ + This property returns a dictionary suitable for Thumbnailer.get_thumbnail() + + Sample code: + # thumboption_obj is a ThumbnailOption instance + # filerimage is a Image instance + option_dict = thumboption_obj.as_dict + thumbnailer = filerimage.easy_thumbnails_thumbnailer + thumb_image = thumbnailer.get_thumbnail(option_dict) + """ + return { + 'size': (self.width, self.height), + 'width': self.width, + 'height': self.height, + 'crop': self.crop, + 'upscale': self.upscale, + } diff --git a/filer/urls.py b/filer/urls.py new file mode 100644 index 000000000..f8fccf4a1 --- /dev/null +++ b/filer/urls.py @@ -0,0 +1,13 @@ +from django.urls import path + +from . import settings as filer_settings +from . import views + + +urlpatterns = [ + path( + filer_settings.FILER_CANONICAL_URL + '//', + views.canonical, + name='canonical' + ), +] diff --git a/filer/utils/compatibility.py b/filer/utils/compatibility.py new file mode 100644 index 000000000..0c7fd5290 --- /dev/null +++ b/filer/utils/compatibility.py @@ -0,0 +1,33 @@ +from django.utils.functional import keep_lazy +from django.utils.text import Truncator, format_lazy + + +def string_concat(*strings): + return format_lazy('{}' * len(strings), *strings) + + +def truncate_words(s, num, end_text='...'): + # truncate_words was removed in Django 1.5. + truncate = end_text and ' %s' % end_text or '' + return Truncator(s).words(num, truncate=truncate) + + +truncate_words = keep_lazy(truncate_words, str) + + +def get_delete_permission(opts): + from django.contrib.auth import get_permission_codename + return '{}.{}'.format(opts.app_label, get_permission_codename('delete', opts)) + + +try: + from PIL import ExifTags as PILExifTags + from PIL import Image as PILImage + from PIL import ImageDraw as PILImageDraw +except ImportError: + try: + import ExifTags as PILExifTags # noqa + import Image as PILImage # noqa + import ImageDraw as PILImageDraw # noqa + except ImportError: + raise ImportError("The Python Imaging Library was not found.") diff --git a/filer/validation.py b/filer/validation.py new file mode 100644 index 000000000..4a34d85d1 --- /dev/null +++ b/filer/validation.py @@ -0,0 +1,115 @@ +import typing + +from django.apps import apps +from django.contrib.auth import get_user_model +from django.core.exceptions import ValidationError +from django.utils.translation import gettext as _ + + +User = get_user_model() # Needed for typing + + +class FileValidationError(ValidationError): + pass + + +def deny(file_name: str, file: typing.IO, owner: User, mime_type: str) -> None: + file_type = file_name.rsplit(".")[-1] + if file_type == file_name: + raise FileValidationError( + _('File "{file_name}": Upload denied by site security policy').format(file_name=file_name) + ) + raise FileValidationError( + _('File "{file_name}": {file_type} upload denied by site security policy').format( + file_name=file_name, + file_type=file_type.upper() + ) + ) + + +def deny_html(file_name: str, file: typing.IO, owner: User, mime_type: str) -> None: + """Simple validator that denies all files. Separate for HTML since .html and .htm are both + common suffixes for text/html files.""" + raise FileValidationError( + _('File "{file_name}": HTML upload denied by site security policy').format(file_name=file_name) + ) + + +TRIGGER_XSS_THREAD = ( + # Part 1: Event attributes that take js code as values + # See https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Events + b"onbegin=", b"onend=", b"onrepeat=", + b"onabort=", b"onerror=", b"onresize=", b"onscroll=", b"onunload=", + b"oncopy=", b"oncut=", b"onpaste=", + b"oncancel=", b"oncanplay=", b"oncanplaythrough=", b"onchange=", b"onclick=", b"onclose=", b"oncuechange=", b"ondblclick=", + b"ondrag=", b"ondragend=", b"ondragenter=", b"ondragleave=", b"ondragover=", b"ondragstart=", b"ondrop=", + b"ondurationchange=", b"onemptied=", b"onended=", b"onerror=", b"onfocus=", b"oninput=", b"oninvalid=", + b"onkeydown=", b"onkeypress=", b"onkeyup=", b"onload=", b"onloadeddata=", b"onloadedmetadata=", b"onloadstart=", + b"onmousedown=", b"onmouseenter=", b"onmouseleave=", b"onmousemove=", b"onmouseout=", b"onmouseover=", b"onmouseup=", + b"onmousewheel=", b"onpause=", b"onplay=", b"onplaying=", b"onprogress=", b"onratechange=", b"onreset=", b"onresize=", + b"onscroll=", b"onseeked=", b"onseeking=", b"onselect=", b"onshow=", b"onstalled=", b"onsubmit=", b"onsuspend=", + b"ontimeupdate=", b"ontoggle==", b"onvolumechange==", b"onwaiting=", + b"onactivate=", b"onfocusin=", b"onfocusout=", +) + ( + # Part 2: + # Reject base64 obfuscated content + b";base64,", +) + ( + # Part 3: Obvious scripts + # Reject direct tags or javascript: uri + b" None: + """SVG files must not contain script tags or javascript hrefs. + This might be too strict but avoids parsing the xml""" + content = file.read().lower() + if any(map(lambda x: x in content, TRIGGER_XSS_THREAD)): + # If any element of TRIGGER_XSS_THREAD is found in file, raise FileValidationError + raise FileValidationError( + _('File "{file_name}": Rejected due to potential cross site scripting vulnerability') + .format(file_name=file_name) + ) + + +def sanitize_svg(file_name: str, file: typing.IO, owner: User, mime_type: str) -> None: + from easy_thumbnails.VIL.Image import Image + from reportlab.graphics import renderSVG + from svglib.svglib import svg2rlg + drawing = svg2rlg(file) + if not drawing: + raise FileValidationError( + _('File "{file_name}": SVG file format not recognized') + .format(file_name=file_name) + ) + image = Image(size=(drawing.width, drawing.height)) + renderSVG.draw(drawing, image.canvas) + xml = image.canvas.svg.toxml(encoding="UTF-8") # Removes non-graphic nodes -> sanitation + file.seek(0) # Rewind file + file.write(xml) # write to binary file with utf-8 encoding + + +def validate_upload(file_name: str, file: typing.IO, owner: User, mime_type: str) -> None: + """Actual validation: Call all validators for the given mime type. The app config reads + the validators from the settings and replaces dotted paths by callables.""" + + config = apps.get_app_config("filer") + + # First, check white list if provided + if config.MIME_TYPE_WHITELIST: + # FILER_MIME_TYPE_WHITELIST restricts the allowed mime types to, e.g., "image/*" or "text/plain" + for allowed_mime_type in config.MIME_TYPE_WHITELIST: + if mime_type == allowed_mime_type: + break + elif "/" in allowed_mime_type and [mime_type.split("/")[0], "*"] == allowed_mime_type.split("/", 1): + break + else: + # No match found <=> no break in for loop? Deny file + deny(file_name, file, owner, mime_type) + + # Second, check upload validators + if mime_type in config.FILE_VALIDATORS: + for validator in config.FILE_VALIDATORS[mime_type]: + validator(file_name, file, owner, mime_type) diff --git a/filer/views.py b/filer/views.py index 9bf2a04a6..8e23fe03b 100755 --- a/filer/views.py +++ b/filer/views.py @@ -1,4 +1,9 @@ -#-*- coding: utf-8 -*- +from django.http import Http404 +from django.shortcuts import get_object_or_404, redirect + + +# --- PBS-specific view helpers --- + def popup_status(request): return ('_popup' in request.GET or '_popup' in request.POST or 'pop' in request.GET or 'pop' in request.POST) @@ -21,12 +26,14 @@ def selectfolder_param(request, separator="&"): else: return "" + def current_site_param(request, separator="&"): current_site = get_param_from_request(request, 'current_site') if current_site: return '%scurrent_site=%s' % (separator, current_site) return "" + def file_type_param(request, separator="&"): param = get_param_from_request(request, 'file_type') if param: @@ -36,3 +43,16 @@ def file_type_param(request, separator="&"): def get_param_from_request(request, param, default=None): return request.POST.get(param) or request.GET.get(param) or default + + +# --- Upstream canonical view --- + +def canonical(request, uploaded_at, file_id): + """ + Redirect to the current url of a public file + """ + from .models import File + filer_file = get_object_or_404(File, pk=file_id, is_public=True) + if (not filer_file.file or int(uploaded_at) != filer_file.canonical_time): + raise Http404('No %s matches the given query.' % File._meta.object_name) + return redirect(filer_file.url) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..6f7e6ca58 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,108 @@ +[build-system] +requires = ["setuptools>=45", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "django-filer" +dynamic = ["version"] +authors = [ + {name = "Divio AG", email = "info@divio.ch"}, +] +maintainers = [ + {name = "Django CMS Association and contributors", email = "info@django-cms.org"}, + {name = "PBS"}, +] +description = "A file management application for django that makes handling of files and images a breeze." +readme = "README.rst" +license = {text = "BSD-3-Clause"} +requires-python = ">=3.10" +dependencies = [ + "django>=5.1,<5.2", + "django-mptt>=0.6,<1.0", + "django-polymorphic>=4.0.0", + "django-js-asset>=2.0.0", + "easy-thumbnails[svg]>=2,<3.0", + "Unidecode>=0.04,<1.2", + "filetype", + + # Pin svglib to a version below 1.6.0. + # The latest version (1.6.0) adds pycairo as a dependency, + # which requires system-level libraries and fails to install in the container. + # This can be removed once the issue is resolved. + # See: https://github.com/deeplook/svglib/issues/421 + "svglib~=1.5.1", +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Framework :: Django", + "Framework :: Django :: 5.1", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Software Development", + "Topic :: Software Development :: Libraries", +] + +[project.optional-dependencies] +s3 = [ + "boto3", + "django-storages", +] +heif = ["pillow-heif"] + +[project.urls] +Homepage = "https://github.com/pbs/django-filer" + +[tool.setuptools] +include-package-data = true +zip-safe = false + +[tool.setuptools.packages.find] +where = ["."] +include = ["filer*", "LICENSE"] + +[tool.setuptools.package-data] +"*" = [ + "templates/**/*.html", + "static/**/*", + "locale/**/*", + "*.po", + "*.mo", +] + +[tool.setuptools.dynamic] +version = {attr = "filer.__version__"} + +[tool.flake8] +max-line-length = 119 +exclude = [ + "*.egg-info", + ".eggs", + ".env", + ".git", + ".settings", + ".tox", + ".venv", + "build", + "data", + "dist", + "docs", + "*migrations*", + "tmp", + "node_modules", +] +ignore = ["E251", "E128", "E501", "W503"] + +[tool.ruff] +src = ["filer"] +exclude = ["*/migrations/*"] +line-length = 119 From d901d184a23a99c866029129b0673dc5cec408d6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:44:10 +0000 Subject: [PATCH 02/51] Phase 3+5: Merge core models (filemodels, foldermodels, mixins, imagemodels, clipboardmodels, virtualitems) and settings Agent-Logs-Url: https://github.com/pbs/django-filer/sessions/cad30a66-0889-48ba-bb3e-2ab3bf2939b2 Co-authored-by: andreilupuleasa <124138251+andreilupuleasa@users.noreply.github.com> --- filer/models/__init__.py | 20 +- filer/models/clipboardmodels.py | 50 ++- filer/models/filemodels.py | 495 +++++++++++++++++------------- filer/models/foldermodels.py | 523 ++++++++++++++++++++++++-------- filer/models/imagemodels.py | 221 +++----------- filer/models/mixins.py | 17 +- filer/models/virtualitems.py | 23 +- filer/settings.py | 233 +++++++++----- 8 files changed, 948 insertions(+), 634 deletions(-) diff --git a/filer/models/__init__.py b/filer/models/__init__.py index 1f406fa1d..05e3867af 100644 --- a/filer/models/__init__.py +++ b/filer/models/__init__.py @@ -1,8 +1,12 @@ -#-*- coding: utf-8 -*- -from .mixins import * -from .filemodels import * -from .clipboardmodels import * -from .imagemodels import * -from .foldermodels import * -from .virtualitems import * -from .archivemodels import * +from .clipboardmodels import * # noqa +from .filemodels import * # noqa +from .foldermodels import * # noqa +from .imagemodels import * # noqa +from .thumbnailoptionmodels import * # noqa +from .virtualitems import * # noqa + +# PBS-specific: keep archive models for backward compatibility +try: + from .archivemodels import * # noqa +except ImportError: + pass diff --git a/filer/models/clipboardmodels.py b/filer/models/clipboardmodels.py index bc846f072..cde011818 100644 --- a/filer/models/clipboardmodels.py +++ b/filer/models/clipboardmodels.py @@ -1,22 +1,36 @@ -#-*- coding: utf-8 -*- +from django.conf import settings from django.contrib.auth import models as auth_models from django.db import models from django.utils.translation import gettext_lazy as _ -from filer.models import filemodels + +from . import filemodels class Clipboard(models.Model): user = models.OneToOneField( - auth_models.User, verbose_name=_('user'), related_name="filer_clipboard", on_delete=models.CASCADE + getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), + verbose_name=_('user'), + related_name="filer_clipboard", + on_delete=models.CASCADE, ) + files = models.ManyToManyField( - 'File', verbose_name=_('files'), related_name="in_clipboards", - through='ClipboardItem') + 'File', + verbose_name=_('files'), + related_name="in_clipboards", + through='ClipboardItem', + ) + + # PBS-specific: folder_name used for clipboard upload paths folder_name = "_clipboard" + class Meta: + app_label = 'filer' + verbose_name = _("clipboard") + verbose_name_plural = _("clipboards") + def append_file(self, file_obj): try: - # We have to check if file is already in the clipboard as otherwise polymorphic complains self.files.get(pk=file_obj.pk) return False except filemodels.File.DoesNotExist: @@ -30,19 +44,23 @@ def empty(self): empty.alters_data = True def __str__(self): - return "Clipboard %s of %s" % (self.id, self.user) - - class Meta: - app_label = 'filer' - verbose_name = _('clipboard') - verbose_name_plural = _('clipboards') + return f"Clipboard {self.id} of {self.user}" class ClipboardItem(models.Model): - file = models.ForeignKey('File', verbose_name=_('file'), on_delete=models.CASCADE) - clipboard = models.ForeignKey(Clipboard, verbose_name=_('clipboard'), on_delete=models.CASCADE) + file = models.ForeignKey( + 'File', + verbose_name=_("file"), + on_delete=models.CASCADE, + ) + + clipboard = models.ForeignKey( + Clipboard, + verbose_name=_("clipboard"), + on_delete=models.CASCADE, + ) class Meta: app_label = 'filer' - verbose_name = _('clipboard item') - verbose_name_plural = _('clipboard items') + verbose_name = _("clipboard item") + verbose_name_plural = _("clipboard items") diff --git a/filer/models/filemodels.py b/filer/models/filemodels.py index b26156eb4..4f00fe388 100644 --- a/filer/models/filemodels.py +++ b/filer/models/filemodels.py @@ -1,40 +1,45 @@ -#-*- coding: utf-8 -*- import hashlib +import mimetypes import os -import filer import logging +from datetime import datetime, timezone +from django.conf import settings from django.contrib.auth import models as auth_models -from django.urls import reverse -from django.core.files.base import ContentFile from django.core.exceptions import ValidationError -from django.db import (models, IntegrityError, transaction) -from django.db.models import DEFERRED +from django.core.files.base import ContentFile +from django.db import models, IntegrityError, transaction +from django.db.models import DEFERRED, Count +from django.urls import NoReverseMatch, reverse +from django.utils.functional import cached_property +from django.utils import timezone as django_timezone from django.utils.translation import gettext_lazy as _ -from filer.fields.multistorage_file import MultiStorageFileField -from filer.models import mixins -from filer.utils.cms_roles import * -from filer.utils.files import matching_file_subtypes -from filer import settings as filer_settings -from django.db.models import Count -from django.utils import timezone -from polymorphic.models import PolymorphicModel from polymorphic.managers import PolymorphicManager +from polymorphic.models import PolymorphicModel from polymorphic.query import PolymorphicQuerySet -import hashlib -import os + +from .. import settings as filer_settings +from ..fields.multistorage_file import MultiStorageFileField +from ..utils.cms_roles import ( + get_sites_without_restriction_perm, + has_admin_role, + has_role_on_site, + can_restrict_on_site, +) +from ..utils.files import matching_file_subtypes +from . import mixins + import filer -import logging logger = logging.getLogger(__name__) def silence_error_if_missing_file(exception): """ - Ugly way of checking in an exception describes a 'missing file'. + Ugly way of checking if an exception describes a 'missing file'. """ - missing_files_errs = ('no such file', 'does not exist', ) + missing_files_errs = ('no such file', 'does not exist',) def find_msg_in_error(msg): return msg in str(exception).lower() @@ -44,7 +49,12 @@ def find_msg_in_error(msg): class FileQuerySet(PolymorphicQuerySet): + def only(self, *fields): + fields = set(fields) + fields.update(["_file_size", "sha1", "is_public"]) + return super().only(*fields) + # PBS-specific querysets def readonly(self, user): Folder = filer.models.foldermodels.Folder return self.filter(folder__folder_type=Folder.CORE_FOLDER) @@ -72,9 +82,7 @@ def unrestricted(self, user): class FileManager(PolymorphicManager): queryset_class = FileQuerySet - # Proxy all unknown method calls to the queryset, so that its members are - # directly accessible as PolymorphicModel.objects.* - # Exclude any special functions (__) from this automatic proxying. + # Proxy all unknown method calls to the queryset def __getattr__(self, name): if name.startswith('__'): return super(PolymorphicManager, self).__getattr__(self, name) @@ -85,69 +93,145 @@ def find_all_duplicates(self): for file_data in self.get_queryset().values('sha1').annotate( count=Count('id')).filter(count__gt=1)} + def find_duplicates(self, file_obj): + return [i for i in self.exclude(pk=file_obj.pk).filter(sha1=file_obj.sha1)] -class AliveFileManager(FileManager): - # this is required in order to make sure that other models that are - # related to filer files will get an DoesNotExist exception if the file - # is in trash +# PBS-specific managers for trash system +class AliveFileManager(FileManager): def get_queryset(self): - return super(AliveFileManager, self).get_queryset().filter( - deleted_at__isnull=True) + return super().get_queryset().filter(deleted_at__isnull=True) class TrashFileManager(FileManager): - def get_queryset(self): - return super(TrashFileManager, self).get_queryset().filter( - deleted_at__isnull=False) + return super().get_queryset().filter(deleted_at__isnull=False) -@mixins.trashable -class File(PolymorphicModel, - mixins.IconsMixin): +def is_public_default(): + # not using this setting directly as `is_public` default value + # so that Django doesn't generate new migrations upon setting change + return filer_settings.FILER_IS_PUBLIC_DEFAULT - file_type = 'File' - _icon = "file" - folder = models.ForeignKey('filer.Folder', verbose_name=_('folder'), related_name='all_files', - null=True, blank=True, on_delete=models.deletion.CASCADE) - file = MultiStorageFileField(_('file'), null=True, blank=True, db_index=True, max_length=1024) - _file_size = models.IntegerField(_('file size'), null=True, blank=True) - sha1 = models.CharField(_('sha1'), max_length=40, blank=True, default='') +def mimetype_validator(value): + if not mimetypes.guess_extension(value): + msg = "'{mimetype}' is not a recognized MIME-Type." + raise ValidationError(msg.format(mimetype=value)) - has_all_mandatory_data = models.BooleanField(_('has all mandatory data'), default=False, editable=False) - original_filename = models.CharField(_('original filename'), max_length=255, blank=True, null=True) +@mixins.trashable +class File(PolymorphicModel, mixins.IconsMixin): + file_type = 'File' + _icon = 'file' + _file_data_changed_hint = None + + folder = models.ForeignKey( + 'filer.Folder', + verbose_name=_("folder"), + related_name='all_files', + null=True, + blank=True, + on_delete=models.CASCADE, + ) + + file = MultiStorageFileField( + _("file"), + null=True, + blank=True, + db_index=True, + max_length=1024, + ) + + _file_size = models.BigIntegerField( + _("file size"), + null=True, + blank=True, + ) + + sha1 = models.CharField( + _("sha1"), + max_length=40, + blank=True, + default='', + ) + + has_all_mandatory_data = models.BooleanField( + _("has all mandatory data"), + default=False, + editable=False, + ) + + original_filename = models.CharField( + _("original filename"), + max_length=255, + blank=True, + null=True, + ) + name = models.CharField( - max_length=255, null=True, blank=True, verbose_name=_('file name'), + max_length=255, + null=True, + blank=True, + verbose_name=_("file name"), help_text=_('Change the FILE name for an image in the cloud storage' ' system; be sure to include the extension ' '(.jpg or .png, for example) to ensure asset remains ' - 'valid.')) + 'valid.'), + ) + title = models.CharField( - max_length=255, null=True, blank=True, verbose_name=_('name'), + max_length=255, + null=True, + blank=True, + verbose_name=_("name"), help_text=_('Used in the Photo Gallery plugin as a title or name for' - ' an image; not displayed via the image plugin.')) + ' an image; not displayed via the image plugin.'), + ) + description = models.TextField( - null=True, blank=True, verbose_name=_('description'), + null=True, + blank=True, + verbose_name=_("description"), help_text=_('Used in the Photo Gallery plugin as a description;' - ' not displayed via the image plugin.')) - - owner = models.ForeignKey(auth_models.User, - related_name='owned_%(class)ss', on_delete=models.SET_NULL, - null=True, blank=True, verbose_name=_('owner')) - - uploaded_at = models.DateTimeField(_('uploaded at'), auto_now_add=True) - modified_at = models.DateTimeField(_('modified at'), auto_now=True) + ' not displayed via the image plugin.'), + ) + + owner = models.ForeignKey( + getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), + related_name='owned_%(class)ss', + on_delete=models.SET_NULL, + null=True, + blank=True, + verbose_name=_("owner"), + ) + + uploaded_at = models.DateTimeField( + _("uploaded at"), + auto_now_add=True, + ) + + modified_at = models.DateTimeField( + _("modified at"), + auto_now=True, + ) is_public = models.BooleanField( default=filer_settings.FILER_IS_PUBLIC_DEFAULT, - verbose_name=_('Permissions disabled'), - help_text=_('Disable any permission checking for this ' +\ - 'file. File will be publicly accessible ' +\ - 'to anyone.')) - + verbose_name=_("Permissions disabled"), + help_text=_("Disable any permission checking for this " + "file. File will be publicly accessible " + "to anyone."), + ) + + mime_type = models.CharField( + max_length=255, + help_text="MIME type of uploaded content", + validators=[mimetype_validator], + default='application/octet-stream', + ) + + # PBS-specific: restricted field restricted = models.BooleanField( _("Restrict Editors and Writers from being able to edit " "or delete this asset"), default=False, @@ -155,23 +239,27 @@ class File(PolymorphicModel, 'Editors and Writers will still be able to ' 'view the asset, add it to a plugin or smart ' 'snippet but will not be able to delete or ' - 'modify the current version of the asset.')) + 'modify the current version of the asset.'), + ) + # PBS-specific: trash managers objects = AliveFileManager() trash = TrashFileManager() all_objects = FileManager() + class Meta: + app_label = 'filer' + verbose_name = _("file") + verbose_name_plural = _("files") + @classmethod def matches_file_type(cls, iname, ifile, request): return True # I match all files... def __init__(self, *args, **kwargs): - super(File, self).__init__(*args, **kwargs) - # Use __dict__ to avoid triggering deferred field loading + super().__init__(*args, **kwargs) + # PBS: Use __dict__ to avoid triggering deferred field loading # which can cause recursion in Django 5.1+ (from_db calls __init__). - # Django stores the DEFERRED sentinel in __dict__ for deferred fields - # rather than omitting the key, so we must normalize it to a safe - # default to avoid false positives in change-detection comparisons. raw_is_public = self.__dict__.get('is_public', DEFERRED) if raw_is_public is DEFERRED: if self.pk is not None: @@ -199,6 +287,40 @@ def __init__(self, *args, **kwargs): raw_folder_id = self.__dict__.get('folder_id', DEFERRED) self._old_folder_id = None if raw_folder_id is DEFERRED else raw_folder_id + @cached_property + def mime_maintype(self): + return self.mime_type.split('/')[0] + + @cached_property + def mime_subtype(self): + return self.mime_type.split('/')[1] + + def file_data_changed(self, post_init=False): + """ + This is called whenever self.file changes (including initial set in __init__). + Returns True if data related attributes were updated, False otherwise. + """ + if self._file_data_changed_hint is not None: + data_changed_hint = self._file_data_changed_hint + self._file_data_changed_hint = None + if not data_changed_hint: + return False + if post_init and self._file_size and self.sha1: + return False + try: + self._file_size = self.file.size + except: # noqa + self._file_size = None + try: + self.generate_sha1() + except Exception: + self.sha1 = '' + try: + self.mime_type = mimetypes.guess_type(self.file.name)[0] or 'application/octet-stream' + except Exception: + pass + return True + def clean(self): if self.name: self.name = self.name.strip() @@ -213,7 +335,7 @@ def clean(self): old_file_type = self.get_real_instance_class() new_file_type = matching_file_subtypes(self.name, None, None)[0] - if not old_file_type is new_file_type: + if old_file_type is not new_file_type: supported_extensions = getattr( old_file_type, '_filename_extensions', []) if supported_extensions: @@ -223,15 +345,15 @@ def clean(self): ', '.join(supported_extensions)) else: err_msg = "Extension %s is not allowed for this file " \ - "type." % (extension, ) + "type." % (extension,) raise ValidationError(err_msg) if self.folder: entries = self.folder.entries_with_names([self.actual_name]) if entries and any(entry.pk != self.pk for entry in entries): raise ValidationError( - _('Current folder already contains a file named %s') % \ - self.actual_name) + _('Current folder already contains a file named %s') % + self.actual_name) def _move_file(self): """ @@ -249,29 +371,21 @@ def _move_file(self): dst_storage = self.file.storages['private'] # delete the thumbnail - # We are toggling the is_public to make sure that easy_thumbnails can - # delete the thumbnails self.is_public = not self.is_public self.file.delete_thumbnails() self.is_public = not self.is_public - # This is needed because most of the remote File Storage backend do not - # open the file. src_file = src_storage.open(src_file_name) - src_file.open() - self.file = dst_storage.save(dst_file_name, - ContentFile(src_file.read(), name=os.path.basename(dst_file_name))) - src_file.close() + with src_file.open() as f: + content_file = ContentFile(f.read()) + self._file_data_changed_hint = False + self.file = dst_storage.save(dst_file_name, content_file) src_storage.delete(src_file_name) def _copy_file(self, destination, overwrite=False): """ Copies the file to a destination files and returns it. """ - if overwrite: - # If the destination file already exists default storage backend - # does not overwrite it but generates another filename. - # TODO: Find a way to override this behavior. raise NotImplementedError src_file_name = self._current_file_location @@ -280,14 +394,10 @@ def _copy_file(self, destination, overwrite=False): if hasattr(storage, 'copy'): storage.copy(src_file_name, destination) else: - # This is needed because most of the remote File Storage backend do not - # open the file. src_file = storage.open(src_file_name) src_file.open() file_content = src_file.read() src_file.close() - # Delete existing file at destination to prevent Django's storage - # from deduplicating the filename (appending random suffix). if storage.exists(destination): storage.delete(destination) destination = storage.save(destination, @@ -300,11 +410,15 @@ def _copy_file(self, destination, overwrite=False): def generate_sha1(self): sha = hashlib.sha1() self.file.seek(0) - sha.update(self.file.read()) + while True: + buf = self.file.read(104857600) + if not buf: + break + sha.update(buf) self.sha1 = sha.hexdigest() - # to make sure later operations can read the whole file self.file.seek(0) + # PBS-specific: set restricted from folder def set_restricted_from_folder(self): if self.folder and self.folder.restricted: self.restricted = self.folder.restricted @@ -314,14 +428,10 @@ def save(self, *args, **kwargs): # check if this is a subclass of "File" or not and set # _file_type_plugin_name if self.__class__ == File: - # what should we do now? - # maybe this has a subclass, but is being saved as a File instance - # anyway. do we need to go check all possible subclasses? pass elif issubclass(self.__class__, File): self._file_type_plugin_name = self.__class__.__name__ # cache the file size - # TODO: only do this if needed (depending on the storage backend the whole file will be downloaded) try: self._file_size = self.file.size except: @@ -331,19 +441,18 @@ def save(self, *args, **kwargs): self._old_is_public = self.is_public # generate SHA1 hash - # TODO: only do this if needed (depending on the storage backend the whole file will be downloaded) try: self.generate_sha1() - except (IOError, TypeError, ValueError) as e: + except (IOError, TypeError, ValueError): pass replaced_file = self._old_sha1 != self.sha1 if filer_settings.FOLDER_AFFECTS_URL and (self._is_path_changed() or replaced_file): if replaced_file and not self._is_name_changed(): - self.name = None # if new file submitted for same id we overwrite what was previously in name + self.name = None self._force_commit = True self.update_location_on_storage(*args, **kwargs) else: - super(File, self).save(*args, **kwargs) + super().save(*args, **kwargs) save.alters_data = True @@ -356,18 +465,13 @@ def _is_name_changed(self): def _is_path_changed(self): """ Used to detect if file location on storage should be updated or not. - Since this is used only to check if location should be updated, - the values will be reset after the file is copied in the - destination location on storage. """ - # check if file name changed if self._old_name in ('', None): name_changed = self.name not in ('', None) else: name_changed = self._old_name != self.name folder_changed = self._old_folder_id != getattr(self.folder, 'id', None) - return name_changed or folder_changed def _delete_thumbnails(self): @@ -378,13 +482,8 @@ def _delete_thumbnails(self): def update_location_on_storage(self, *args, **kwargs): old_location = self._current_file_location - # thumbnails might get physically deleted evenif the transaction fails - # though luck... they get re-created anyway... self._delete_thumbnails() - # check if file content has changed if self._old_sha1 != self.sha1: - # actual file content needs to be replaced on storage prior to - # filer file instance save self.file.storage.save(self._current_file_location, self.file) self._old_sha1 = self.sha1 new_location = self.file.field.upload_to(self, self.upload_to_name) @@ -399,49 +498,24 @@ def copy_and_save(): if self._force_commit: try: with transaction.atomic(savepoint=False): - # The manual transaction management here breaks the transaction management - # from django.contrib.admin.options.ModelAdmin.change_view - # This isn't a big problem because the only CRUD operation done afterwards - # is an insertion in django_admin_log. If this method rollbacks the transaction - # then we will have an entry in the admin log describing an action - # that didn't actually finish succesfull. - # This 'hack' can be removed once django adds support for on_commit and - # on_rollback hooks (see: https://code.djangoproject.com/ticket/14051) copy_and_save() except: - # delete the file from new_location if the db update failed if old_location != new_location: storage.delete(new_location) raise else: - # only delete the file on the old_location if all went OK if old_location != new_location: storage.delete(old_location) else: copy_and_save() return new_location + # PBS-specific: soft delete / trash system def soft_delete(self, *args, **kwargs): """ - This method works as a default delete action of a filer file. - It will not actually delete the item from the database, instead it - will make it inaccessible for the default manager. - It just `fakes` a deletion by doing the following: - 1. sets a deletion time that will be used to distinguish - `alive` and `trashed` filer files. - 2. makes a copy of the actual file on storage and saves it to - a trash location on storage. Also tries to ignore if the - actual file is missing from storage. - 3. updates only the filer file path in the database (no model - save is done since it tries to bypass the logic defined - in the save method) - 4. deletes the file(and all it's thumbnails) from the - original location if no other filer files are referencing - it. - All the metadata of this filer file will remain intact. + Soft-delete: moves file to trash location on storage. """ - deletion_time = kwargs.pop('deletion_time', timezone.now()) - # move file to a `trash` location + deletion_time = kwargs.pop('deletion_time', django_timezone.now()) to_trash = filer.utils.generate_filename.get_trash_path(self) old_location, new_location = self.file.name, None try: @@ -452,41 +526,32 @@ def soft_delete(self, *args, **kwargs): logger.error('Error while trying to copy file: %s to %s.' % ( old_location, to_trash), e) else: - # if there are no more references to the file on storage delete it - # and all its thumbnails if not File.objects.exclude(pk=self.pk).filter( file=old_location, is_public=self.is_public).exists(): self.file.delete(False) finally: - # even if `copy_file` fails, user is trying to delete this file so - # in worse case scenario this file is not restorable new_location = new_location or to_trash File.objects.filter(pk=self.pk).update( deleted_at=deletion_time, file=new_location) - self.deleted_at = deletion_time self.file = new_location def hard_delete(self, *args, **kwargs): """ - This method deletes the filer file from the database and from storage. + Hard-delete: removes from DB and storage. """ - # delete the model before deleting the file from storage - super(File, self).delete(*args, **kwargs) - # delete the actual file from storage and all its thumbnails - # if there are no other filer files referencing it. + super().delete(*args, **kwargs) if not File.objects.filter(file=self.file.name, is_public=self.is_public).exists(): self.file.delete(False) def delete(self, *args, **kwargs): - super(File, self).delete_restorable(*args, **kwargs) + super().delete_restorable(*args, **kwargs) delete.alters_data = True def _set_valid_name_for_restore(self): """ - Generates the first available name so this file - can be restored in the folder. + Generates the first available name for restore. """ basename, extension = os.path.splitext(self.clean_actual_name) if self.folder: @@ -505,7 +570,6 @@ def _set_valid_name_for_restore(self): i = 1 while self.clean_actual_name in existing_file_names: filename = "%s_%s%s" % (basename, i, extension) - # set actual name if self.name in ('', None): self.original_filename = filename else: @@ -514,9 +578,7 @@ def _set_valid_name_for_restore(self): def restore(self): """ - Restores the file to its folder location. - If there's already an existing file with the same name, it will - generate a new filename. + Restores the file to its folder location. """ if self.folder_id: Folder = filer.models.foldermodels.Folder @@ -526,7 +588,6 @@ def restore(self): self.folder = Folder.trash.get(id=self.folder_id) self.folder.restore_path() - # at this point this file's folder should be `alive` self.folder = filer.models.Folder.objects.get(id=self.folder_id) old_location, new_location = self.file.name, None @@ -548,7 +609,6 @@ def restore(self): name=self.name, original_filename=self.original_filename) self.deleted_at = None self.file.name = new_location - # restore to user clipboard if self.owner_id and not self.folder_id: try: clipboard = filer.models.tools.get_user_clipboard(self.owner) @@ -556,21 +616,28 @@ def restore(self): except auth_models.User.DoesNotExist: pass + def __str__(self): + try: + name = self.pretty_logical_path + except: + name = self.actual_name + return name + @property def label(self): if self.name in ['', None]: text = self.original_filename or 'unnamed file' else: text = self.name - text = "%s" % (text,) - return text + return f"{text}" def _cmp(self, a, b): - return (a > b) - (a < b) + return (a > b) - (a < b) def __lt__(self, other): return self._cmp(self.label.lower(), other.label.lower()) < 0 + # PBS-specific: hash-based actual_name @property def actual_name(self): if not self.sha1: @@ -604,11 +671,7 @@ def upload_to_name(self): @property def clean_actual_name(self): - """The name displayed to the user. - Uses self.name if set, otherwise it falls back on self.original_filename. - - This property is used for enforcing unique filenames within the same folder. - """ + """The name displayed to the user.""" if self.name in ('', None): name = "%s" % (self.original_filename,) else: @@ -625,24 +688,50 @@ def pretty_logical_path(self): full_path = '{}{}{}'.format(directory_path, os.sep, self.actual_name) return full_path - def __str__(self): - try: - name = self.pretty_logical_path - except: - name = self.actual_name - return name + # Upstream: permission methods + def has_edit_permission(self, request): + return request.user.has_perm("filer.change_file") and self.has_generic_permission(request, 'edit') - def get_admin_url_path(self): + def has_read_permission(self, request): + return self.has_generic_permission(request, 'read') + + def has_add_children_permission(self, request): + return request.user.has_perm("filer.add_file") and self.has_generic_permission(request, 'add_children') + + def has_generic_permission(self, request, permission_type): + user = request.user + if not user.is_authenticated: + return False + elif user.is_superuser: + return True + elif user == self.owner: + return True + elif self.folder: + return self.folder.has_generic_permission(request, permission_type) + else: + return False + + def get_admin_url(self, action): return reverse( - 'admin:%s_%s_change' % (self._meta.app_label, - self._meta.model_name,), + 'admin:{}_{}_{}'.format( + self._meta.app_label, + self._meta.model_name, + action + ), args=(self.pk,) ) + def get_admin_url_path(self): + return self.get_admin_url("change") + + def get_admin_change_url(self): + return self.get_admin_url("change") + + def get_admin_expand_view_url(self): + return self.get_admin_url("expand") + def get_admin_delete_url(self): - return reverse( - 'admin:{0}_{1}_delete'.format(self._meta.app_label, self._meta.model_name,), - args=(self.pk,)) + return self.get_admin_url("delete") @property def url(self): @@ -651,15 +740,35 @@ def url(self): """ try: r = self.file.url - except: + except: # noqa r = '' return r + @property + def canonical_time(self): + if settings.USE_TZ: + return int((self.uploaded_at - datetime(1970, 1, 1, 1, tzinfo=timezone.utc)).total_seconds()) + else: + return int((self.uploaded_at - datetime(1970, 1, 1, 1)).total_seconds()) + + @property + def canonical_url(self): + url = '' + if self.file and self.is_public: + try: + url = reverse('canonical', kwargs={ + 'uploaded_at': self.canonical_time, + 'file_id': self.id + }) + except NoReverseMatch: + pass + return url + @property def path(self): try: return self.file.path - except: + except: # noqa return "" @property @@ -675,10 +784,6 @@ def extension(self): @property def logical_folder(self): - """ - if this file is not in a specific folder return the Special "unfiled" - Folder object - """ if not self.folder: from filer.models.virtualitems import UnfiledImages return UnfiledImages() @@ -687,10 +792,6 @@ def logical_folder(self): @property def logical_path(self): - """ - Gets logical path of the folder in the tree structure. - Used to generate breadcrumbs - """ folder_path = [] if self.folder: folder_path.extend(self.folder.get_ancestors()) @@ -701,6 +802,7 @@ def logical_path(self): def duplicates(self): return list(File.objects.find_duplicates(self)) + # PBS-specific: site/core permission methods def is_core(self): if self.folder: return self.folder.is_core() @@ -718,21 +820,14 @@ def is_restricted_for_user(self, user): not can_restrict_on_site(user, self.folder.site))) def can_change_restricted(self, user): - """ - Checks if restriction operation is available for this file. - """ perm = 'filer.can_restrict_operations' if not user.has_perm(perm, self) and not user.has_perm(perm): return False if not self.folder: - # cannot restrict unfiled files return False - if not can_restrict_on_site(user, self.folder.site): return False - if self.folder.restricted == self.restricted == True: - # only parent can be set to True return False if self.folder.restricted == self.restricted == False: return True @@ -744,44 +839,26 @@ def can_change_restricted(self, user): def has_change_permission(self, user): if not self.folder: - # clipboard and unfiled files return True - if self.is_readonly_for_user(user): - # nobody can change core folder - # leaving these on True based on the fact that core folders are - # displayed as readonly fields return True - - # only admins can change site folders with no site owner if not self.folder.site and has_admin_role(user): return True - if self.folder.site: can_change_file = (user.has_perm('filer.change_file', self) or user.has_perm('filer.change_file')) return can_change_file and has_role_on_site(user, self.folder.site) - return False def has_delete_permission(self, user): if not self.folder: - # clipboard and unfiled files return True - # nobody can delete core files if self.is_readonly_for_user(user): return False - # only admins can delete site files with no site owner if not self.folder.site and has_admin_role(user): return True - if self.folder.site: can_delete_file = (user.has_perm('filer.delete_file', self) or user.has_perm('filer.delete_file')) return can_delete_file and has_role_on_site(user, self.folder.site) return False - - class Meta: - app_label = 'filer' - verbose_name = _('file') - verbose_name_plural = _('files') diff --git a/filer/models/foldermodels.py b/filer/models/foldermodels.py index 641ef07c2..e7fde2718 100644 --- a/filer/models/foldermodels.py +++ b/filer/models/foldermodels.py @@ -1,23 +1,103 @@ -#-*- coding: utf-8 -*- -from django.contrib.sites.models import Site +import itertools +import logging + +from django.conf import settings from django.contrib.auth import models as auth_models -from django.urls import reverse +from django.contrib.sites.models import Site from django.core.exceptions import ValidationError -from django.db import (models, IntegrityError, transaction) -from django.db.models import (query, Q, signals, DEFERRED) +from django.db import models, IntegrityError, transaction +from django.db.models import Q, query, signals, DEFERRED from django.dispatch import receiver +from django.urls import reverse +from django.utils.functional import cached_property +from django.utils.html import format_html, format_html_join +from django.utils.translation import gettext from django.utils.translation import gettext_lazy as _ -from urllib.parse import quote -from filer.utils.cms_roles import * -from filer.models import mixins -from filer import settings as filer_settings from django.utils import timezone +from urllib.parse import quote + import mptt -import itertools + +from .. import settings as filer_settings +from ..cache import get_folder_permission_cache, update_folder_permission_cache +from ..utils.cms_roles import ( + get_sites_for_user, + get_sites_without_restriction_perm, + has_admin_role, + has_admin_role_on_site, + has_role_on_site, + can_restrict_on_site, +) +from . import mixins + import filer -class FoldersChainableQuerySetMixin(object): +logger = logging.getLogger(__name__) + + +class FolderPermissionManager(models.Manager): + """ + These methods are called by introspection from "has_generic_permission" on + the folder model. + """ + def get_read_id_list(self, user): + return self.__get_id_list(user, "can_read") + + def get_edit_id_list(self, user): + return self.__get_id_list(user, "can_edit") + + def get_add_children_id_list(self, user): + return self.__get_id_list(user, "can_add_children") + + def __get_id_list(self, user, attr): + if user.is_superuser or not filer_settings.FILER_ENABLE_PERMISSIONS: + return 'All' + cached_id_list = get_folder_permission_cache(user, attr) + if cached_id_list: + return cached_id_list + + allow_list = set() + deny_list = set() + group_ids = user.groups.all().values_list('id', flat=True) + q = Q(user=user) | Q(group__in=group_ids) | Q(everybody=True) + perms = self.filter(q) + + for perm in perms: + p = getattr(perm, attr) + + if p is None: + continue + + if not perm.folder: + assert perm.type == FolderPermission.ALL + + if p == FolderPermission.ALLOW: + allow_list.update(Folder.objects.all().values_list('id', flat=True)) + else: + deny_list.update(Folder.objects.all().values_list('id', flat=True)) + continue + + folder_id = perm.folder.id + + if p == FolderPermission.ALLOW: + allow_list.add(folder_id) + else: + deny_list.add(folder_id) + + if perm.type in [FolderPermission.ALL, FolderPermission.CHILDREN]: + if p == FolderPermission.ALLOW: + allow_list.update(perm.folder.get_descendants_ids()) + else: + deny_list.update(perm.folder.get_descendants_ids()) + + id_list = allow_list - deny_list + update_folder_permission_cache(user, attr, id_list) + return id_list + + +# PBS-specific: chainable queryset mixin with trash/restriction support +class FoldersChainableQuerySetMixin: def with_bad_metadata(self): return self.filter(has_all_mandatory_data=False) @@ -54,10 +134,8 @@ def restricted_descendants(self, user): descendant_filter |= q if not descendant_filter: return self.none() - # since this method is called to check permissions on descendants it - # should only query the alive assets restr_q = Q(Q(restricted=True) | Q( - Q(all_files__restricted=True) & \ + Q(all_files__restricted=True) & Q(all_files__deleted_at__isnull=True))) restr_q &= Q(site__in=sites) return self.model.objects.filter( @@ -76,8 +154,7 @@ def alive(self): return self.filter(deleted_at__isnull=True) -class FolderQueryset(query.QuerySet, - FoldersChainableQuerySetMixin): +class FolderQueryset(query.QuerySet, FoldersChainableQuerySetMixin): pass @@ -93,16 +170,11 @@ def __getattr__(self, name): class AliveFolderManager(FolderManager): - # this is required in order to make sure that other models that are - # related to filer folders will get an DoesNotExist exception if the - # folder is in trash - def get_queryset(self): return FolderQueryset(self.model, using=self._db).alive() class TrashFolderManager(FolderManager): - def get_queryset(self): return FolderQueryset(self.model, using=self._db).in_trash() @@ -118,12 +190,12 @@ class Folder(models.Model, mixins.IconsMixin): in this way. Make sure the linked models obey the AbstractFile interface (Duck Type). """ - file_type = 'Folder' is_root = False can_have_subfolders = True _icon = 'plainfolder' + # PBS-specific: folder types SITE_FOLDER = 0 CORE_FOLDER = 1 @@ -132,58 +204,113 @@ class Folder(models.Model, mixins.IconsMixin): CORE_FOLDER: 'Core Folder', } - parent = models.ForeignKey('self', verbose_name=('parent'), null=True, - blank=True, related_name='children', on_delete=models.CASCADE) - name = models.CharField(_('name'), max_length=255) - - owner = models.ForeignKey(auth_models.User, verbose_name=('owner'), - related_name='filer_owned_folders', - on_delete=models.SET_NULL, - null=True, blank=True) - - uploaded_at = models.DateTimeField(_('uploaded at'), auto_now_add=True) - - created_at = models.DateTimeField(_('created at'), auto_now_add=True) - modified_at = models.DateTimeField(_('modified at'), auto_now=True) - - folder_type = models.IntegerField(choices=list(FOLDER_TYPES.items()), - default=SITE_FOLDER) - - site = models.ForeignKey(Site, null=True, blank=True, - on_delete=models.SET_NULL, - help_text=_("Select the site which will use " - "this folder.")) + parent = models.ForeignKey( + 'self', + verbose_name=_('parent'), + null=True, + blank=True, + related_name='children', + on_delete=models.CASCADE, + ) + + name = models.CharField( + _('name'), + max_length=255, + ) + + owner = models.ForeignKey( + getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), + verbose_name=_('owner'), + related_name='filer_owned_folders', + on_delete=models.SET_NULL, + null=True, + blank=True, + ) + + uploaded_at = models.DateTimeField( + _('uploaded at'), + auto_now_add=True, + ) + + created_at = models.DateTimeField( + _('created at'), + auto_now_add=True, + ) + + modified_at = models.DateTimeField( + _('modified at'), + auto_now=True, + ) + + # PBS-specific fields + folder_type = models.IntegerField( + choices=list(FOLDER_TYPES.items()), + default=SITE_FOLDER, + ) + + site = models.ForeignKey( + Site, + null=True, + blank=True, + on_delete=models.SET_NULL, + help_text=_("Select the site which will use this folder."), + ) restricted = models.BooleanField( _("Restrict Editors and Writers from being able to edit " - "or delete anything from this folder"), default=False, + "or delete anything from this folder"), + default=False, help_text=_('If this box is checked, ' 'Editors and Writers will still be able to ' 'view this folder assets, add them to a plugin or smart ' 'snippet but will not be able to delete or ' - 'modify the current version of the assets.')) + 'modify the current version of the assets.'), + ) - shared = models.ManyToManyField(Site, blank=True, + shared = models.ManyToManyField( + Site, + blank=True, related_name='shared', verbose_name=_("Share folder with sites"), help_text=_("All the sites which you share this folder with will " "be able to use this folder on their pages, with all of " "its assets. However, they will not be able to change, " - "delete or move it, not even add new assets.")) + "delete or move it, not even add new assets."), + ) + # PBS-specific: trash managers objects = AliveFolderManager() trash = TrashFolderManager() all_objects = FolderManager() + class Meta: + ordering = ('name',) + permissions = ( + ("can_use_directory_listing", "Can use directory listing"), + ("can_restrict_operations", "Can restrict files or folders"), + ) + app_label = 'filer' + verbose_name = _("Folder") + verbose_name_plural = _("Folders") + def __init__(self, *args, **kwargs): - super(Folder, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) if self.__dict__.get('name', DEFERRED) is not DEFERRED: self._old_name = self.name if self.__dict__.get('parent_id', DEFERRED) is not DEFERRED: self._old_parent_id = self.parent_id - def clean(self): + def __str__(self): + try: + name = self.pretty_logical_path + except: + name = self.name + return name + + def __repr__(self): + return f'<{self.__class__.__name__}(pk={self.pk}): {self.name}>' + def clean(self): if self.name == filer.models.clipboardmodels.Clipboard.folder_name: raise ValidationError( _('%s is reserved for internal use. ' @@ -196,8 +323,7 @@ def clean(self): parent=self.parent_id, name=self.name) if self.pk: - duplicate_folders_q = duplicate_folders_q.exclude( - pk=self.pk) + duplicate_folders_q = duplicate_folders_q.exclude(pk=self.pk) if duplicate_folders_q.exists(): raise ValidationError( @@ -206,24 +332,16 @@ def clean(self): if not self.parent: if (self.folder_type == Folder.SITE_FOLDER and - not self.site): + not self.site): raise ValidationError('Folder is a Site folder. ' 'Site is required.') if (self.folder_type == Folder.CORE_FOLDER and not self.parent and - self.site): + self.site): raise ValidationError('Folder is a Core folder. ' 'Site must be empty.') def set_metadata_from_parent(self): - """ - This will keep the rules: - * site for site folders can be changed only for the folders - with no parent(root folders) - * core folders should not have any site - * if parent restricted keep restriction from parent - """ if self.parent: - # site folders - make sure it keeps the site from parent self.site = self.parent.site self.folder_type = self.parent.folder_type if self.parent.restricted: @@ -238,7 +356,6 @@ def has_new_metadata_value(self): if not self.pk: return True metadata_fields = ['restricted', 'site_id', 'folder_type'] - # metadata should be preserved for trashed folder too old_metadata = self.__class__.all_objects.\ filter(pk=self.pk).values(*metadata_fields).get() for field in metadata_fields: @@ -251,10 +368,6 @@ def is_affecting_file_paths(self): self._old_parent_id != getattr(self, 'parent_id', None)) def update_descendants_metadata(self): - """ - Folder type and restriction should be preserved - to all descendants - """ descendants = None if self._update_descendants: descendants = self.get_descendants() @@ -282,7 +395,7 @@ def update_descendants_metadata(self): def save(self, *args, **kwargs): if not filer_settings.FOLDER_AFFECTS_URL: self.set_metadata_from_parent() - super(Folder, self).save(*args, **kwargs) + super().save(*args, **kwargs) self.update_descendants_metadata() return @@ -297,12 +410,11 @@ def delete_from_locations(locations, storages): try: with transaction.atomic(savepoint=False): self.set_metadata_from_parent() - super(Folder, self).save(*args, **kwargs) + super().save(*args, **kwargs) self.update_descendants_metadata() if self.is_affecting_file_paths(): desc_ids = list(self.get_descendants( include_self=True).values_list('id', flat=True)) - # update location only for alive files file_mgr = filer.models.filemodels.File.objects all_files = file_mgr.filter(folder__in=desc_ids) for f in all_files: @@ -318,34 +430,29 @@ def delete_from_locations(locations, storages): else: delete_from_locations(old_locations, storages) + # PBS-specific: trash methods def soft_delete(self): deletion_time = timezone.now() desc_ids = list(self.get_descendants( include_self=True).values_list('id', flat=True)) - # soft delete all alive files file_mgr = filer.models.filemodels.File.objects files_qs = file_mgr.filter(folder__in=desc_ids) for filer_file in files_qs: filer_file.soft_delete(deletion_time=deletion_time) - # soft delete all alive folders Folder.objects.filter( id__in=desc_ids).update(deleted_at=deletion_time) self.deleted_at = deletion_time def hard_delete(self): - # This would happen automatically by ways of the delete - # cascade, but then the individual .delete() methods - # won't be called and the files won't be deleted - # from the filesystem. desc_ids = list(self.get_descendants( include_self=True).values_list('id', flat=True)) file_mgr = filer.models.filemodels.File.all_objects for file_obj in file_mgr.filter(folder__in=desc_ids): file_obj.hard_delete() - super(Folder, self).delete() + super().delete() def delete(self, *args, **kwargs): - super(Folder, self).delete_restorable(*args, **kwargs) + super().delete_restorable(*args, **kwargs) delete.alters_data = True def _generate_valid_name_for_restore(self): @@ -358,12 +465,6 @@ def _generate_valid_name_for_restore(self): return name def restore_path(self): - """ - This method makes this folder path to be a valid destination for - for restoring files/sub-folders. - * it restores all the trashed folders in this folder's path. - * files from the folders in path will not be restored. - """ trashed_ancestors = self.get_ancestors(include_self=True).filter( deleted_at__isnull=False) first_node_trashed = trashed_ancestors[:1] @@ -376,11 +477,7 @@ def restore_path(self): trashed_ancestors.update(deleted_at=None) def restore(self): - """ - Restores all files and subfolders contained in this folder. - """ self.restore_path() - # add self since it was restored with restore_path method desc_ids = [self.id] descendants = self.get_descendants(include_self=True).filter( deleted_at__isnull=False) @@ -389,7 +486,6 @@ def restore(self): Folder.trash.filter(id=descendant.id).update( deleted_at=None, name=new_name) desc_ids.append(descendant.id) - # restore self and descendants files file_mgr = filer.models.filemodels.File.trash files_qs = file_mgr.filter(folder__in=desc_ids) for filer_file in files_qs: @@ -434,9 +530,6 @@ def files(self): return filer.models.File.objects.filter(folder=self) def entries_with_names(self, names): - """Returns an iterator yielding the files and folders that are direct - children of this folder and have their names in the given list of names. - """ q = Q(name__in=names) q |= Q(original_filename__in=names) & (Q(name__isnull=True) | Q(name='')) files_with_names = filer.models.File.objects.filter( @@ -446,21 +539,22 @@ def entries_with_names(self, names): return list(itertools.chain(files_with_names, folders_with_names)) def pretty_path_entries(self): - """Returns a list of all the descendant's `alive` entries logical path""" subdirs = self.get_descendants(include_self=True).filter( deleted_at__isnull=True) subdir_files = filer.models.File.objects.filter(folder__in=subdirs) file_paths = [x.pretty_logical_path for x in subdir_files] dir_paths = [x.pretty_logical_path for x in subdirs] - paths = file_paths + dir_paths - return paths + return file_paths + dir_paths + + def get_descendants_ids(self): + desc = [] + for child in self.children.all(): + desc.append(child.id) + desc.extend(child.get_descendants_ids()) + return desc @property def logical_path(self): - """ - Gets logical path of the folder in the tree structure. - Used to generate breadcrumbs - """ folder_path = [] try: if self.parent: @@ -479,22 +573,58 @@ def pretty_logical_path(self): def quoted_logical_path(self): return quote(self.pretty_logical_path) + # Upstream permission methods + def has_edit_permission(self, request): + return request.user.has_perm("filer.change_folder") and self.has_generic_permission(request, 'edit') + + def has_read_permission(self, request): + return self.has_generic_permission(request, 'read') + + def has_add_children_permission(self, request): + return request.user.has_perm("filer.change_folder") and self.has_generic_permission(request, 'add_children') + + def has_generic_permission(self, request, permission_type): + user = request.user + if not user.is_authenticated: + return False + elif user.is_superuser: + return True + elif user == self.owner: + return True + else: + if not hasattr(self, "permission_cache") or\ + permission_type not in self.permission_cache or \ + request.user.pk != self.permission_cache['user'].pk: + if not hasattr(self, "permission_cache") or request.user.pk != self.permission_cache['user'].pk: + self.permission_cache = { + 'user': request.user, + } + func = getattr(FolderPermission.objects, + "get_%s_id_list" % permission_type) + permission = func(user) + if permission == "All": + self.permission_cache[permission_type] = True + self.permission_cache['read'] = True + self.permission_cache['edit'] = True + self.permission_cache['add_children'] = True + else: + self.permission_cache[permission_type] = self.id in permission + return self.permission_cache[permission_type] + + def get_admin_change_url(self): + return reverse('admin:filer_folder_change', args=(self.id,)) + def get_admin_url_path(self): return reverse('admin:filer_folder_change', args=(self.id,)) def get_admin_directory_listing_url_path(self): return reverse('admin:filer-directory_listing', args=(self.id,)) - def __str__(self): - try: - name = self.pretty_logical_path - except: - name = self.name - return name - - @property - def actual_name(self): - return self.name + def get_admin_delete_url(self): + return reverse( + f'admin:{self._meta.app_label}_{self._meta.model_name}_delete', + args=(self.pk,) + ) def contains_folder(self, folder_name): try: @@ -503,12 +633,17 @@ def contains_folder(self, folder_name): except Folder.DoesNotExist: return False + @property + def actual_name(self): + return self.name + @property def get_folder_type_display(self): if self.shared.exists(): return 'Shared by site' return Folder.FOLDER_TYPES[self.folder_type] + # PBS-specific: site/core permission methods def is_core(self): return self.folder_type == Folder.CORE_FOLDER @@ -524,9 +659,6 @@ def is_restricted_for_user(self, user): not can_restrict_on_site(user, self.site))) def can_change_restricted(self, user): - """ - Checks if restriction operation is available for this folder. - """ perm = 'filer.can_restrict_operations' if (not (user.has_perm(perm, self) or user.has_perm(perm)) or not can_restrict_on_site(user, self.site)): @@ -534,7 +666,6 @@ def can_change_restricted(self, user): if not self.parent: return True if self.parent.restricted == self.restricted == True: - # only parent can be set to True return False if self.parent.restricted == self.restricted == False: return True @@ -545,33 +676,25 @@ def can_change_restricted(self, user): return True def has_add_permission(self, user): - # nobody can add subfolders in core folders if (self.is_readonly_for_user(user) or self.is_restricted_for_user(user)): return False - # only site admins can add subfolders in site folders with no site if not self.site and has_admin_role(user): return True - # regular users need to have permissions to add folders and - # need to have a role over the site owner of the folder if not self.site or not has_role_on_site(user, self.site): return False perm = 'filer.add_folder' return user.has_perm(perm, self.site) or user.has_perm(perm) def has_change_permission(self, user): - # nobody can change core folder if (self.is_readonly_for_user(user) or self.is_restricted_for_user(user)): return False - # only admins can change site folders with no site owner if not self.site and has_admin_role(user): return True - if not self.site: return False if not self.parent: - # only site admins can change root site folders return has_admin_role_on_site(user, self.site) perm = 'filer.change_folder' return ((user.has_perm(perm, self.site) or user.has_perm(perm)) and @@ -581,29 +704,16 @@ def has_delete_permission(self, user): if (self.is_readonly_for_user(user) or self.is_restricted_for_user(user)): return False - - # only super users can delete site folders with no site owner if not self.site and user.is_superuser: return True - if not self.site: return False if not self.parent: - # only site admins can delete root site folders return has_admin_role_on_site(user, self.site) perm = 'filer.delete_folder' return ((user.has_perm(perm, self.site) or user.has_perm(perm)) and has_role_on_site(user, self.site)) - class Meta: - ordering = ('name',) - permissions = (("can_use_directory_listing", - "Can use directory listing"), - ("can_restrict_operations", - "Can restrict files or folders"),) - app_label = 'filer' - verbose_name = _("Folder") - verbose_name_plural = _("Folders") # MPTT registration try: @@ -626,3 +736,150 @@ def update_shared_sites_for_descendants(instance, **kwargs): descendants = instance.get_descendants() for desc_folder in descendants: desc_folder.shared.set(sites) + + +# Upstream: FolderPermission model +class FolderPermission(models.Model): + ALL = 0 + THIS = 1 + CHILDREN = 2 + + ALLOW = 1 + DENY = 0 + + TYPES = [ + (ALL, _("all items")), + (THIS, _("this item only")), + (CHILDREN, _("this item and all children")), + ] + + PERMISIONS = [ + (None, _("inherit")), + (ALLOW, _("allow")), + (DENY, _("deny")), + ] + + folder = models.ForeignKey( + Folder, + verbose_name=("folder"), + null=True, + blank=True, + on_delete=models.CASCADE, + ) + + type = models.SmallIntegerField( + _("type"), + choices=TYPES, + default=ALL, + ) + + user = models.ForeignKey( + getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), + related_name="filer_folder_permissions", + on_delete=models.SET_NULL, + verbose_name=_("user"), + blank=True, + null=True, + ) + + group = models.ForeignKey( + auth_models.Group, + related_name="filer_folder_permissions", + verbose_name=_("group"), + blank=True, + null=True, + on_delete=models.CASCADE, + ) + + everybody = models.BooleanField( + _("everybody"), + default=False, + ) + + can_read = models.SmallIntegerField( + _("can read"), + choices=PERMISIONS, + blank=True, + null=True, + default=None, + ) + + can_edit = models.SmallIntegerField( + _("can edit"), + choices=PERMISIONS, + blank=True, + null=True, + default=None, + ) + + can_add_children = models.SmallIntegerField( + _("can add children"), + choices=PERMISIONS, + blank=True, + null=True, + default=None, + ) + + class Meta: + verbose_name = _('folder permission') + verbose_name_plural = _('folder permissions') + app_label = 'filer' + + objects = FolderPermissionManager() + + def __str__(self): + return self.pretty_logical_path + + def __repr__(self): + return f'<{self.__class__.__name__}(pk={self.pk}): folder="{self.pretty_logical_path}">' + + def clean(self): + if self.type == self.ALL and self.folder: + raise ValidationError(_('Folder cannot be selected with type "all items".')) + if self.type != self.ALL and not self.folder: + raise ValidationError(_('Folder has to be selected when type is not "all items".')) + if self.everybody and (self.user or self.group): + raise ValidationError(_('User or group cannot be selected together with "everybody".')) + if not self.user and not self.group and not self.everybody: + raise ValidationError(_('At least one of user, group, or "everybody" has to be selected.')) + + @cached_property + def pretty_logical_path(self): + if self.folder: + return self.folder.pretty_logical_path + return gettext("All Folders") + + pretty_logical_path.short_description = _("Logical Path") + + @cached_property + def who(self): + parts = [] + if self.user: + parts.append(_("User: {user}").format(user=self.user)) + if self.group: + parts.append(_("Group: {group}").format(group=self.group)) + if self.everybody: + parts.append(_("Everybody")) + if parts: + return format_html_join("; ", '{}', ((p,) for p in parts)) + return '–' + + who.short_description = _("Who") + + @cached_property + def what(self): + mapping = { + 'can_edit': _("Edit"), + 'can_read': _("Read"), + 'can_add_children': _("Add children"), + } + perms = [] + for key, text in mapping.items(): + perm = getattr(self, key) + if perm == self.ALLOW: + perms.append(text) + elif perm == self.DENY: + perms.append('\u0336'.join(text) + '\u0336') + return format_html_join(", ", '{}', ((p,) for p in perms)) + + what.short_description = _("What") diff --git a/filer/models/imagemodels.py b/filer/models/imagemodels.py index 825b7f2ad..00d0ef270 100644 --- a/filer/models/imagemodels.py +++ b/filer/models/imagemodels.py @@ -1,207 +1,66 @@ -#-*- coding: utf-8 -*- import logging - -try: - from PIL import Image as PILImage -except ImportError: - try: - import Image as PILImage - except ImportError: - raise ImportError("The Python Imaging Library was not found.") from datetime import datetime + +from django.conf import settings from django.db import models +from django.utils.timezone import get_current_timezone, make_aware, now from django.utils.translation import gettext_lazy as _ -from django.utils import timezone -from django.conf import settings -from django.core.exceptions import ValidationError -from filer import settings as filer_settings -from filer.models.filemodels import File -from filer.utils.pil_exif import get_exif_for_file -import os - -logger = logging.getLogger("filer") - -class Image(File): - SIDEBAR_IMAGE_WIDTH = 210 - DEFAULT_THUMBNAILS = { - 'admin_clipboard_icon': {'size': (32, 32), 'crop': True, - 'upscale': True}, - 'admin_sidebar_preview': {'size': (SIDEBAR_IMAGE_WIDTH, 10000)}, - 'admin_directory_listing_icon': {'size': (48, 48), - 'crop': True, 'upscale': True}, - 'admin_tiny_icon': {'size': (32, 32), 'crop': True, 'upscale': True}, - } - file_type = 'Image' - _icon = "image" - _filename_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.ico', '.svg', '.webp'] +from .abstract import BaseImage - _height = models.IntegerField(null=True, blank=True) - _width = models.IntegerField(null=True, blank=True) - date_taken = models.DateTimeField(_('date taken'), null=True, blank=True, - editable=False) - - default_alt_text = models.TextField( - _('default alt text'), blank=True, null=True, - help_text=_('Describes the essence of the image for users who have ' - 'images turned off in their browser, or are visually ' - 'impaired and using a screen reader; and it is used to ' - 'identify images to search engines.')) - default_caption = models.TextField( - _('default caption'), blank=True, null=True, - help_text=_('Caption text is displayed directly below an image ' - 'plugin to add context; there is no character limit;' - 'for images fewer than 200 pixels ' - 'wide, the caption text is only displayed on hover.')) - default_credit = models.CharField( - _('default credit text'), max_length=255, blank=True, null=True, - help_text=_('Credit text gives credit to the owner or licensor of ' - 'an image; it is displayed below the image plugin, or ' - 'below the caption text on an image plugin, if that ' - 'option is selected; it is displayed along the bottom ' - 'of an image in the photo gallery plugin; there is a ' - '30-character limit, including spaces.')) - - author = models.CharField(_('author'), max_length=255, null=True, blank=True) - - must_always_publish_author_credit = models.BooleanField(_('must always publish author credit'), default=False) - must_always_publish_copyright = models.BooleanField(_('must always publish copyright'), default=False) - - subject_location = models.CharField(_('subject location'), max_length=64, null=True, blank=True, - default=None) - - @classmethod - def matches_file_type(cls, iname, ifile, request): - # This was originally in admin/clipboardadmin.py it was inside of a try - # except, I have moved it here outside of a try except because I can't - # figure out just what kind of exception this could generate... all it was - # doing for me was obscuring errors... - # --Dave Butler - iext = os.path.splitext(iname)[1].lower() - return iext in Image._filename_extensions +logger = logging.getLogger("filer") - def clean(self): - if self.default_credit: - self.default_credit = self.default_credit.strip() - if self.default_alt_text: - self.default_alt_text = self.default_alt_text.strip() - if self.default_caption: - self.default_caption = self.default_caption.strip() - if int(len(self.default_credit or '')) > 30: - raise ValidationError( - "Ensure default credit text has at most 30 characters (" - "%s characters found)." % len(self.default_credit)) - super(Image, self).clean() +# This is the standard Image model which can be swapped for a custom model using FILER_IMAGE_MODEL setting +class Image(BaseImage): + date_taken = models.DateTimeField( + _("date taken"), + null=True, + blank=True, + editable=False, + ) + + author = models.CharField( + _("author"), + max_length=255, + null=True, + blank=True, + ) + + must_always_publish_author_credit = models.BooleanField( + _("must always publish author credit"), + default=False, + ) + + must_always_publish_copyright = models.BooleanField( + _('must always publish copyright'), + default=False, + ) + + class Meta(BaseImage.Meta): + swappable = 'FILER_IMAGE_MODEL' + default_manager_name = 'objects' def save(self, *args, **kwargs): - self.full_clean() if self.date_taken is None: try: exif_date = self.exif.get('DateTimeOriginal', None) if exif_date is not None: - d, t = str.split(exif_date.values) + d, t = exif_date.split(" ") year, month, day = d.split(':') hour, minute, second = t.split(':') if getattr(settings, "USE_TZ", False): - tz = timezone.get_current_timezone() - self.date_taken = timezone.make_aware(datetime( + tz = get_current_timezone() + self.date_taken = make_aware(datetime( int(year), int(month), int(day), int(hour), int(minute), int(second)), tz) else: self.date_taken = datetime( int(year), int(month), int(day), int(hour), int(minute), int(second)) - except: + except Exception: pass if self.date_taken is None: - self.date_taken = timezone.now() - self.has_all_mandatory_data = self._check_validity() - try: - # do this more efficient somehow? - self.file.seek(0) - self._width, self._height = PILImage.open(self.file).size - except Exception: - # probably the image is missing. nevermind. - pass - super(Image, self).save(*args, **kwargs) - - def _check_validity(self): - if not self.name: - return False - return True - - def sidebar_image_ratio(self): - if self.width: - return float(self.width) / float(self.SIDEBAR_IMAGE_WIDTH) - else: - return 1.0 - - def _get_exif(self): - if hasattr(self, '_exif_cache'): - return self._exif_cache - else: - if self.file: - self._exif_cache = get_exif_for_file(self.file.path) - else: - self._exif_cache = {} - return self._exif_cache - exif = property(_get_exif) - - @property - def label(self): - if self.name in ['', None]: - return self.original_filename or 'unnamed file' - else: - return self.name - - @property - def width(self): - return self._width or 0 - - @property - def height(self): - return self._height or 0 - - def _generate_thumbnails(self, required_thumbnails): - _thumbnails = {} - if self.is_in_trash(): - return _thumbnails - for name, opts in list(required_thumbnails.items()): - try: - opts.update({'subject_location': self.subject_location}) - thumb = self.file.get_thumbnail(opts) - _thumbnails[name] = thumb.url - except Exception as e: - # catch exception and manage it. We can re-raise it for debugging - # purposes and/or just logging it, provided user configured - # proper logging configuration - if filer_settings.FILER_ENABLE_LOGGING: - logger.error('Error while generating thumbnail: %s',e) - if filer_settings.FILER_DEBUG: - raise e - return _thumbnails - - @property - def icons(self): - required_thumbnails = dict( - (size, {'size': (int(size), int(size)), - 'crop': True, - 'upscale': True, - 'subject_location': self.subject_location}) - for size in filer_settings.FILER_ADMIN_ICON_SIZES) - return self._generate_thumbnails(required_thumbnails) - - @property - def thumbnails(self): - return self._generate_thumbnails(Image.DEFAULT_THUMBNAILS) - - @property - def easy_thumbnails_thumbnailer(self): - return self.file - - class Meta: - app_label = 'filer' - verbose_name = _('image') - verbose_name_plural = _('images') + self.date_taken = now() + super().save(*args, **kwargs) diff --git a/filer/models/mixins.py b/filer/models/mixins.py index 783d1123b..1d4cb2ce7 100644 --- a/filer/models/mixins.py +++ b/filer/models/mixins.py @@ -1,10 +1,13 @@ -#-*- coding: utf-8 -*- -from filer.settings import FILER_ADMIN_ICON_SIZES, FILER_STATICMEDIA_PREFIX +import warnings + from django.db import models +from django.templatetags.static import static from django.utils.translation import gettext_lazy as _ +from ..settings import FILER_ADMIN_ICON_SIZES + -class IconsMixin(object): +class IconsMixin: """ Can be used on any model that has a _icon attribute. will return a dict containing urls for icons of different sizes with that name. @@ -14,11 +17,15 @@ def icons(self): r = {} if getattr(self, '_icon', False): for size in FILER_ADMIN_ICON_SIZES: - r[size] = "%sicons/%s_%sx%s.png" % ( - FILER_STATICMEDIA_PREFIX, self._icon, size, size) + try: + r[size] = static("filer/icons/{}_{}x{}.png".format( + self._icon, size, size)) + except ValueError: + pass return r +# PBS-specific: trashable decorator def trashable(cls): deleted_at = models.DateTimeField( diff --git a/filer/models/virtualitems.py b/filer/models/virtualitems.py index 89c9cae51..e65b39fd6 100644 --- a/filer/models/virtualitems.py +++ b/filer/models/virtualitems.py @@ -1,10 +1,11 @@ -#-*- coding: utf-8 -*- from django.urls import reverse from django.utils.translation import gettext_lazy as _ -from filer.models import mixins -from filer.models.filemodels import File -from filer.models.foldermodels import Folder -from filer.utils.cms_roles import * + +from .. import settings as filer_settings +from ..utils.cms_roles import has_admin_role +from . import mixins +from .filemodels import File +from .foldermodels import Folder class DummyFolder(mixins.IconsMixin): @@ -43,10 +44,16 @@ def logical_path(self): class UnfiledImages(DummyFolder): + """PBS name for unsorted/unfiled images.""" name = _("unfiled files") is_root = True + is_unsorted_uploads = True _icon = "unfiled_folder" + def __init__(self, user=None): + super().__init__() + self.user = user + def _files(self): return File.objects.filter( folder__isnull=True, clipboarditem__isnull=True) @@ -56,6 +63,10 @@ def get_admin_directory_listing_url_path(self): return reverse('admin:filer-directory_listing-unfiled_images') +# Upstream compat alias +UnsortedImages = UnfiledImages + + class ImagesWithMissingData(DummyFolder): name = _("files with missing metadata") is_root = True @@ -93,12 +104,12 @@ def contains_folder(self, folder_name): return False def entries_with_names(self, names): - # children of te root folder can only be folders, so we don't have to look for files return self.children.filter(name__in=names) def get_admin_directory_listing_url_path(self): return reverse('admin:filer-directory_listing-root') + # PBS-specific permission methods def is_restricted_for_user(self, user): return not has_admin_role(user) diff --git a/filer/settings.py b/filer/settings.py index 689ff2b60..5ac715abf 100644 --- a/filer/settings.py +++ b/filer/settings.py @@ -1,44 +1,73 @@ -#-*- coding: utf-8 -*- +import logging import os from django.conf import settings -from django.utils.module_loading import import_string +from django.utils.module_loading import import_string as get_storage_class +from django.utils.translation import gettext_lazy as _ -from filer.utils.loader import load_object -from filer.utils.recursive_dictionary import RecursiveDictionaryWithExcludes +from .utils.loader import load_object +from .utils.recursive_dictionary import RecursiveDictionaryWithExcludes -FILER_DEBUG = getattr(settings, 'FILER_DEBUG', False) # When True makes +logger = logging.getLogger(__name__) + +# FILER_IMAGE_MODEL setting is used to swap Image model. +# If such global setting does not exist, it will be created at this point (with default model name). +# This is needed especially when using this setting in migrations. +if not hasattr(settings, 'FILER_IMAGE_MODEL'): + setattr(settings, 'FILER_IMAGE_MODEL', 'filer.Image') +FILER_IMAGE_MODEL = settings.FILER_IMAGE_MODEL + +FILER_DEBUG = getattr(settings, 'FILER_DEBUG', False) # When True makes FILER_SUBJECT_LOCATION_IMAGE_DEBUG = getattr(settings, 'FILER_SUBJECT_LOCATION_IMAGE_DEBUG', False) +FILER_WHITESPACE_COLOR = getattr(settings, 'FILER_WHITESPACE_COLOR', '#FFFFFF') FILER_0_8_COMPATIBILITY_MODE = getattr(settings, 'FILER_0_8_COMPATIBILITY_MODE', False) FILER_ENABLE_LOGGING = getattr(settings, 'FILER_ENABLE_LOGGING', False) if FILER_ENABLE_LOGGING: - FILER_ENABLE_LOGGING = (FILER_ENABLE_LOGGING and (getattr(settings, 'LOGGING') and - ('' in settings.LOGGING['loggers'] or - 'filer' in settings.LOGGING['loggers']))) + FILER_ENABLE_LOGGING = ( + FILER_ENABLE_LOGGING and (getattr(settings, 'LOGGING') + and ('' in settings.LOGGING['loggers'] + or 'filer' in settings.LOGGING['loggers']))) +# PBS-specific: nohash rootfolders FILER_NOHASH_ROOTFOLDERS = getattr(settings, 'FILER_NOHASH_ROOTFOLDERS', []) + FILER_ENABLE_PERMISSIONS = getattr(settings, 'FILER_ENABLE_PERMISSIONS', False) +FILER_ALLOW_REGULAR_USERS_TO_ADD_ROOT_FOLDERS = getattr(settings, 'FILER_ALLOW_REGULAR_USERS_TO_ADD_ROOT_FOLDERS', False) FILER_IS_PUBLIC_DEFAULT = getattr(settings, 'FILER_IS_PUBLIC_DEFAULT', True) -FILER_PAGINATE_BY = getattr(settings, 'FILER_PAGINATE_BY', 20) +FILER_PAGINATE_BY = getattr(settings, 'FILER_PAGINATE_BY', 100) + +if hasattr(settings, "FILER_ADMIN_ICON_SIZES"): + logger.warning("FILER_ADMIN_ICON_SIZES is deprecated and will be removed in the future.") + +_ICON_SIZES = getattr(settings, 'FILER_ADMIN_ICON_SIZES', ('16', '32', '48', '64')) +# Reliably sort by integer value, but keep icon size as string. +FILER_ADMIN_ICON_SIZES = [str(i) for i in sorted([int(s) for s in _ICON_SIZES])] + +# PBS legacy compat FILER_STATICMEDIA_PREFIX = getattr(settings, 'FILER_STATICMEDIA_PREFIX', None) if not FILER_STATICMEDIA_PREFIX: FILER_STATICMEDIA_PREFIX = (getattr(settings, 'STATIC_URL', None) or settings.MEDIA_URL) + 'filer/' -FILER_ADMIN_ICON_SIZES = getattr(settings, "FILER_ADMIN_ICON_SIZES", ('32',)) +# Currently, these two icon sizes are hard-coded into the admin and admin templates +FILER_TABLE_ICON_SIZE = getattr(settings, "FILER_TABLE_ICON_SIZE", 40) +FILER_THUMBNAIL_ICON_SIZE = getattr(settings, "FILER_THUMBNAIL_ICON_SIZE", 120) +DEFERRED_THUMBNAIL_SIZES = ( + FILER_TABLE_ICON_SIZE, + 2 * FILER_TABLE_ICON_SIZE, + FILER_THUMBNAIL_ICON_SIZE, + 2 * FILER_THUMBNAIL_ICON_SIZE, +) + # This is an ordered iterable that describes a list of # classes that I should check for when adding files -FILER_FILE_MODELS = getattr(settings, 'FILER_FILE_MODELS', - ( - 'filer.models.imagemodels.Image', - 'filer.models.archivemodels.Archive', - 'filer.models.filemodels.File', - ) -) +FILER_FILE_MODELS = getattr( + settings, 'FILER_FILE_MODELS', + (FILER_IMAGE_MODEL, 'filer.File')) _FALLBACK_STORAGE_BACKEND = 'django.core.files.storage.FileSystemStorage' @@ -46,7 +75,7 @@ DEFAULT_FILE_STORAGE = settings.STORAGES['default'].get('BACKEND', _FALLBACK_STORAGE_BACKEND) else: DEFAULT_FILE_STORAGE = getattr(settings, 'DEFAULT_FILE_STORAGE', _FALLBACK_STORAGE_BACKEND) - # Django 5.1+ removed the legacy DEFAULT_FILE_STORAGE setting and relies + # PBS: Django 5.1+ removed the legacy DEFAULT_FILE_STORAGE setting and relies # exclusively on STORAGES['default']. If the host project (e.g. bento) # defines STORAGES without a 'default' key, Django's internal # default_storage lookup will raise InvalidStorageError. Inject the @@ -61,23 +90,23 @@ 'main': { 'ENGINE': None, 'OPTIONS': {}, - }, + }, 'thumbnails': { 'ENGINE': None, 'OPTIONS': {}, - } + } }, 'private': { 'main': { 'ENGINE': None, 'OPTIONS': {}, - }, + }, 'thumbnails': { 'ENGINE': None, 'OPTIONS': {}, - }, }, - } + }, +} DEFAULT_FILER_STORAGES = { @@ -180,47 +209,47 @@ FILER_STORAGES.rec_update(user_filer_storages) + def update_storage_settings(user_settings, defaults, s, t): if not user_settings[s][t]['ENGINE']: user_settings[s][t]['ENGINE'] = defaults[s][t]['ENGINE'] user_settings[s][t]['OPTIONS'] = defaults[s][t]['OPTIONS'] if t == 'main': - if not 'UPLOAD_TO' in user_settings[s][t]: + if 'UPLOAD_TO' not in user_settings[s][t]: user_settings[s][t]['UPLOAD_TO'] = defaults[s][t]['UPLOAD_TO'] - if not 'UPLOAD_TO_PREFIX' in user_settings[s][t]: + if 'UPLOAD_TO_PREFIX' not in user_settings[s][t]: user_settings[s][t]['UPLOAD_TO_PREFIX'] = defaults[s][t]['UPLOAD_TO_PREFIX'] if t == 'thumbnails': - if not 'THUMBNAIL_OPTIONS' in user_settings[s][t]: + if 'THUMBNAIL_OPTIONS' not in user_settings[s][t]: user_settings[s][t]['THUMBNAIL_OPTIONS'] = defaults[s][t]['THUMBNAIL_OPTIONS'] return user_settings -for s in ['public', 'private']: - for t in ['main', 'thumbnails']: - update_storage_settings(FILER_STORAGES, DEFAULT_FILER_STORAGES, s, t) + +update_storage_settings(FILER_STORAGES, DEFAULT_FILER_STORAGES, 'public', 'main') +update_storage_settings(FILER_STORAGES, DEFAULT_FILER_STORAGES, 'public', 'thumbnails') +update_storage_settings(FILER_STORAGES, DEFAULT_FILER_STORAGES, 'private', 'main') +update_storage_settings(FILER_STORAGES, DEFAULT_FILER_STORAGES, 'private', 'thumbnails') FILER_SERVERS = RecursiveDictionaryWithExcludes(MINIMAL_FILER_SERVERS, rec_excluded_keys=('OPTIONS',)) FILER_SERVERS.rec_update(getattr(settings, 'FILER_SERVERS', {})) + def update_server_settings(settings, defaults, s, t): if not settings[s][t]['ENGINE']: settings[s][t]['ENGINE'] = defaults[s][t]['ENGINE'] settings[s][t]['OPTIONS'] = defaults[s][t]['OPTIONS'] return settings -for t in ['main', 'thumbnails']: - update_server_settings(FILER_SERVERS, DEFAULT_FILER_SERVERS, 'private', t) -# Storage class loader (Django 5.1+) -def get_storage_class(path): - return import_string(path) +update_server_settings(FILER_SERVERS, DEFAULT_FILER_SERVERS, 'private', 'main') +update_server_settings(FILER_SERVERS, DEFAULT_FILER_SERVERS, 'private', 'thumbnails') + # Public media (media accessible without any permission checks) FILER_PUBLICMEDIA_STORAGE = get_storage_class(FILER_STORAGES['public']['main']['ENGINE'])(**FILER_STORAGES['public']['main']['OPTIONS']) FILER_PUBLICMEDIA_UPLOAD_TO = load_object(FILER_STORAGES['public']['main']['UPLOAD_TO']) if 'UPLOAD_TO_PREFIX' in FILER_STORAGES['public']['main']: - FILER_PUBLICMEDIA_UPLOAD_TO = load_object('filer.utils.generate_filename.prefixed_factory')( - FILER_PUBLICMEDIA_UPLOAD_TO, FILER_STORAGES['public']['main']['UPLOAD_TO_PREFIX'] - ) + FILER_PUBLICMEDIA_UPLOAD_TO = load_object('filer.utils.generate_filename.prefixed_factory')(FILER_PUBLICMEDIA_UPLOAD_TO, FILER_STORAGES['public']['main']['UPLOAD_TO_PREFIX']) FILER_PUBLICMEDIA_THUMBNAIL_STORAGE = get_storage_class(FILER_STORAGES['public']['thumbnails']['ENGINE'])(**FILER_STORAGES['public']['thumbnails']['OPTIONS']) FILER_PUBLICMEDIA_THUMBNAIL_OPTIONS = FILER_STORAGES['public']['thumbnails']['THUMBNAIL_OPTIONS'] @@ -229,55 +258,107 @@ def get_storage_class(path): FILER_PRIVATEMEDIA_STORAGE = get_storage_class(FILER_STORAGES['private']['main']['ENGINE'])(**FILER_STORAGES['private']['main']['OPTIONS']) FILER_PRIVATEMEDIA_UPLOAD_TO = load_object(FILER_STORAGES['private']['main']['UPLOAD_TO']) if 'UPLOAD_TO_PREFIX' in FILER_STORAGES['private']['main']: - FILER_PRIVATEMEDIA_UPLOAD_TO = load_object('filer.utils.generate_filename.prefixed_factory')( - FILER_PRIVATEMEDIA_UPLOAD_TO, FILER_STORAGES['private']['main']['UPLOAD_TO_PREFIX'] - ) + FILER_PRIVATEMEDIA_UPLOAD_TO = load_object('filer.utils.generate_filename.prefixed_factory')(FILER_PRIVATEMEDIA_UPLOAD_TO, FILER_STORAGES['private']['main']['UPLOAD_TO_PREFIX']) FILER_PRIVATEMEDIA_THUMBNAIL_STORAGE = get_storage_class(FILER_STORAGES['private']['thumbnails']['ENGINE'])(**FILER_STORAGES['private']['thumbnails']['OPTIONS']) FILER_PRIVATEMEDIA_THUMBNAIL_OPTIONS = FILER_STORAGES['private']['thumbnails']['THUMBNAIL_OPTIONS'] FILER_PRIVATEMEDIA_SERVER = load_object(FILER_SERVERS['private']['main']['ENGINE'])(**FILER_SERVERS['private']['main']['OPTIONS']) FILER_PRIVATEMEDIA_THUMBNAIL_SERVER = load_object(FILER_SERVERS['private']['thumbnails']['ENGINE'])(**FILER_SERVERS['private']['thumbnails']['OPTIONS']) +# By default limit number of simultaneous uploads if we are using SQLite +if settings.DATABASES['default']['ENGINE'].endswith('sqlite3'): + _uploader_connections = 1 +else: + _uploader_connections = 3 +FILER_UPLOADER_CONNECTIONS = getattr( + settings, 'FILER_UPLOADER_CONNECTIONS', _uploader_connections) +FILER_UPLOADER_MAX_FILES = getattr( + settings, 'FILER_UPLOADER_MAX_FILES', 100) +FILER_UPLOADER_MAX_FILE_SIZE = getattr( + settings, 'FILER_UPLOADER_MAX_FILE_SIZE', None) + + +FILER_DUMP_PAYLOAD = getattr(settings, 'FILER_DUMP_PAYLOAD', False) + +FILER_CANONICAL_URL = getattr(settings, 'FILER_CANONICAL_URL', 'canonical/') + +TABLE_LIST_TYPE = 'tb' +THUMBNAIL_LIST_TYPE = 'th' +FILER_FOLDER_ADMIN_LIST_TYPE_CHOICES = ( + TABLE_LIST_TYPE, + THUMBNAIL_LIST_TYPE, +) +FILER_FOLDER_ADMIN_DEFAULT_LIST_TYPE = getattr(settings, 'FILER_FOLDER_ADMIN_DEFAULT_LIST_TYPE', TABLE_LIST_TYPE) +if FILER_FOLDER_ADMIN_DEFAULT_LIST_TYPE not in FILER_FOLDER_ADMIN_LIST_TYPE_CHOICES: + FILER_FOLDER_ADMIN_DEFAULT_LIST_TYPE = TABLE_LIST_TYPE + +FILER_FOLDER_ADMIN_LIST_TYPE_SWITCHER_SETTINGS = { + TABLE_LIST_TYPE: { + 'icon': 'th-list', + 'tooltip_text': _('Show table view'), + 'template': 'admin/filer/folder/directory_table_list.html', + }, + THUMBNAIL_LIST_TYPE: { + 'icon': 'th-large', + 'tooltip_text': _('Show thumbnail view'), + 'template': 'admin/filer/folder/directory_thumbnail_list.html', + }, +} + +IMAGE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif', '.webp'] +IMAGE_MIME_TYPES = ['gif', 'jpeg', 'png', 'x-png', 'svg+xml', 'webp'] + +FILE_VALIDATORS = { + "text/html": ["filer.validation.deny_html"], + "image/svg+xml": ["filer.validation.validate_svg"], + "application/octet-stream": ["filer.validation.deny"], +} + +remove_mime_types = getattr(settings, "FILER_REMOVE_FILE_VALIDATORS", []) +for mime_type in remove_mime_types: # pragma: no cover + if mime_type in FILE_VALIDATORS: + del FILE_VALIDATORS[mime_type] + +for mime_type, validators in getattr(settings, "FILER_ADD_FILE_VALIDATORS", {}).items(): # pragma: no cover + if mime_type in FILE_VALIDATORS: + FILE_VALIDATORS[mime_type] += list(validators) + else: + FILE_VALIDATORS[mime_type] = list(validators) + +FILER_MIME_TYPE_WHITELIST = getattr(settings, "FILER_MIME_TYPE_WHITELIST", []) + + +# Determine if django CMS is installed and if it comes with its own iconset +ICON_CSS_LIB = ("filer/css/admin_filer.fa.icons.css",) +if "cms" in settings.INSTALLED_APPS: # pragma: no cover + try: + from cms import __version__ + from cms.utils.urlutils import static_with_version + + if __version__ >= "4": + ICON_CSS_LIB = ( + static_with_version("cms/css/cms.admin.css"), + "filer/css/admin_filer.cms.icons.css", + ) + except (ModuleNotFoundError, ImportError): + pass + +# SVG are their own thumbnails if their size is below this limit +FILER_MAX_SVG_THUMBNAIL_SIZE = getattr(settings, "FILER_MAX_SVG_THUMBNAIL_SIZE", 1024 * 1024) # 1MB default + +# --- PBS-specific settings --- + +# PBS: folder structure affects the URL of files on storage FOLDER_AFFECTS_URL = getattr(settings, 'FILER_FOLDER_AFFECTS_URL', False) + +# PBS: CDN settings CDN_DOMAIN = getattr(settings, 'FILER_CDN_DOMAIN', None) CDN_INVALIDATION_TIME = getattr(settings, 'FILER_CDN_INVALIDATION_TIME', 0) + +# PBS: Trash settings FILER_TRASH_PREFIX = getattr(settings, 'FILER_TRASH_PREFIX', '_trash') -# defaults to one day -FILER_TRASH_CLEAN_INTERVAL = getattr(settings, 'FILER_TRASH_CLEAN_INTERVAL', 60 * 60 * 24) - - -# Roles Manager that controles how the filer checks permissions -# Must be a callable or a the absolute path of the callable as a string. -# Calling this manager should return an object that must define these functions: -# -# def is_site_admin(user): -# """ -# :param user: django.contrib.auth.models.User to check permissions for -# :return: True if the user is an admin on any site, False otherwise -# """ -# pass - -# def has_perm_on_site(user, site_id, perm): -# """ -# :param user: django.contrib.auth.models.User to check permissions for -# :param site_id: id of django.contrib.sites.models.Site -# on which the user must have the permission -# :param perm: full name (.) of the permission, ex: filer.add_file -# :return: True if the user has the permission on that site, False otherwise -# """ -# pass - -# def get_accessible_sites(user): -# """ -# :return: list of django.contrib.sites.models.Site IDs on which the user has access. -# """ -# pass - -# def get_administered_sites(user): -# """ -# :return: list of django.contrib.sites.models.Site objects on which the user has admin access. -# """ -# pass +FILER_TRASH_CLEAN_INTERVAL = getattr(settings, 'FILER_TRASH_CLEAN_INTERVAL', 60 * 60 * 24) # defaults to one day +# PBS: Roles Manager that controls how the filer checks permissions _default_roles_manager = 'cmsroles.siteadmin.FilerRolesManager' try: import cmsroles # noqa: F401 From 602b3f43f148c9b4a30fb7cb2febd4da4de1cdd2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:48:46 +0000 Subject: [PATCH 03/51] Phase 4+6+7: Merge admin, fields, and utilities with PBS customizations preserved Agent-Logs-Url: https://github.com/pbs/django-filer/sessions/cad30a66-0889-48ba-bb3e-2ab3bf2939b2 Co-authored-by: andreilupuleasa <124138251+andreilupuleasa@users.noreply.github.com> --- filer/admin/__init__.py | 45 +- filer/admin/clipboardadmin.py | 294 ++-- filer/admin/fileadmin.py | 248 ++- filer/admin/folderadmin.py | 1964 +++++++++++------------- filer/admin/forms.py | 58 +- filer/admin/imageadmin.py | 130 +- filer/admin/patched/__init__.py | 2 - filer/admin/patched/admin_utils.py | 104 +- filer/admin/tools.py | 233 +-- filer/fields/file.py | 164 +- filer/fields/folder.py | 121 +- filer/fields/image.py | 12 +- filer/fields/multistorage_file.py | 128 +- filer/server/backends/base.py | 33 +- filer/server/backends/default.py | 17 +- filer/server/backends/nginx.py | 13 +- filer/server/backends/xsendfile.py | 12 +- filer/server/main_server_urls.py | 4 +- filer/server/thumbnails_server_urls.py | 4 +- filer/server/urls.py | 18 +- filer/server/views.py | 28 +- filer/templatetags/filer_admin_tags.py | 318 ++-- filer/templatetags/filer_image_tags.py | 45 +- filer/templatetags/filer_tags.py | 14 +- filer/templatetags/filermedia.py | 16 - filer/thumbnail_processors.py | 69 +- filer/utils/filer_easy_thumbnails.py | 40 +- filer/utils/files.py | 200 ++- filer/utils/generate_filename.py | 26 +- filer/utils/is_ajax.py | 3 - filer/utils/loader.py | 13 +- filer/utils/model_label.py | 4 +- filer/utils/multi_model_qs.py | 49 - filer/utils/pil_exif.py | 22 +- filer/utils/recursive_dictionary.py | 12 +- filer/utils/zip.py | 26 - 36 files changed, 2446 insertions(+), 2043 deletions(-) delete mode 100644 filer/templatetags/filermedia.py delete mode 100644 filer/utils/is_ajax.py delete mode 100644 filer/utils/multi_model_qs.py delete mode 100644 filer/utils/zip.py diff --git a/filer/admin/__init__.py b/filer/admin/__init__.py index a55a36e4e..c84fb51b9 100644 --- a/filer/admin/__init__.py +++ b/filer/admin/__init__.py @@ -1,18 +1,43 @@ -#-*- coding: utf-8 -*- from django.contrib import admin -from filer.admin.clipboardadmin import ClipboardAdmin -from filer.admin.fileadmin import FileAdmin -from filer.admin.folderadmin import FolderAdmin -from filer.admin.imageadmin import ImageAdmin -from filer.admin.archiveadmin import ArchiveAdmin -from filer.models import (Folder, File, Clipboard, Image, - Archive) -from filer.admin.trashadmin import Trash, TrashAdmin +from ..models import Clipboard, File, Folder, FolderPermission +from ..settings import FILER_IMAGE_MODEL +from ..utils.loader import load_model +from .clipboardadmin import ClipboardAdmin +from .fileadmin import FileAdmin +from .folderadmin import FolderAdmin +from .imageadmin import ImageAdmin +from .permissionadmin import PermissionAdmin + +# PBS-specific: ThumbnailOption model may not exist in PBS migrations yet +try: + from ..models import ThumbnailOption + from .thumbnailoptionadmin import ThumbnailOptionAdmin + _has_thumbnail_option = True +except ImportError: + _has_thumbnail_option = False + +# PBS-specific: Trash admin +from ..admin.trashadmin import Trash, TrashAdmin + +Image = load_model(FILER_IMAGE_MODEL) admin.site.register(Folder, FolderAdmin) admin.site.register(File, FileAdmin) admin.site.register(Clipboard, ClipboardAdmin) admin.site.register(Image, ImageAdmin) -admin.site.register(Archive, ArchiveAdmin) +admin.site.register(FolderPermission, PermissionAdmin) + +if _has_thumbnail_option: + admin.site.register(ThumbnailOption, ThumbnailOptionAdmin) + +# PBS-specific: register Trash admin admin.site.register([Trash], TrashAdmin) + +# PBS-specific: Archive (backward compat) +try: + from ..models import Archive + from ..admin.archiveadmin import ArchiveAdmin + admin.site.register(Archive, ArchiveAdmin) +except ImportError: + pass diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index 8302b3b50..71d95daa7 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -1,27 +1,29 @@ -#-*- coding: utf-8 -*- +from django.contrib import admin, messages +from django.core.exceptions import ValidationError from django.forms.models import modelform_factory -from django.core.exceptions import PermissionDenied -from django.contrib import admin -from django.http import HttpResponse, HttpResponseRedirect +from django.http import JsonResponse +from django.urls import path, reverse +from django.utils.translation import gettext_lazy as _ from django.views.decorators.csrf import csrf_exempt -from django.urls import re_path -from filer import settings as filer_settings -from filer.models import Clipboard, ClipboardItem, Folder, tools -from filer.utils.files import ( - handle_upload, UploadException, matching_file_subtypes, truncate_filename -) -from filer.views import ( - popup_param, selectfolder_param, current_site_param, - file_type_param + +from .. import settings as filer_settings +from ..models import Clipboard, ClipboardItem, Folder +from ..settings import FILER_THUMBNAIL_ICON_SIZE +from ..utils.files import handle_request_files_upload, handle_upload +from ..utils.loader import load_model +from ..validation import validate_upload +from . import views + + +NO_PERMISSIONS = _("You do not have permission to upload files.") +NO_FOLDER_ERROR = _("Can't find folder to upload. Please refresh and try again") +NO_PERMISSIONS_FOR_FOLDER = _( + "Can't use this folder, Permission Denied. Please select another folder." ) -from filer.admin.tools import is_valid_destination -from filer.utils.is_ajax import is_ajax -import json -# even though the CharField is limited at 255 characters, the filename is used in -# thumbnail creation, which remembers the path and also post-fixes the name with -# '__32x32_q85_crop_subsampling-2_upscale.jpg'-like strings -FILENAME_LIMIT = 100 # larger values cause DataError + +Image = load_model(filer_settings.FILER_IMAGE_MODEL) + # ModelAdmins class ClipboardItemInline(admin.TabularInline): @@ -31,149 +33,30 @@ class ClipboardItemInline(admin.TabularInline): class ClipboardAdmin(admin.ModelAdmin): model = Clipboard inlines = [ClipboardItemInline] - # filter_horizontal = ('files',) raw_id_fields = ('user',) verbose_name = "DEBUG Clipboard" verbose_name_plural = "DEBUG Clipboards" - messages = { - 'already-exists': 'A file named {} already exists in the clipboard', - 'request-invalid': "AJAX request not valid: form invalid '{}'" - } def get_urls(self): - urls = super(ClipboardAdmin, self).get_urls() - url_patterns = [ - re_path(r'^operations/paste_clipboard_to_folder/$', - self.admin_site.admin_view(self.paste_clipboard_to_folder), - name='filer-paste_clipboard_to_folder'), - re_path(r'^operations/discard_clipboard/$', - self.admin_site.admin_view(self.discard_clipboard), - name='filer-discard_clipboard'), - re_path(r'^operations/delete_clipboard/$', - self.admin_site.admin_view(self.delete_clipboard), - name='filer-delete_clipboard'), - # upload does it's own permission stuff (because of the stupid - # flash missing cookie stuff) - re_path(r'^operations/upload/$', - self.ajax_upload, - name='filer-ajax_upload'), - ] - url_patterns.extend(urls) - return url_patterns - - def get_clipboard(self, request): - return Clipboard.objects.get(id=request.POST.get('clipboard_id')) - - def make_clipboard_redirect(self, request): - return HttpResponseRedirect('%s%s%s%s%s' % ( - request.POST.get('redirect_to', ''), - popup_param(request), - selectfolder_param(request), - current_site_param(request), - file_type_param(request))) - - def paste_clipboard_to_folder(self, request): - if request.method == 'POST': - folder_id = request.POST.get('folder_id') - if not folder_id: - raise PermissionDenied - folder = Folder.objects.get(id=folder_id) - if not is_valid_destination(request, folder): - raise PermissionDenied - - clipboard = self.get_clipboard(request) - files_moved = tools.move_files_from_clipboard_to_folder( - request, clipboard, folder) - tools.discard_clipboard_files(clipboard, files_moved) - return self.make_clipboard_redirect(request) - - def discard_clipboard(self, request): - if request.method == 'POST': - clipboard = self.get_clipboard(request) - tools.discard_clipboard(clipboard) - return self.make_clipboard_redirect(request) - - def delete_clipboard(self, request): - if request.method == 'POST': - tools.delete_clipboard(self.get_clipboard(request)) - return self.make_clipboard_redirect(request) - - def clone_files_from_clipboard_to_folder(self, request): - if request.method == 'POST': - folder_id = request.POST.get('folder_id') - if not folder_id: - raise PermissionDenied - folder = Folder.objects.get(id=folder_id) - if not is_valid_destination(request, folder): - raise PermissionDenied - tools.clone_files_from_clipboard_to_folder( - self.get_clipboard(request), folder) - return self.make_clipboard_redirect(request) - - @csrf_exempt - def ajax_upload(self, request, folder_id=None): - """ - receives an upload from the uploader. Receives only one file at the time. - """ - mimetype = "application/json" if is_ajax(request) else "text/html" - upload, file_obj, clipboard_item = None, None, None - try: - upload, original_filename, _ = handle_upload(request) - filename = truncate_filename(upload, maxlen=FILENAME_LIMIT) - upload.name = filename # the upload raw has also the title saved in a CharField - - # Get clipboad - clipboard = Clipboard.objects.get_or_create(user=request.user)[0] - if any(f for f in clipboard.files.all() if f.original_filename == filename): - raise UploadException(self.messages['already-exists'].format(filename)) - matched_file_types = matching_file_subtypes(filename, upload, request) - FileForm = modelform_factory( - model=matched_file_types[0], - fields=('original_filename', 'owner', 'file') - ) - uploadform = FileForm({'original_filename': filename, - 'owner': request.user.pk}, - {'file': upload}) - if uploadform.is_valid(): - file_obj = uploadform.save(commit=False) - # Enforce the FILER_IS_PUBLIC_DEFAULT - file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT - file_obj.save() - clipboard_item = ClipboardItem( - clipboard=clipboard, file=file_obj) - clipboard_item.save() - json_response = { - 'thumbnail': file_obj.icons['32'], - 'alt_text': '', - 'label': str(file_obj), - } - return HttpResponse(json.dumps(json_response), - content_type=mimetype) - else: - form_errors = '; '.join(['%s: %s' % ( - field, - ', '.join(errors)) for field, errors in list(uploadform.errors.items()) - ]) - raise UploadException(self.messages['request-invalid'].format(form_errors)) - except UploadException as exception: - return HttpResponse(json.dumps({'error': str(exception)}), - content_type=mimetype) - except Exception as error: # no matter the error, we don't return a 500 code - # an error occurred trying to build the file obj and the clipboard item - # since they are interconnected, we'll delete both to cleanup - if clipboard_item: - clipboard_item.file.file.close() - clipboard_item.file.file.delete() - clipboard_item.delete() - return HttpResponse(json.dumps({'error': str(error)}), - content_type=mimetype) - finally: - if upload: - upload.close() - if file_obj and file_obj.file: - file_obj.file.close() - - def get_model_perms(self, request): + return [ + path('operations/paste_clipboard_to_folder/', + self.admin_site.admin_view(views.paste_clipboard_to_folder), + name='filer-paste_clipboard_to_folder'), + path('operations/discard_clipboard/', + self.admin_site.admin_view(views.discard_clipboard), + name='filer-discard_clipboard'), + path('operations/delete_clipboard/', + self.admin_site.admin_view(views.delete_clipboard), + name='filer-delete_clipboard'), + path('operations/upload//', + ajax_upload, + name='filer-ajax_upload'), + path('operations/upload/no_folder/', + ajax_upload, + name='filer-ajax_upload'), + ] + super().get_urls() + + def get_model_perms(self, *args, **kwargs): """ It seems this is only used for the list view. NICE :-) """ @@ -182,3 +65,98 @@ def get_model_perms(self, request): 'change': False, 'delete': False, } + + +@csrf_exempt +def ajax_upload(request, folder_id=None): + """ + Receives an upload from the uploader. Receives only one file at a time. + """ + + if not request.user.has_perm("filer.add_file"): + messages.error(request, NO_PERMISSIONS) + return JsonResponse({'error': NO_PERMISSIONS}) + + if folder_id: + try: + # Get folder + folder = Folder.objects.get(pk=folder_id) + except Folder.DoesNotExist: + messages.error(request, NO_FOLDER_ERROR) + return JsonResponse({'error': NO_FOLDER_ERROR}) + else: + folder = Folder.objects.filter(pk=request.session.get('filer_last_folder_id', 0)).first() + + # check permissions + if folder and not folder.has_add_children_permission(request): + messages.error(request, NO_PERMISSIONS_FOR_FOLDER) + return JsonResponse({'error': NO_PERMISSIONS_FOR_FOLDER}) + + if len(request.FILES) == 1: + # don't check if request is ajax or not, just grab the file + upload, filename, is_raw, mime_type = handle_request_files_upload(request) + else: + # else process the request as usual + upload, filename, is_raw, mime_type = handle_upload(request) + # TODO: Deprecated/refactor + # Get clipboad + # clipboard = Clipboard.objects.get_or_create(user=request.user)[0] + + # find the file type + for filer_class in filer_settings.FILER_FILE_MODELS: + FileSubClass = load_model(filer_class) + # TODO: What if there are more than one that qualify? + if FileSubClass.matches_file_type(filename, upload, mime_type): + FileForm = modelform_factory( + model=FileSubClass, + fields=('original_filename', 'owner', 'file') + ) + break + uploadform = FileForm({'original_filename': filename, 'owner': request.user.pk}, + {'file': upload}) + uploadform.request = request + uploadform.instance.mime_type = mime_type + if uploadform.is_valid(): + try: + validate_upload(filename, upload, request.user, mime_type) + file_obj = uploadform.save(commit=False) + # Enforce the FILER_IS_PUBLIC_DEFAULT + file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT + except ValidationError as error: + messages.error(request, str(error)) + return JsonResponse({'error': str(error)}) + file_obj.folder = folder + file_obj.save() + # TODO: Deprecated/refactor + # clipboard_item = ClipboardItem( + # clipboard=clipboard, file=file_obj) + # clipboard_item.save() + + try: + thumbnail = None + data = { + 'thumbnail': thumbnail, + 'alt_text': '', + 'label': str(file_obj), + 'file_id': file_obj.pk, + } + # prepare preview thumbnail + if isinstance(file_obj, Image): + data['thumbnail_180'] = reverse( + f"admin:filer_{file_obj._meta.model_name}_fileicon", + args=(file_obj.pk, FILER_THUMBNAIL_ICON_SIZE), + ) + data['original_image'] = file_obj.url + return JsonResponse(data) + except Exception as error: + messages.error(request, str(error)) + return JsonResponse({"error": str(error)}) + else: + for key, error_list in uploadform.errors.items(): + for error in error_list: + messages.error(request, error) + + form_errors = '; '.join(['{}'.format( + ', '.join(errors)) for errors in list(uploadform.errors.values()) + ]) + return JsonResponse({'error': str(form_errors)}, status=200) diff --git a/filer/admin/fileadmin.py b/filer/admin/fileadmin.py index 2dbadb63d..0747cd61c 100644 --- a/filer/admin/fileadmin.py +++ b/filer/admin/fileadmin.py @@ -1,80 +1,254 @@ -#-*- coding: utf-8 -*- +import mimetypes + +from django import forms +from django.contrib.admin.templatetags.admin_urls import admin_urlname +from django.contrib.admin.utils import unquote +from django.contrib.staticfiles.storage import staticfiles_storage from django.db import models -from django.utils.translation import gettext as _ -from filer.admin.common_admin import FilePermissionModelAdmin -from filer.fields.file import NonClearableFileInput +from django.http import Http404, HttpResponse, HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.urls import path, reverse +from django.utils.safestring import mark_safe +from django.utils.timezone import now +from django.utils.translation import gettext as _ + +from easy_thumbnails.engine import NoSourceGenerator +from easy_thumbnails.exceptions import InvalidImageFormatError +from easy_thumbnails.files import get_thumbnailer +from easy_thumbnails.models import Thumbnail as EasyThumbnail +from easy_thumbnails.options import ThumbnailOptions + +from .. import settings +from ..models import File +from ..settings import DEFERRED_THUMBNAIL_SIZES +from ..utils.loader import load_model +from .permissions import PrimitivePermissionAwareModelAdmin +from .tools import AdminContext, admin_url_params_encoded, popup_status + +# PBS-specific imports +from .common_admin import FilePermissionModelAdmin +from ..fields.file import NonClearableFileInput + +try: + from ..models import BaseImage +except ImportError: + BaseImage = None + +Image = load_model(settings.FILER_IMAGE_MODEL) + +class FileAdminChangeFrom(forms.ModelForm): + class Meta: + model = File + exclude = () -class FileAdmin(FilePermissionModelAdmin): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if "file" in self.fields: + self.fields["file"].widget = forms.FileInput() + + def clean(self): + from ..validation import validate_upload + cleaned_data = super().clean() + if "file" in self.changed_data and cleaned_data["file"]: + mime_type = mimetypes.guess_type(cleaned_data["file"].name)[0] or 'application/octet-stream' + file = cleaned_data["file"] + file.open("w+") # Allow for sanitizing upload + file.seek(0) + validate_upload( + file_name=cleaned_data["file"].name, + file=file.file, + owner=cleaned_data.get("owner"), + mime_type=mime_type, + ) + file.open("r") + return self.cleaned_data + + +class FileAdmin(PrimitivePermissionAwareModelAdmin): list_display = ('label',) list_per_page = 10 search_fields = ['name', 'original_filename', 'sha1', 'description'] - raw_id_fields = ('owner',) - readonly_fields = ('sha1', ) + readonly_fields = ('sha1', 'display_canonical') + + form = FileAdminChangeFrom formfield_overrides = { - models.FileField: {'widget': NonClearableFileInput}, + models.FileField: {'widget': NonClearableFileInput}, } + # PBS-specific: make fields readonly for restricted/core files def get_readonly_fields(self, request, obj=None): if obj and (obj.is_readonly_for_user(request.user) or obj.is_restricted_for_user(request.user)): - return [field.name - for field in obj.__class__._meta.fields] - self.readonly_fields = [ro_field - for ro_field in self.readonly_fields] + return [field.name for field in obj.__class__._meta.fields] + readonly = list(self.readonly_fields) self._make_restricted_field_readonly(request.user, obj) if not request.user.is_superuser: - # allow owner to be editable only by superusers - self.readonly_fields += ['owner'] - return super(FileAdmin, self).get_readonly_fields( - request, obj) + if 'owner' not in readonly: + readonly.append('owner') + return readonly + + def _make_restricted_field_readonly(self, user, obj): + """PBS: make restricted field readonly if user can't change restriction.""" + if obj and hasattr(obj, 'can_change_restricted'): + if not obj.can_change_restricted(user): + if 'restricted' not in self.readonly_fields: + self.readonly_fields = list(self.readonly_fields) + ['restricted'] @classmethod - def build_fieldsets(cls, extra_main_fields=(), extra_advanced_fields=(), extra_fieldsets=()): + def build_fieldsets(cls, extra_main_fields=(), extra_advanced_fields=(), + extra_fieldsets=()): fieldsets = ( (None, { - 'fields': ('title', 'owner', 'description',) + extra_main_fields, + 'fields': ( + 'title', + 'owner', + 'description', + ) + extra_main_fields, }), (_('Advanced'), { - # due to custom requirements: sha1 field should be hidden - # 'fields': ('file', 'sha1',) + extra_advanced_fields, - 'fields': ('file', 'name',) + extra_advanced_fields, + 'fields': ( + 'file', + 'name', + 'sha1', + 'display_canonical', + ) + extra_advanced_fields, 'classes': ('collapse',), - }), - (('Permissions'), { + }), + (_('Permissions'), { 'fields': ('restricted',), 'classes': ('collapse', 'wide', 'extrapretty'), - }) - ) + extra_fieldsets + }), + ) + extra_fieldsets + if settings.FILER_ENABLE_PERMISSIONS: + fieldsets = fieldsets + ( + (None, { + 'fields': ('is_public',) + }), + ) return fieldsets + def response_change(self, request, obj): + if ( + request.POST + and '_continue' not in request.POST + and '_saveasnew' not in request.POST + and '_addanother' not in request.POST + and '_edit_from_widget' not in request.POST + ): + if obj.folder: + url = reverse('admin:filer-directory_listing', + kwargs={'folder_id': obj.folder.id}) + else: + url = reverse( + 'admin:filer-directory_listing-unfiled_images') + url = "{}{}".format( + url, + admin_url_params_encoded(request), + ) + return HttpResponseRedirect(url) + + template_response = super().response_change(request, obj) + if hasattr(template_response, 'context_data'): + template_response.context_data["media"] = self.media + return template_response + + def render_change_form(self, request, context, add=False, change=False, + form_url='', obj=None): + context.update({ + 'show_delete': True, + 'history_url': admin_urlname(self.opts, 'history'), + 'expand_image_url': None, + 'is_popup': popup_status(request), + 'filer_admin_context': AdminContext(request), + }) + if obj and obj.mime_maintype == 'image' and obj.file.exists(): + if 'svg' in obj.mime_type: + context['expand_image_url'] = reverse(admin_urlname(Image._meta, 'expand'), args=(obj.pk,)) + else: + context['expand_image_url'] = obj.file.url + return super().render_change_form( + request=request, context=context, add=add, change=change, + form_url=form_url, obj=obj) + + def delete_view(self, request, object_id, extra_context=None): + try: + obj = self.get_queryset(request).get(pk=unquote(object_id)) + parent_folder = obj.folder + except self.model.DoesNotExist: + parent_folder = None + + if request.POST: + super().delete_view( + request=request, object_id=object_id, + extra_context=extra_context) + if parent_folder: + url = reverse('admin:filer-directory_listing', + kwargs={'folder_id': parent_folder.id}) + else: + url = reverse('admin:filer-directory_listing-unfiled_images') + url = "{}{}".format( + url, + admin_url_params_encoded(request) + ) + return HttpResponseRedirect(url) + + return super().delete_view( + request=request, object_id=object_id, + extra_context=extra_context) + def has_add_permission(self, request): return False def has_change_permission(self, request, obj=None): if not obj: - # We do this in order to prevent access to the change_list view return False - return super(FileAdmin, self).has_change_permission(request, obj) + return super().has_change_permission(request, obj) def has_view_permission(self, request, obj=None): if not obj: - # Block access to the changelist view (Django 4.2+ uses - # has_view_permission separately from has_change_permission) return False - return super(FileAdmin, self).has_view_permission(request, obj) + return super().has_view_permission(request, obj) def get_model_perms(self, request): - """ - While this method is used by Django, it is no longer used to determine if the - option is available in the changelist view, which was the original intention. - The has_xxx_permission is used instead. - """ return { - 'add': self.has_add_permission(request), - 'change': self.has_change_permission(request), + 'add': False, + 'change': False, 'delete': False, } + def display_canonical(self, instance): + canonical = instance.canonical_url + if canonical: + return mark_safe(f'{canonical}') + else: + return '-' + display_canonical.allow_tags = True + display_canonical.short_description = _('canonical URL') + + def get_urls(self): + return super().get_urls() + [ + path("icon//", + self.admin_site.admin_view(self.icon_view), + name=f"filer_{self.model._meta.model_name}_fileicon") + ] + + def icon_view(self, request, file_id: int, size: int) -> HttpResponse: + if size not in DEFERRED_THUMBNAIL_SIZES: + raise Http404 + file = get_object_or_404(File, pk=file_id) + if BaseImage and not isinstance(file, BaseImage): + raise Http404() + + try: + thumbnailer = get_thumbnailer(file) + thumbnail_options = ThumbnailOptions({'size': (size, size), "crop": True}) + thumbnail = thumbnailer.get_thumbnail(thumbnail_options, generate=True) + EasyThumbnail.objects.filter(name=thumbnail.name).update(modified=now()) + return HttpResponseRedirect(thumbnail.url) + except (InvalidImageFormatError, NoSourceGenerator): + return HttpResponseRedirect(staticfiles_storage.url('filer/icons/file-missing.svg')) + + FileAdmin.fieldsets = FileAdmin.build_fieldsets() diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 92c14b8b5..9398ac0a0 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -1,300 +1,293 @@ -# -*- coding: utf-8 -*- -import json +import itertools import os import re -from functools import partial +from collections import OrderedDict +from urllib.parse import quote as urlquote +from urllib.parse import unquote as urlunquote -from django.conf import settings -from django.contrib.admin import helpers -from django.contrib.admin.utils import quote, unquote, capfirst +from django import VERSION as DJANGO_VERSION +from django import forms +from django.conf import settings as django_settings from django.contrib import messages -from filer.admin.patched.admin_utils import get_deleted_objects -from django.core.exceptions import PermissionDenied -from django.core.paginator import Paginator, InvalidPage, EmptyPage -from django.urls import reverse, re_path -from django.db import router -from django.db.models import Q -from django.contrib.sites.models import Site -from django.contrib.contenttypes.models import ContentType -from django.contrib.auth import get_permission_codename -from django.http import HttpResponseRedirect, Http404, HttpResponse -from django.shortcuts import render +from django.contrib.admin import helpers +from django.contrib.admin.utils import capfirst, quote, unquote +from django.core.exceptions import PermissionDenied, ValidationError +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.db import models, router +from django.db.models import Case, F, OuterRef, Subquery, When +from django.db.models.functions import Coalesce, Lower +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.template.response import TemplateResponse +from django.urls import path, reverse from django.utils.encoding import force_str -from django.utils.html import escape +from django.utils.html import escape, format_html from django.utils.safestring import mark_safe -from django.utils.translation import gettext as _ -from django.utils.translation import gettext_lazy -from filer.admin.forms import CopyFilesAndFoldersForm -from filer.admin.common_admin import FolderPermissionModelAdmin -from filer.views import (popup_status, popup_param, selectfolder_status, - selectfolder_param, current_site_param, - get_param_from_request) -from filer.admin.tools import (folders_available, files_available, - get_admin_sites_for_user, - has_multi_file_action_permission, - is_valid_destination,) -from filer.models import (Folder, FolderRoot, UnfiledImages, File, tools, - ImagesWithMissingData, - Archive, Image) -from filer.settings import FILER_STATICMEDIA_PREFIX, FILER_PAGINATE_BY -from filer.utils.multi_model_qs import MultiMoldelQuerysetChain -from filer.utils.is_ajax import is_ajax +from django.utils.translation import gettext_lazy as _ from django.utils.translation import ngettext_lazy +from easy_thumbnails.models import Thumbnail + +from .. import settings +from ..cache import clear_folder_permission_cache +from ..models import File, Folder, FolderPermission, FolderRoot, ImagesWithMissingData, UnsortedImages, tools +from ..settings import ( + FILER_IMAGE_MODEL, FILER_PAGINATE_BY, FILER_TABLE_ICON_SIZE, FILER_THUMBNAIL_ICON_SIZE, TABLE_LIST_TYPE, +) +from ..thumbnail_processors import normalize_subject_location +from ..utils.compatibility import get_delete_permission +from ..utils.filer_easy_thumbnails import FilerActionThumbnailer +from ..utils.loader import load_model +from . import views +from .forms import CopyFilesAndFoldersForm, RenameFilesForm, ResizeImagesForm +from .patched.admin_utils import get_deleted_objects +from .permissions import PrimitivePermissionAwareModelAdmin +from .tools import ( + AdminContext, admin_url_params_encoded, check_files_edit_permissions, check_files_read_permissions, + check_folder_edit_permissions, check_folder_read_permissions, get_directory_listing_type, popup_status, + userperms_for_request, +) + + +Image = load_model(FILER_IMAGE_MODEL) + + +class AddFolderPopupForm(forms.ModelForm): + folder = forms.HiddenInput() -ELEM_ID = re.compile(r'.*$') + class Meta: + model = Folder + fields = ('name',) -class FolderAdmin(FolderPermissionModelAdmin): +class FolderAdmin(PrimitivePermissionAwareModelAdmin): list_display = ('name',) - list_per_page = 20 + exclude = ('parent',) + list_per_page = 100 list_filter = ('owner',) - search_fields = ['name', 'files__name'] - - actions_affecting_position = [ - 'move_to_clipboard', - 'delete_files_or_folders', - 'move_files_and_folders', - ] - actions_restrictions = [ - 'disable_restriction', - 'enable_restriction', - ] if getattr(settings, 'FILER_ENABLE_RESTRICTION_ACTIONS', True) else [] - actions = actions_restrictions + [ - 'copy_files_and_folders', - 'extract_files', - ] + actions_affecting_position - - # form fields - exclude = ('parent', 'owner', 'folder_type') - raw_id_fields = ('owner', ) - - def get_readonly_fields(self, request, obj=None): - self.readonly_fields = [ro_field - for ro_field in self.readonly_fields] - self._make_restricted_field_readonly(request.user, obj) - return super(FolderAdmin, self).get_readonly_fields( - request, obj) - - def _get_sites_available_for_user(self, user): - if user.is_superuser: - return Site.objects.all() - admin_sites = [site.id - for site in get_admin_sites_for_user(user)] - return Site.objects.filter(id__in=admin_sites) - - def formfield_for_foreignkey(self, db_field, request=None, **kwargs): - """ - Filters sites available to the user based on his roles on sites - """ - formfield = super(FolderAdmin, self).formfield_for_foreignkey( - db_field, request, **kwargs) - if request and db_field.remote_field.model is Site: - formfield.queryset = self._get_sites_available_for_user( - request.user) - return formfield - - def formfield_for_manytomany(self, db_field, request, **kwargs): - """ - Filters sites available to the user based on his roles on sites - """ - formfield = super(FolderAdmin, self).formfield_for_manytomany( - db_field, request, **kwargs) - if request and db_field.remote_field.model is Site: - formfield.queryset = self._get_sites_available_for_user( - request.user) - return formfield + search_fields = ['name'] + autocomplete_fields = ['owner'] + save_as = True # see ImageAdmin + actions = ['delete_files_or_folders', 'move_files_and_folders', + 'copy_files_and_folders', 'resize_images', 'rename_files'] + + if DJANGO_VERSION >= (5, 2): + directory_listing_template = 'admin/filer/folder/directory_listing.html' + else: # Remove this when Django 5.2 is the minimum version + directory_listing_template = 'admin/filer/folder/legacy_listing.html' + + order_by_file_fields = ['_file_size', 'original_filename', 'name', 'owner', + 'uploaded_at', 'modified_at'] def get_form(self, request, obj=None, **kwargs): """ Returns a Form class for use in the admin add view. This is used by add_view and change_view. - - Sets the parent folder and owner for the folder that will be edited - in the form """ - - folder_form = super(FolderAdmin, self).get_form( - request, obj=obj, **kwargs) - - if 'site' in folder_form.base_fields: - folder_form.base_fields['site'].widget.can_add_related = False - folder_form.base_fields['site'].widget.can_delete_related = False - folder_form.base_fields['site'].widget.can_change_related = False - - if 'shared' in folder_form.base_fields: - folder_form.base_fields['shared'].widget.can_add_related = False - - # do show share sites field only for superusers - if not request.user.is_superuser: - folder_form.base_fields.pop('shared', None) - - # check if site field should be visible in the form or not - is_core_folder = False - if obj and obj.pk: - # change view - parent_id = obj.parent_id - is_core_folder = obj.is_core() + parent_id = request.GET.get('parent_id', None) + if not parent_id: + parent_id = request.POST.get('parent_id', None) + if parent_id: + return AddFolderPopupForm else: - # add view - parent_id = get_param_from_request(request, 'parent_id') - folder_form.base_fields.pop('restricted', None) - - # shouldn't show site field if has parent or is core folder - pop_site_fields = parent_id or is_core_folder - if pop_site_fields: - folder_form.base_fields.pop('site', None) - folder_form.base_fields.pop('shared', None) - - def clean(form_instance): - # make sure owner and parent are passed to the model clean method - current_folder = form_instance.instance - if not current_folder.owner: - current_folder.owner = request.user - if parent_id: - current_folder.parent = Folder.objects.get(id=parent_id) - return form_instance.cleaned_data - - folder_form.clean = clean - return folder_form + folder_form = super().get_form( + request, obj=None, **kwargs) + + def folder_form_clean(form_obj): + cleaned_data = form_obj.cleaned_data + folders_with_same_name = self.get_queryset(request).filter( + parent=form_obj.instance.parent, + name=cleaned_data['name']) + if form_obj.instance.pk: + folders_with_same_name = folders_with_same_name.exclude( + pk=form_obj.instance.pk) + if folders_with_same_name.exists(): + raise ValidationError( + 'Folder with this name already exists.') + return cleaned_data + + # attach clean to the default form rather than defining a new form class + folder_form.clean = folder_form_clean + return folder_form + + def save_form(self, request, form, change): + """ + Given a ModelForm return an unsaved instance. ``change`` is True if + the object is being changed, and False if it's being added. + """ + if not change: + # New folder invalidates the folder permission cache (or it will not be visible) + clear_folder_permission_cache(request.user) + r = form.save(commit=False) + parent_id = request.GET.get('parent_id', None) + if not parent_id: + parent_id = request.POST.get('parent_id', None) + if parent_id: + parent = self.get_queryset(request).get(id=parent_id) + r.parent = parent + return r + + def response_change(self, request, obj): + """ + Overrides the default to be able to forward to the directory listing + instead of the default change_list_view + """ + if ( + request.POST + and '_continue' not in request.POST + and '_saveasnew' not in request.POST + and '_addanother' not in request.POST + ): + + if obj.parent: + url = reverse('admin:filer-directory_listing', + kwargs={'folder_id': obj.parent.id}) + else: + url = reverse('admin:filer-directory_listing-root') + url = "{}{}".format( + url, + admin_url_params_encoded(request), + ) + return HttpResponseRedirect(url) + return super().response_change(request, obj) + + def render_change_form(self, request, context, add=False, change=False, + form_url='', obj=None): + info = self.model._meta.app_label, self.model._meta.model_name + extra_context = {'show_delete': True, + 'history_url': 'admin:%s_%s_history' % info, + 'is_popup': popup_status(request), + 'filer_admin_context': AdminContext(request)} + context.update(extra_context) + return super().render_change_form( + request=request, context=context, add=add, + change=change, form_url=form_url, obj=obj) + + def delete_view(self, request, object_id, extra_context=None): + """ + Overrides the default to enable redirecting to the directory view after + deletion of a folder. + + we need to fetch the object and find out who the parent is + before super, because super will delete the object and make it + impossible to find out the parent folder to redirect to. + + The delete_view breaks with polymorphic models if the cascade will + try delete objects that are of different polymorphic types + (AttributeError: 'File' object has no attribute 'file_ptr'). + The default implementation of the delete_view is hard to override + without just copying the whole big thing. Since we've already done + the overriding work on the delete_files_or_folders admin action, we + can re-use that here instead. + """ + try: + obj = self.get_queryset(request).get(pk=unquote(object_id)) + parent_folder = obj.parent + except self.model.DoesNotExist: + parent_folder = None + + if request.POST: + self.delete_files_or_folders( + request, + files_queryset=File.objects.none(), + folders_queryset=self.get_queryset(request).filter(id=object_id) + ) + if parent_folder: + url = reverse('admin:filer-directory_listing', + kwargs={'folder_id': parent_folder.id}) + else: + url = reverse('admin:filer-directory_listing-root') + url = "{}{}".format( + url, + admin_url_params_encoded(request), + ) + return HttpResponseRedirect(url) + + return self.delete_files_or_folders( + request, + files_queryset=File.objects.none(), + folders_queryset=self.get_queryset(request).filter(id=object_id) + ) def icon_img(self, xs): - return mark_safe(('') % FILER_STATICMEDIA_PREFIX) + return format_html('Folder Icon', django_settings.STATIC_ROOT) + icon_img.allow_tags = True def get_urls(self): - urls = super(FolderAdmin, self).get_urls() - url_patterns = [ + return [ # we override the default list view with our own directory listing # of the root directories - re_path(r'^$', self.admin_site.admin_view(self.directory_listing), - name='filer-directory_listing-root'), - re_path(r'^(?P\d+)/list/$', - self.admin_site.admin_view(self.directory_listing), - name='filer-directory_listing'), - re_path(r'^make_folder/$', - self.admin_site.admin_view(self.make_folder), - name='filer-directory_listing-make_root_folder'), - re_path(r'^images_with_missing_data/$', - self.admin_site.admin_view(self.directory_listing), - {'viewtype': 'images_with_missing_data'}, - name='filer-directory_listing-images_with_missing_data'), - re_path(r'^unfiled_images/$', - self.admin_site.admin_view(self.directory_listing), - {'viewtype': 'unfiled_images'}, - name='filer-directory_listing-unfiled_images'), - re_path(r'^destination_folders/$', - self.admin_site.admin_view(self.destination_folders), - name='filer-destination_folders'), - ] - url_patterns.extend(urls) - return url_patterns - - def add_view(self, request, *args, **kwargs): - raise PermissionDenied - - def make_folder(self, request, folder_id=None, *args, **kwargs): - response = super(FolderAdmin, self).add_view(request, *args, **kwargs) - - # since filer overwrites django's dismissPopup we need to make sure - # that the response from django's add_view is the - # dismiss popup response so we can overwrite it - # since only save button appears its enough to make sure that the - # request is a POST from a popup view and the response is a - # successed HttpResponse - if (request.method == 'POST' and popup_status(request) and - not isinstance(response, HttpResponseRedirect)): - # In Django 4.2+, a successful popup add returns status 200 with - # dismiss script. A form validation error also returns 200 but - # with a re-rendered form. Only show dismiss when there are no - # form errors (i.e. no 'errorlist' in the rendered content). - if hasattr(response, 'render'): - response = response.render() - content = getattr(response, 'content', b'') - if response.status_code == 200 and b'errorlist' not in content: - return HttpResponse('') - return response - - def delete_view(self, request, object_id, extra_context=None): - # override delete view since we need to hide already trashed - # files/folders - opts = self.model._meta - obj = self.get_object(request, unquote(object_id)) - - if obj is None: - raise Http404(_('%(name)s object with primary key %(key)r ' - 'does not exist.') % { - 'name': force_str(opts.verbose_name), - 'key': escape(object_id)}) - if obj.parent: - redirect_url = reverse('admin:filer-directory_listing', - kwargs={'folder_id': obj.parent_id}) - else: - redirect_url = reverse('admin:filer-directory_listing-root') - redirect_url = "%s%s%s%s" % (redirect_url, popup_param(request), - selectfolder_param(request, "&"), - current_site_param(request),) - - setattr(request, 'current_dir_list_folder', - obj.parent or FolderRoot()) - - response = self.delete_files_or_folders( - request, - File.objects.none(), - Folder.objects.filter(id=obj.id)) - - if response is None: - return HttpResponseRedirect(redirect_url) - return response + path('', + self.admin_site.admin_view(self.directory_listing), + name='filer-directory_listing-root'), + + path('last/', + self.admin_site.admin_view(self.directory_listing), + {'viewtype': 'last'}, + name='filer-directory_listing-last'), + + path('/list/', + self.admin_site.admin_view(self.directory_listing), + name='filer-directory_listing'), + + path('/make_folder/', + self.admin_site.admin_view(views.make_folder), + name='filer-directory_listing-make_folder'), + path('make_folder/', + self.admin_site.admin_view(views.make_folder), + name='filer-directory_listing-make_root_folder'), + + path('images_with_missing_data/', + self.admin_site.admin_view(self.directory_listing), + {'viewtype': 'images_with_missing_data'}, + name='filer-directory_listing-images_with_missing_data'), + + path('unfiled_images/', + self.admin_site.admin_view(self.directory_listing), + {'viewtype': 'unfiled_images'}, + name='filer-directory_listing-unfiled_images'), + ] + super().get_urls() # custom views def directory_listing(self, request, folder_id=None, viewtype=None): - user = request.user - clipboard = tools.get_user_clipboard(user) - file_type = request.GET.get('file_type', None) + if not request.user.has_perm("filer.can_use_directory_listing"): + raise PermissionDenied() + clipboard = tools.get_user_clipboard(request.user) if viewtype == 'images_with_missing_data': folder = ImagesWithMissingData() - folder_file_qs = folder.files elif viewtype == 'unfiled_images': - folder = UnfiledImages() - folder_file_qs = folder.files - elif folder_id is None: - folder = FolderRoot() - folder_file_qs = File.objects.none() - else: + # pass user in the class invocation, so that we can get + # access to the current user instance in the class + folder = UnsortedImages(user=request.user) + elif viewtype == 'last': + last_folder_id = request.session.get('filer_last_folder_id') try: - folder = Folder.objects.get(id=folder_id) - if not self.can_view_folder_content(request, folder): - raise PermissionDenied - except Folder.DoesNotExist: - raise Http404 - if file_type == 'image': - folder_file_qs = Image.objects.filter(folder=folder) + self.get_queryset(request).get(id=last_folder_id) + except self.model.DoesNotExist: + url = reverse('admin:filer-directory_listing-root') + url = f"{url}{admin_url_params_encoded(request)}" else: - folder_file_qs = File.objects.filter(folder=folder) - - if file_type == 'image': - all_file_qs = Image.objects + url = reverse('admin:filer-directory_listing', kwargs={'folder_id': last_folder_id}) + url = f"{url}{admin_url_params_encoded(request)}" + return HttpResponseRedirect(url) + elif folder_id is None: + folder = FolderRoot() else: - all_file_qs = File.objects - - setattr(request, 'current_dir_list_folder', folder) - # search - q = request.GET.get('q', None) - if q: - search_terms = q.split(" ") + folder = get_object_or_404(self.get_queryset(request), id=folder_id) + request.session['filer_last_folder_id'] = folder_id + + list_type = get_directory_listing_type(request) or settings.FILER_FOLDER_ADMIN_DEFAULT_LIST_TYPE + if list_type == TABLE_LIST_TYPE: + # Prefetch thumbnails for table view + size = f"{FILER_TABLE_ICON_SIZE}x{FILER_TABLE_ICON_SIZE}" + size_x2 = f"{2 * FILER_TABLE_ICON_SIZE}x{2 * FILER_TABLE_ICON_SIZE}" else: - search_terms = [] - q = '' + # Prefetch thumbnails for thumbnail view + size = f"{FILER_THUMBNAIL_ICON_SIZE}x{FILER_THUMBNAIL_ICON_SIZE}" + size_x2 = f"{2 * FILER_THUMBNAIL_ICON_SIZE}x{2 * FILER_THUMBNAIL_ICON_SIZE}" # Check actions to see if any are available on this changelist - # do not let any actions available if we're in search view since - # there is no way to detect the current folder - actions = {} - if not search_terms: - actions = self.get_actions(request) + actions = self.get_actions(request) # Remove action checkboxes if there aren't any actions available. list_display = list(self.list_display) @@ -304,77 +297,127 @@ def directory_listing(self, request, folder_id=None, viewtype=None): except ValueError: pass + # search + q = request.GET.get('q') + if q: + search_terms = urlunquote(q).split(' ') + search_mode = True + else: + search_terms = [] + q = '' + search_mode = False + # Limit search results to current folder. limit_search_to_folder = request.GET.get('limit_search_to_folder', False) in (True, 'on') - current_site = request.GET.get('current_site', None) - _filter_folders = partial(folders_available, current_site, request.user) - _filter_files = partial(files_available, current_site, request.user) if len(search_terms) > 0: if folder and limit_search_to_folder and not folder.is_root: - descendants = folder.get_descendants( - include_self=True).filter(deleted_at__isnull=True) - folder_qs = _filter_folders(descendants.exclude(id=folder.id)) - file_qs = _filter_files(all_file_qs.filter(folder__in=descendants)) + desc_folder_ids = folder.get_descendants_ids() + # Do not include current folder itself in search results. + folder_qs = Folder.objects.filter(pk__in=desc_folder_ids) + # Limit search results to files in the current folder or any + # nested folder. + file_qs = File.objects.filter(folder_id__in=desc_folder_ids + [folder.pk]) else: - folder_qs = _filter_folders(Folder.objects.all()) - file_qs = _filter_files(all_file_qs) - - def folder_search_qs(qs, terms=[]): - for term in terms: - qs = qs.filter(Q(name__icontains=term) | - Q(owner__username__icontains=term) | - Q(owner__first_name__icontains=term) | - Q(owner__last_name__icontains=term)) - return qs - - def file_search_qs(qs, terms=[]): - for term in terms: - qs = qs.filter(Q(name__icontains=term) | - Q(description__icontains=term) | - Q(original_filename__icontains=term) | - Q(owner__username__icontains=term) | - Q(owner__first_name__icontains=term) | - Q(owner__last_name__icontains=term)) - return qs - - folder_qs = folder_search_qs(folder_qs, search_terms) - file_qs = file_search_qs(file_qs, search_terms) + folder_qs = self.get_queryset(request) + file_qs = File.objects.all() + folder_qs = self.filter_folder(folder_qs, search_terms).prefetch_related("children", "all_files") + file_qs = self.filter_file(file_qs, search_terms) + show_result_count = True else: - folder_qs = _filter_folders(folder.children.all()) - file_qs = _filter_files(folder_file_qs) + folder_qs = folder.children.all() + file_qs = folder.files.all() show_result_count = False - folder_qs = folder_qs.order_by('name') - file_qs = file_qs.order_by('name') - if show_result_count: - show_result_count = { - 'files_found': file_qs.count(), - 'folders_found': folder_qs.count(), + folder_qs = folder_qs.order_by('name').select_related("owner") + order_by = request.GET.get('order_by', None) + order_by_annotation = None + if order_by is None: + order_by_annotation = Lower(Coalesce( + Case( + When(name__exact='', then=None), + When(name__isnull=False, then='name') + ), + 'original_filename' + )) + + order_by = order_by.split(',') if order_by else [] + order_by = [field for field in order_by + if re.sub(r'^-', '', field) in self.order_by_file_fields] + if len(order_by) > 0: + file_qs = file_qs.order_by(*order_by) + elif order_by_annotation: + file_qs = file_qs.order_by(order_by_annotation) + + if folder.is_root and not search_mode: + virtual_items = folder.virtual_folders + else: + virtual_items = [] + + perms = FolderPermission.objects.get_read_id_list(request.user) + if perms != 'All': + file_qs = file_qs.filter( + models.Q(folder__id__in=perms) + | models.Q(folder_id__isnull=True) + | models.Q(owner=request.user) + ) + folder_qs = folder_qs.filter(models.Q(id__in=perms) | models.Q(owner=request.user)) + root_exclude_kwargs = {'parent__isnull': False, 'parent__id__in': perms} + else: + root_exclude_kwargs = {'parent__isnull': False} + if folder.is_root: + folder_qs = folder_qs.exclude(**root_exclude_kwargs) + + # Annotate thumbnail status + thumbnail_qs = ( + Thumbnail.objects + .filter( + source__name=OuterRef("file"), + modified__gte=F("source__modified"), + ) + .exclude(name__contains="upscale") # TODO: Check WHY not used by directory listing + .order_by("-modified") + ) + file_qs = file_qs.annotate( + thumbnail_name=Subquery(thumbnail_qs.filter(name__contains=f"__{size}_").values_list("name")[:1]), + thumbnailx2_name=Subquery(thumbnail_qs.filter(name__contains=f"__{size_x2}_").values_list("name")[:1]) + ).select_related("owner") + + try: + permissions = { + 'has_edit_permission': folder.has_edit_permission(request), + 'has_read_permission': folder.has_read_permission(request), + 'has_add_children_permission': + folder.has_add_children_permission(request), } + except: # noqa + permissions = {} - items = MultiMoldelQuerysetChain([folder_qs, file_qs]) + items = list(itertools.chain(folder_qs, file_qs)) paginator = Paginator(items, FILER_PAGINATE_BY) # Are we moving to clipboard? if request.method == 'POST' and '_save' not in request.POST: - for f in file_qs: + # TODO: Refactor/remove clipboard parts + for f in folder_qs: if "move-to-clipboard-%d" % (f.id,) in request.POST: - if (f.is_readonly_for_user(user) or - f.is_restricted_for_user(user)): + clipboard = tools.get_user_clipboard(request.user) + if f.has_edit_permission(request): + tools.move_file_to_clipboard([f], clipboard) + return HttpResponseRedirect(request.get_full_path()) + else: raise PermissionDenied - tools.move_file_to_clipboard(request, [f], clipboard) - return HttpResponseRedirect(request.get_full_path()) selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) # Actions with no confirmation - if (actions and request.method == 'POST' and - 'index' in request.POST and '_save' not in request.POST): + if ( + actions and request.method == 'POST' + and 'index' in request.POST + and '_save' not in request.POST + ): if selected: - response = self.response_action(request, - files_queryset=file_qs, - folders_queryset=folder_qs) + response = self.response_action(request, files_queryset=file_qs, folders_queryset=folder_qs) if response: return response else: @@ -383,71 +426,127 @@ def file_search_qs(qs, terms=[]): self.message_user(request, msg) # Actions with confirmation - if (actions and request.method == 'POST' and - helpers.ACTION_CHECKBOX_NAME in request.POST and - 'index' not in request.POST and '_save' not in request.POST): + if ( + actions and request.method == 'POST' + and helpers.ACTION_CHECKBOX_NAME in request.POST + and 'index' not in request.POST + and '_save' not in request.POST + ): if selected: - response = self.response_action(request, - files_queryset=file_qs, - folders_queryset=folder_qs) + response = self.response_action(request, files_queryset=file_qs, folders_queryset=folder_qs) if response: return response # Build the action form and populate it with available actions. if actions: action_form = self.action_form(auto_id=None) - action_form.fields['action'].choices = \ - self.get_action_choices(request) + action_form.fields['action'].choices = self.get_action_choices(request) else: action_form = None - selection_note_all = ngettext_lazy( - '%(total_count)s selected', - 'All %(total_count)s selected', - paginator.count - ) - # Make sure page request is an int. If not, deliver first page. - try: - page = int(request.GET.get('page', '1')) - except ValueError: - page = 1 + selection_note_all = ngettext_lazy('%(total_count)s selected', + 'All %(total_count)s selected', paginator.count) # If page request (9999) is out of range, deliver last page of results. try: - paginated_items = paginator.page(page) - except (EmptyPage, InvalidPage): + paginated_items = paginator.page(request.GET.get('page', 1)) + except PageNotAnInteger: + paginated_items = paginator.page(1) + except EmptyPage: paginated_items = paginator.page(paginator.num_pages) - context = self.admin_site.each_context(request) + + context = self.admin_site.each_context(request) context.update({ - 'folder': folder, - 'user_clipboard': clipboard, - 'clipboard_files': clipboard.files.distinct(), - 'current_site': get_param_from_request(request, 'current_site'), - 'paginator': paginator, - 'paginated_items': paginated_items, - 'current_url': request.path, - 'title': 'Directory listing for %s' % folder.name, - 'search_string': ' '.join(search_terms), - 'q': q, - 'show_result_count': show_result_count, - 'limit_search_to_folder': limit_search_to_folder, - 'is_popup': popup_status(request), - 'select_folder': selectfolder_status(request), - # needed in the admin/base.html template for logout links - 'root_path': reverse('admin:index'), - 'action_form': action_form, - 'actions_on_top': self.actions_on_top, - 'actions_on_bottom': self.actions_on_bottom, - 'actions_selection_counter': self.actions_selection_counter, - 'selection_note': _('0 of %(cnt)s selected') % { - 'cnt': len(paginated_items.object_list)}, - 'selection_note_all': selection_note_all % { - 'total_count': paginator.count}, - 'media': self.media, - 'file_type': file_type, - }) - response = render(request, 'admin/filer/folder/directory_listing.html', context) - return response + 'folder': folder, + 'clipboard_files': File.objects.filter( + in_clipboards__clipboarditem__clipboard__user=request.user + ).distinct(), + 'paginator': paginator, + 'paginated_items': paginated_items, + 'virtual_items': virtual_items, + 'uploader_connections': settings.FILER_UPLOADER_CONNECTIONS, + 'max_files': settings.FILER_UPLOADER_MAX_FILES, + 'max_filesize': settings.FILER_UPLOADER_MAX_FILE_SIZE, + 'permissions': permissions, + 'permstest': userperms_for_request(folder, request), + 'current_url': request.path, + 'title': _('Directory listing for %(folder_name)s') % {'folder_name': folder.name}, + 'search_string': ' '.join(search_terms), + 'q': urlquote(q), + 'show_result_count': show_result_count, + 'folder_children': folder_qs, + 'folder_files': file_qs, + 'thumbnail_size': FILER_TABLE_ICON_SIZE if list_type == TABLE_LIST_TYPE else FILER_THUMBNAIL_ICON_SIZE, + 'limit_search_to_folder': limit_search_to_folder, + 'is_popup': popup_status(request), + 'filer_admin_context': AdminContext(request), + # needed in the admin/base.html template for logout links + 'root_path': reverse('admin:index'), + 'action_form': action_form, + 'actions_on_top': self.actions_on_top, + 'actions_on_bottom': self.actions_on_bottom, + 'actions_selection_counter': self.actions_selection_counter, + 'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(paginated_items.object_list)}, + 'selection_note_all': selection_note_all % {'total_count': paginator.count}, + 'list_type': list_type, + 'list_type_template': settings.FILER_FOLDER_ADMIN_LIST_TYPE_SWITCHER_SETTINGS[list_type]['template'], + 'media': self.media, + 'enable_permissions': settings.FILER_ENABLE_PERMISSIONS, + 'can_make_folder': request.user.is_superuser or (folder.is_root and settings.FILER_ALLOW_REGULAR_USERS_TO_ADD_ROOT_FOLDERS) or permissions.get("has_add_children_permission"), + }) + return TemplateResponse(request, self.directory_listing_template, context) + + def filter_folder(self, qs, terms=()): + # Source: https://github.com/django/django/blob/1.7.1/django/contrib/admin/options.py#L939-L947 flake8: noqa + def construct_search(field_name): + if field_name.startswith('^'): + return "%s__istartswith" % field_name[1:] + elif field_name.startswith('='): + return "%s__iexact" % field_name[1:] + elif field_name.startswith('@'): + return "%s__search" % field_name[1:] + else: + return "%s__icontains" % field_name + + for term in terms: + filters = models.Q() + for filter_ in self.search_fields: + filters |= models.Q(**{construct_search(filter_): term}) + for filter_ in self.get_owner_filter_lookups(): + filters |= models.Q(**{filter_: term}) + qs = qs.filter(filters) + return qs + + def filter_file(self, qs, terms=()): + for term in terms: + filters = (models.Q(name__icontains=term) + | models.Q(description__icontains=term) + | models.Q(original_filename__icontains=term)) + for filter_ in self.get_owner_filter_lookups(): + filters |= models.Q(**{filter_: term}) + qs = qs.filter(filters) + return qs + + @property + def owner_search_fields(self): + """ + Returns all the fields that are CharFields except for password from the + User model. For the built-in User model, that means username, + first_name, last_name, and email. + """ + from django.contrib.auth import get_user_model + User = get_user_model() + + return [ + field.name for field in User._meta.fields + if isinstance(field, models.CharField) and field.name != 'password' + ] + + def get_owner_filter_lookups(self): + return [ + f'owner__{field}__icontains' + for field in self.owner_search_fields + ] def response_action(self, request, files_queryset, folders_queryset): """ @@ -492,8 +591,8 @@ def response_action(self, request, files_queryset, folders_queryset): # the action explicitly on all objects. selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) if not selected and not select_across: - # Reminder that something needs to be selected or - # nothing will happen + # Reminder that something needs to be selected or nothing + # will happen msg = _("Items must be selected in order to perform " "actions on them. No items have been changed.") self.message_user(request, msg) @@ -529,162 +628,196 @@ def response_action(self, request, files_queryset, folders_queryset): return None def get_actions(self, request): - actions = super(FolderAdmin, self).get_actions(request) + if settings.FILER_ENABLE_PERMISSIONS: + actions = OrderedDict() + actions['files_set_public'] = self.get_action('files_set_public') + actions['files_set_private'] = self.get_action('files_set_private') + actions.update(super().get_actions(request)) + else: + actions = super().get_actions(request) + + if 'delete_selected' in actions: + del actions['delete_selected'] + return actions + + def move_to_clipboard(self, request, files_queryset, folders_queryset): + """ + Action which moves the selected files and files in selected folders + to clipboard. + """ - def pop_actions(*actions_to_remove): - for action in actions_to_remove: - actions.pop(action, None) + if not self.has_change_permission(request): + raise PermissionDenied - pop_actions('delete_selected') + if request.method != 'POST': + return None - if not self.has_delete_permission(request, None): - pop_actions(*self.actions_affecting_position) + clipboard = tools.get_user_clipboard(request.user) - current_folder = getattr(request, 'current_dir_list_folder', None) - if not current_folder: - return actions + check_files_edit_permissions(request, files_queryset) + check_folder_edit_permissions(request, folders_queryset) - if current_folder.is_root: - pop_actions('extract_files') + # TODO: Display a confirmation page if moving more than X files to + # clipboard? - if (not current_folder.is_root and - current_folder.is_readonly_for_user(request.user)): - return {} + # We define it like that so that we can modify it inside the + # move_files function + files_count = [0] - if isinstance(current_folder, UnfiledImages): - pop_actions('enable_restriction', 'copy_files_and_folders', - 'disable_restriction') - return actions + def move_files(files): + files_count[0] += tools.move_file_to_clipboard(files, clipboard) - # actions are available for descendants not for current folder - if not (current_folder.can_change_restricted(request.user) and - not current_folder.restricted): - pop_actions('enable_restriction', 'disable_restriction') + def move_folders(folders): + for f in folders: + move_files(f.files) + move_folders(f.children.all()) - if (actions and current_folder.is_restricted_for_user(request.user)): - # allow only copy - if 'copy_files_and_folders' in actions: - return {'copy_files_and_folders': - actions['copy_files_and_folders']} + move_files(files_queryset) + move_folders(folders_queryset) - return actions + self.message_user(request, _("Successfully moved %(count)d files to " + "clipboard.") % {"count": files_count[0]}) - def move_to_clipboard(self, request, files_queryset, folders_queryset): + return None + + move_to_clipboard.short_description = _("Move selected files to clipboard") + + def files_set_public_or_private(self, request, set_public, files_queryset, + folders_queryset): """ - Action which moves the selected files to clipboard. + Action which enables or disables permissions for selected files and + files in selected folders to clipboard (set them private or public). """ - if request.method != 'POST': - return None - if not has_multi_file_action_permission( - request, files_queryset, - Folder.objects.none()): + if not self.has_change_permission(request): raise PermissionDenied - clipboard = tools.get_user_clipboard(request.user) + permissions_enabled = settings.FILER_ENABLE_PERMISSIONS + + if request.method != 'POST' or not permissions_enabled: + return None + + check_files_edit_permissions(request, files_queryset) + check_folder_edit_permissions(request, folders_queryset) + # We define it like that so that we can modify it inside the - # move_files function + # set_files function files_count = [0] - def move_files(files): - files_count[0] += tools.move_file_to_clipboard( - request, files, clipboard) + def set_files(files): + for f in files: + if f.is_public != set_public: + f.is_public = set_public + f.save() + files_count[0] += 1 - move_files(files_queryset) - if files_count[0] > 0: - self.message_user(request, - _("Successfully moved %(count)d files to clipboard.") % { - "count": files_count[0], }) + def set_folders(folders): + for f in folders: + set_files(f.files) + set_folders(f.children.all()) + + set_files(files_queryset) + set_folders(folders_queryset) + + if set_public: + self.message_user(request, _("Successfully disabled permissions for %(count)d files.") % {"count": files_count[0], }) else: - self.message_user(request, - _("No files were moved to clipboard.")) + self.message_user(request, _("Successfully enabled permissions for %(count)d files.") % {"count": files_count[0], }) + return None - move_to_clipboard.short_description = gettext_lazy( - "Move selected files to clipboard") - - def _get_unique_items(self, deletable_items, unique_items, depth=5): - count = 0 - if depth < 0: - return count - for elem in deletable_items: - if isinstance(elem, (list, tuple)): - count += self._get_unique_items(elem, unique_items, depth-1) - elif isinstance(elem, str): - match = ELEM_ID.match(elem) - elem_id = match and match.group('file_id') - if elem_id and elem_id not in unique_items: - unique_items.append(elem_id) - count += 1 - return count - - def delete_files_or_folders(self, request, - files_queryset, folders_queryset): + def files_set_private(self, request, files_queryset, folders_queryset): + return self.files_set_public_or_private(request, False, files_queryset, + folders_queryset) + + files_set_private.short_description = _("Enable permissions for selected files") + + def files_set_public(self, request, files_queryset, folders_queryset): + return self.files_set_public_or_private(request, True, files_queryset, + folders_queryset) + + files_set_public.short_description = _("Disable permissions for selected files") + + def delete_files_or_folders(self, request, files_queryset, folders_queryset): """ Action which deletes the selected files and/or folders. This action first displays a confirmation page whichs shows all the - deleteable files and/or folders, or, if the user has no permission - on one of the related childs (foreignkeys), a "permission denied" - message. + deletable files and/or folders, or, if the user has no permission on + one of the related childs (foreignkeys), a "permission denied" message. - Next, it delets all selected files and/or folders and redirects back - to the folder. + Next, it deletes all selected files and/or folders and redirects back to + the folder. """ + opts = self.model._meta + app_label = opts.app_label # Check that the user has delete permission for the actual model if not self.has_delete_permission(request): raise PermissionDenied - if not has_multi_file_action_permission( - request, files_queryset, folders_queryset): - raise PermissionDenied - - opts = self.model._meta - app_label = opts.app_label - current_folder = self._get_current_action_folder( request, files_queryset, folders_queryset) all_protected = [] + # Populate deletable_objects, a data structure of all related objects + # that will also be deleted. Hopefully this also checks for necessary + # permissions. + # TODO: Check if permissions are really verified using = router.db_for_write(self.model) - deletable_files, perms_needed_files, protected_files = \ - get_deleted_objects( - files_queryset, files_queryset.model._meta, - request.user, self.admin_site, using) - files_count = self._get_unique_items(deletable_files, unique_items=[]) - deletable_folders, perms_needed_folders, protected_folders = \ - get_deleted_objects( - folders_queryset, folders_queryset.model._meta, - request.user, self.admin_site, using) - folders_count = self._get_unique_items(deletable_folders, unique_items=[]) + deletable_files, model_count_files, perms_needed_files, protected_files = get_deleted_objects(files_queryset, files_queryset.model._meta, request.user, self.admin_site, using) + deletable_folders, model_count_folder, perms_needed_folders, protected_folders = get_deleted_objects(folders_queryset, folders_queryset.model._meta, request.user, self.admin_site, using) all_protected.extend(protected_files) all_protected.extend(protected_folders) all_deletable_objects = [deletable_files, deletable_folders] all_perms_needed = perms_needed_files.union(perms_needed_folders) - # The user has already confirmed the deletion. - # Do the deletion and return a None to display the change list - # view again. + # The user has already confirmed the deletion. Do the deletion and + # return a None to display the change list view again. if request.POST.get('post'): if all_perms_needed: raise PermissionDenied - total_count = files_count + folders_count - if total_count: + n = files_queryset.count() + folders_queryset.count() + if n: # delete all explicitly selected files - for file_obj in files_queryset: - self.log_deletion(request, file_obj, force_str(file_obj)) - file_obj.delete() + if DJANGO_VERSION >= (5, 1): + self.log_deletions(request, files_queryset) + # Still need to delete files individually (not only the database entries) + for f in files_queryset: + f.delete() + else: + for f in files_queryset: + self.log_deletion(request, f, force_str(f)) + f.delete() + # delete all files in all selected folders and their children + # This would happen automatically by ways of the delete + # cascade, but then the individual .delete() methods won't be + # called and the files won't be deleted from the filesystem. + folder_ids = set() + for folder in folders_queryset: + folder_ids.add(folder.id) + folder_ids.update(folder.get_descendants_ids()) + if DJANGO_VERSION >= (5, 1): + qs = File.objects.filter(folder__in=folder_ids) + self.log_deletions(request, qs) + # Still need to delete files individually (not only the database entries) + for f in qs: + f.delete() + else: + for f in File.objects.filter(folder__in=folder_ids): + self.log_deletion(request, f, force_str(f)) + f.delete() # delete all folders - for file_id in folders_queryset.values_list('id', flat=True): - file_obj = Folder.objects.get(id=file_id) - self.log_deletion(request, file_obj, force_str(file_obj)) - file_obj.delete() - self.message_user(request, - _("Successfully deleted %(count)d files " - "and/or folders.") % {"count": total_count, }) + if DJANGO_VERSION >= (5, 1): + self.log_deletions(request, files_queryset) + folders_queryset.delete() + else: + for f in folders_queryset: + self.log_deletion(request, f, force_str(f)) + f.delete() + self.message_user(request, _("Successfully deleted %(count)d files and/or folders.") % {"count": n, }) # Return None to display the change list page again. return None @@ -693,7 +826,8 @@ def delete_files_or_folders(self, request, else: title = _("Are you sure?") - context = { + context = self.admin_site.each_context(request) + context.update({ "title": title, "instance": current_folder, "breadcrumbs_action": _("Delete files and/or folders"), @@ -704,17 +838,20 @@ def delete_files_or_folders(self, request, "protected": all_protected, "opts": opts, 'is_popup': popup_status(request), - 'select_folder': selectfolder_status(request), + 'filer_admin_context': AdminContext(request), "root_path": reverse('admin:index'), "app_label": app_label, "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, - } - context.update(self.admin_site.each_context(request)) + }) + # Display the destination folder selection page - return render(request, "admin/filer/delete_selected_files_confirmation.html", context) + return TemplateResponse( + request, + "admin/filer/delete_selected_files_confirmation.html", + context + ) - delete_files_or_folders.short_description = gettext_lazy( - "Delete selected files and/or folders") + delete_files_or_folders.short_description = _("Delete selected files and/or folders") # Copied from django.contrib.admin.util def _format_callback(self, obj, user, admin_site, perms_needed): @@ -726,297 +863,236 @@ def _format_callback(self, obj, user, admin_site, perms_needed): opts.app_label, opts.object_name.lower()), None, (quote(obj._get_pk_val()),)) - get_permission_codename('delete', opts) - p = '%s.%s' % (opts.app_label, - get_permission_codename('delete', opts)) - # Also check permissions on individual objects - if not user.has_perm(p, obj) and not user.has_perm(p): + p = get_delete_permission(opts) + if not user.has_perm(p): perms_needed.add(opts.verbose_name) # Display a link to the admin page. - return mark_safe('%s: %s' % - (escape(capfirst(opts.verbose_name)), - admin_url, - escape(obj.actual_name))) + return format_html('{}: {}', escape(capfirst(opts.verbose_name)), admin_url, escape(obj)) else: # Don't display link to edit, because it either has no # admin or is edited inline. - return '%s: %s' % (capfirst(opts.verbose_name), - force_str(obj.actual_name)) - - def _get_current_action_folder(self, request, files_qs, folders_qs): - current_folder = getattr(request, 'current_dir_list_folder', None) - if current_folder: - return current_folder - - if files_qs: - return files_qs[0].folder - elif folders_qs: - return folders_qs[0].parent + return f'{capfirst(opts.verbose_name)}: {force_str(obj)}' + + def _check_copy_perms(self, request, files_queryset, folders_queryset): + try: + check_files_read_permissions(request, files_queryset) + check_folder_read_permissions(request, folders_queryset) + except PermissionDenied: + return True + return False + + def _check_move_perms(self, request, files_queryset, folders_queryset): + try: + check_files_read_permissions(request, files_queryset) + check_folder_read_permissions(request, folders_queryset) + check_files_edit_permissions(request, files_queryset) + check_folder_edit_permissions(request, folders_queryset) + except PermissionDenied: + return True + return False + + def _get_current_action_folder(self, request, files_queryset, + folders_queryset): + if files_queryset: + return files_queryset[0].folder + elif folders_queryset: + return folders_queryset[0].parent else: return None def _list_folders_to_copy_or_move(self, request, folders): for fo in folders: - yield self._format_callback( - fo, request.user, self.admin_site, set()) - children = list(self._list_folders_to_copy_or_move( - request, fo.children.all())) - children.extend([self._format_callback( - f, request.user, self.admin_site, set()) - for f in sorted(fo.files)]) + yield self._format_callback(fo, request.user, self.admin_site, set()) + children = list(self._list_folders_to_copy_or_move(request, fo.children.all())) + children.extend([self._format_callback(f, request.user, self.admin_site, set()) for f in sorted(fo.files)]) if children: yield children - def _list_all_to_copy_or_move(self, request, - files_queryset, folders_queryset): - to_copy_or_move = list(self._list_folders_to_copy_or_move( - request, folders_queryset)) - to_copy_or_move.extend([self._format_callback( - f, request.user, self.admin_site, set()) - for f in sorted(files_queryset)]) + def _list_all_to_copy_or_move(self, request, files_queryset, folders_queryset): + to_copy_or_move = list(self._list_folders_to_copy_or_move(request, folders_queryset)) + to_copy_or_move.extend([self._format_callback(f, request.user, self.admin_site, set()) for f in sorted(files_queryset)]) return to_copy_or_move - def _move_files_and_folders_impl(self, files_queryset, folders_queryset, - destination): - for f in files_queryset: - f.folder = destination - f.save() - for f_id in folders_queryset.values_list('id', flat=True): - f = Folder.objects.get(id=f_id) - f.parent = destination - f.save() - - def _as_folder(self, request_data, param): - try: - return Folder.objects.get(id=int(request_data.get(param, None))) - except (Folder.DoesNotExist, ValueError, TypeError): - return None + def _list_all_destination_folders_recursive(self, request, folders_queryset, current_folder, folders, allow_self, level): + for fo in folders: + if not allow_self and fo in folders_queryset: + # We do not allow moving to selected folders or their descendants + continue - def _clean_destination(self, request, current_folder, - selected_folders): - destination = self._as_folder(request.POST, 'destination') - if not destination: - raise PermissionDenied - # check destination permissions - if not is_valid_destination(request, destination): - raise PermissionDenied - # don't allow copy/move from folder to the same folder - if (hasattr(current_folder, 'pk') and - destination.pk == current_folder.pk): - raise PermissionDenied - # don't allow selected folders to be copied/moved inside - # themselves or inside any of their descendants - for folder in selected_folders: - destination_in_selected = folder.get_descendants(include_self=True).filter(id=destination.pk).exists() - if destination_in_selected: - raise PermissionDenied - return destination - - def destination_folders(self, request): - all_required = all(( - request.method == 'GET', - is_ajax(request), - request.user.is_authenticated, - 'parent' in request.GET - )) - if not all_required: - raise PermissionDenied + if not fo.has_read_permission(request): + continue - def _valid_candidates(request, candidates_qs, selected): - # exclude orphaned/core/shared/restricted or any selected folders - current_site = request.GET.get('current_site', None) - return folders_available(current_site, request.user, candidates_qs) \ - .valid_destinations(request.user) \ - .unrestricted(request.user) \ - .exclude(id__in=selected) - - current_folder = self._as_folder(request.GET, 'current_folder') - parent = self._as_folder(request.GET, 'parent') - selected_ids = [_f for _f in [f_id or None for f_id in json.loads(request.GET.get('selected_folders') or '[]')] if _f] - candidates = Folder.objects.filter(parent=parent) - fancytree_candidates = [] - for folder in _valid_candidates(request, candidates, selected_ids): - has_children = _valid_candidates( - request, Folder.objects.filter(parent=folder), selected_ids - ).exists() - # don't allow move/copy files&folders to itself - disabled = current_folder and current_folder.pk == folder.pk - fancytree_candidates.append({ - 'title': folder.name, - 'key': "%d" % folder.pk, - 'folder': has_children, - 'lazy': has_children, - 'hideCheckbox': disabled, - 'unselectable': disabled, - 'icon': folder.icons.get('32', '') - }) - - return HttpResponse( - json.dumps(fancytree_candidates), content_type="application/json") - - def move_files_and_folders(self, request, - selected_files, selected_folders): - opts = self.model._meta - app_label = opts.app_label + # We do not allow copying/moving back to the folder itself + enabled = (allow_self or fo != current_folder) and fo.has_add_children_permission(request) + yield (fo, (mark_safe(("  " * level) + force_str(fo)), enabled)) + yield from self._list_all_destination_folders_recursive(request, folders_queryset, current_folder, fo.children.all(), allow_self, level + 1) - if not has_multi_file_action_permission(request, selected_files, selected_folders): - messages.error(request, "You are not allowed to move some of the "\ - "files and folders you selected.") - return + def _list_all_destination_folders(self, request, folders_queryset, current_folder, allow_self): + root_folders = self.get_queryset(request).filter(parent__isnull=True).order_by('name') + return list(self._list_all_destination_folders_recursive(request, folders_queryset, current_folder, root_folders, allow_self, 0)) - if selected_folders.filter(parent=None).exists(): - messages.error(request, "To prevent potential problems, users " - "are not allowed to move root folders. You may copy folders " - "and files.") - return + def _move_files_and_folders_impl(self, files_queryset, folders_queryset, destination): + files_queryset.update(folder=destination) + folders_queryset.update(parent=destination) - current_folder = self._get_current_action_folder( - request, selected_files, selected_folders) - to_move = self._list_all_to_copy_or_move( - request, selected_files, selected_folders) + def move_files_and_folders(self, request, files_queryset, folders_queryset): + opts = self.model._meta + app_label = opts.app_label + + current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) + perms_needed = self._check_move_perms(request, files_queryset, folders_queryset) + to_move = self._list_all_to_copy_or_move(request, files_queryset, folders_queryset) + folders = self._list_all_destination_folders(request, folders_queryset, current_folder, False) if request.method == 'POST' and request.POST.get('post'): + if perms_needed: + raise PermissionDenied try: - destination = self._clean_destination( - request, current_folder, selected_folders) - except PermissionDenied: - messages.error(request, "The destination was not valid so the selected "\ - "files and folders were not moved. Please try again.") - return - - # all folders need to belong to the same site as the - # destination site folder - sites_from_folders = \ - set(selected_folders.values_list('site_id', flat=True)) | \ - set(selected_files.exclude(folder__isnull=True).\ - values_list('folder__site_id', flat=True)) - - if (sites_from_folders and - None in sites_from_folders): - messages.error(request, "Some of the selected files/folders " - "do not belong to any site. Folders need to be assigned " - "to a site before you can move files/folders from it.") - return - elif len(sites_from_folders) > 1: - # it gets here if selection is made through a search view - messages.error(request, "You cannot move files/folders that " - "belong to several sites. Select files/folders that " - "belong to only one site.") - return - elif (sites_from_folders and - sites_from_folders.pop() != destination.site.id): - messages.error(request, "Selected files/folders need to " - "belong to the same site as the destination folder.") - return - - if not self._are_candidate_names_valid( - request, selected_files, selected_folders, destination): - return - + destination = self.get_queryset(request).get(pk=request.POST.get('destination')) + except self.model.DoesNotExist: + raise PermissionDenied + folders_dict = dict(folders) + if destination not in folders_dict or not folders_dict[destination][1]: + raise PermissionDenied # We count only topmost files and folders here - n = selected_files.count() + selected_folders.count() - if n: - self._move_files_and_folders_impl( - selected_files, selected_folders, destination) - self.message_user(request, - _("Successfully moved %(count)d files and/or " - "folders to folder '%(destination)s'.") % { - "count": n, - "destination": destination, - }) + n = files_queryset.count() + folders_queryset.count() + conflicting_names = [folder.name for folder in self.get_queryset(request).filter(parent=destination, name__in=folders_queryset.values('name'))] + if conflicting_names: + messages.error(request, _("Folders with names %s already exist at the selected " + "destination") % ", ".join(conflicting_names)) + elif n: + self._move_files_and_folders_impl(files_queryset, folders_queryset, destination) + self.message_user(request, _("Successfully moved %(count)d files and/or folders to folder '%(destination)s'.") % { + "count": n, + "destination": destination, + }) return None - context = { + context = self.admin_site.each_context(request) + context.update({ "title": _("Move files and/or folders"), "instance": current_folder, "breadcrumbs_action": _("Move files and/or folders"), "to_move": to_move, - "files_queryset": selected_files, - "folders_queryset": selected_folders, + "destination_folders": folders, + "files_queryset": files_queryset, + "folders_queryset": folders_queryset, + "perms_lacking": perms_needed, "opts": opts, "root_path": reverse('admin:index'), "app_label": app_label, "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, - } - context.update(self.admin_site.each_context(request)) + }) + # Display the destination folder selection page - return render(request, "admin/filer/folder/choose_move_destination.html", context) + return TemplateResponse(request, "admin/filer/folder/choose_move_destination.html", context) - move_files_and_folders.short_description = gettext_lazy( - "Move selected files and/or folders") + move_files_and_folders.short_description = _("Move selected files and/or folders") - def extract_files(self, request, files_queryset, folder_queryset): - success_format = "Successfully extracted archive {}." + def _rename_file(self, file_obj, form_data, counter, global_counter): + original_basename, original_extension = os.path.splitext(file_obj.original_filename) + if file_obj.name: + current_basename, current_extension = os.path.splitext(file_obj.name) + else: + current_basename = "" + current_extension = "" + file_obj.name = form_data['rename_format'] % { + 'original_filename': file_obj.original_filename, + 'original_basename': original_basename, + 'original_extension': original_extension, + 'current_filename': file_obj.name or "", + 'current_basename': current_basename, + 'current_extension': current_extension, + 'current_folder': getattr(file_obj.folder, 'name', ''), + 'counter': counter + 1, # 1-based + 'global_counter': global_counter + 1, # 1-based + } + file_obj.save() - files_queryset = files_queryset.filter( - polymorphic_ctype=ContentType.objects.get_for_model(Archive).id) - # cannot extract in unfiled files folder - if files_queryset.filter(folder__isnull=True).exists(): - raise PermissionDenied + def _rename_files(self, files, form_data, global_counter): + n = 0 + for f in sorted(files): + self._rename_file(f, form_data, n, global_counter + n) + n += 1 + return n - if not has_multi_file_action_permission(request, files_queryset, - Folder.objects.none()): - raise PermissionDenied + def _rename_folder(self, folder, form_data, global_counter): + return self._rename_files_impl(folder.files.all(), folder.children.all(), form_data, global_counter) - def is_valid_archive(filer_file): - is_valid = filer_file.is_valid() - if not is_valid: - error_format = "{} is not a valid zip file" - message = error_format.format(filer_file.clean_actual_name) - messages.error(request, _(message)) - return is_valid - - def has_collisions(filer_file): - collisions = filer_file.collisions() - if collisions: - error_format = "Files/Folders from {archive} with names:" - error_format += "{names} already exist." - names = ", ".join(collisions) - archive = filer_file.clean_actual_name - message = error_format.format( - archive=archive, - names=names, - ) - messages.error(request, _(message)) - return len(collisions) > 0 - - for f in files_queryset: - if not is_valid_archive(f) or has_collisions(f): - continue - f.extract() - message = success_format.format(f.actual_name) - self.message_user(request, _(message)) - for err_msg in f.extract_errors: - messages.warning( - request, - _("%s: %s" % (f.actual_name, err_msg)) - ) - - extract_files.short_description = gettext_lazy( - "Extract selected zip files") + def _rename_files_impl(self, files_queryset, folders_queryset, form_data, global_counter): + n = 0 + + for f in folders_queryset: + n += self._rename_folder(f, form_data, global_counter + n) + + n += self._rename_files(files_queryset, form_data, global_counter + n) + + return n + + def rename_files(self, request, files_queryset, folders_queryset): + opts = self.model._meta + app_label = opts.app_label + + current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) + perms_needed = self._check_move_perms(request, files_queryset, folders_queryset) + to_rename = self._list_all_to_copy_or_move(request, files_queryset, folders_queryset) + + if request.method == 'POST' and request.POST.get('post'): + if perms_needed: + raise PermissionDenied + form = RenameFilesForm(request.POST) + if form.is_valid(): + if files_queryset.count() + folders_queryset.count(): + n = self._rename_files_impl(files_queryset, folders_queryset, form.cleaned_data, 0) + self.message_user(request, _("Successfully renamed %(count)d files.") % { + "count": n, + }) + return None + else: + form = RenameFilesForm() + + context = self.admin_site.each_context(request) + context.update({ + "title": _("Rename files"), + "instance": current_folder, + "breadcrumbs_action": _("Rename files"), + "to_rename": to_rename, + "rename_form": form, + "files_queryset": files_queryset, + "folders_queryset": folders_queryset, + "perms_lacking": perms_needed, + "opts": opts, + "root_path": reverse('admin:index'), + "app_label": app_label, + "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, + }) + + # Display the rename format selection page + return TemplateResponse(request, "admin/filer/folder/choose_rename_format.html", context) + + rename_files.short_description = _("Rename files") + + def _generate_new_filename(self, filename, suffix): + basename, extension = os.path.splitext(filename) + return basename + suffix + extension def _copy_file(self, file_obj, destination, suffix, overwrite): if overwrite: - # Not yet implemented as we have to find a portable - # (for different storage backends) way to overwrite files + # Not yet implemented as we have to find a portable (for different storage backends) way to overwrite files raise NotImplementedError - # We are assuming here that we are operating on an already saved - # database objects with current database state available + # We are assuming here that we are operating on an already saved database objects with current database state available + + filename = self._generate_new_filename(file_obj.file.name, suffix) # Due to how inheritance works, we have to set both pk and id to None file_obj.pk = None file_obj.id = None - file_obj.restricted = False + file_obj.save() file_obj.folder = destination - # add suffix to actual name - if file_obj.name in ('', None): - file_obj.original_filename = self._generate_name( - file_obj.original_filename, suffix) - else: - file_obj.name = self._generate_name(file_obj.name, suffix) - new_path = file_obj.file.field.upload_to(file_obj, file_obj.actual_name) - file_obj.file = file_obj._copy_file(new_path) + file_obj._file_data_changed_hint = False # no need to update size, sha1, etc. + file_obj.file = file_obj._copy_file(filename) + file_obj.original_filename = self._generate_new_filename(file_obj.original_filename, suffix) file_obj.save() def _copy_files(self, files, destination, suffix, overwrite): @@ -1024,331 +1100,161 @@ def _copy_files(self, files, destination, suffix, overwrite): self._copy_file(f, destination, suffix, overwrite) return len(files) + def _get_available_name(self, destination, name): + count = itertools.count(1) + original = name + while destination.contains_folder(name): + name = f"{original}_{next(count)}" + return name + def _copy_folder(self, folder, destination, suffix, overwrite): if overwrite: - # Not yet implemented as we have to find a portable - # (for different storage backends) way to overwrite files + # Not yet implemented as we have to find a portable (for different storage backends) way to overwrite files raise NotImplementedError - foldername = self._generate_name(folder.name, suffix) + # TODO: Should we also allow not to overwrite the folder if it exists, but just copy into it? + + # TODO: Is this a race-condition? Would this be a problem? + foldername = self._get_available_name(destination, folder.name) + old_folder = Folder.objects.get(pk=folder.pk) - # Due to how inheritance works, we have to set both pk and id to None - # lft and rght need to be reset since otherwise will see this node - # as 'already set up for insertion' and will not recalculate tree - # values - folder.pk = folder.id = folder.lft = folder.rght = None - folder.restricted = False - folder.name = foldername - folder.parent = destination - folder.save() - - return 1 + self._copy_files_and_folders_impl( - old_folder.files.all(), old_folder.children.all(), - folder, suffix, overwrite) - - def _copy_files_and_folders_impl(self, files_queryset, folders_queryset, - destination, suffix, overwrite): + folder, _ = Folder.objects.get_or_create( + name=foldername, + owner=old_folder.owner, + parent=destination, + ) + + for perm in FolderPermission.objects.filter(folder=old_folder): + perm.pk = None + perm.id = None + perm.folder = folder + perm.save() + return 1 + self._copy_files_and_folders_impl(old_folder.files.all(), old_folder.children.all(), folder, suffix, overwrite) + + def _copy_files_and_folders_impl(self, files_queryset, folders_queryset, destination, suffix, overwrite): n = self._copy_files(files_queryset, destination, suffix, overwrite) - for f_id in folders_queryset.values_list('id', flat=True): - f = Folder.objects.get(id=f_id) - destination = Folder.objects.get(id=destination.id) + for f in folders_queryset: n += self._copy_folder(f, destination, suffix, overwrite) return n - def _generate_name(self, filename, suffix): - if not suffix: - return filename - basename, extension = os.path.splitext(filename) - return basename + suffix + extension - - def _are_candidate_names_valid( - self, request, file_qs, folder_qs, destination, suffix=None): - candidate_folder_names = [self._generate_name(name, suffix) - for name in folder_qs.values_list( - 'name', flat=True)] - candidate_file_names = [ - self._generate_name(file_obj.actual_name, suffix) - for file_obj in file_qs] - - existing_names = [f.actual_name - for f in destination.entries_with_names( - candidate_folder_names + candidate_file_names)] - - if existing_names: - messages.error(request, - _("File or folders with names %s already exist at the " - "selected destination") % ", ".join(existing_names)) - return False - return True - - def copy_files_and_folders(self, request, - files_queryset, folders_queryset): + def copy_files_and_folders(self, request, files_queryset, folders_queryset): opts = self.model._meta app_label = opts.app_label - current_folder = self._get_current_action_folder( - request, files_queryset, folders_queryset) - to_copy = self._list_all_to_copy_or_move( - request, files_queryset, folders_queryset) + current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) + perms_needed = self._check_copy_perms(request, files_queryset, folders_queryset) + to_copy = self._list_all_to_copy_or_move(request, files_queryset, folders_queryset) + folders = self._list_all_destination_folders(request, folders_queryset, current_folder, False) if request.method == 'POST' and request.POST.get('post'): + if perms_needed: + raise PermissionDenied form = CopyFilesAndFoldersForm(request.POST) if form.is_valid(): try: - destination = self._clean_destination( - request, current_folder, folders_queryset) - except PermissionDenied: - messages.error(request, - _("The selected destination was not valid, so the selected "\ - "files and folders were not copied. Please try again.")) - return None - - suffix = form.cleaned_data['suffix'] - if not self._are_candidate_names_valid( - request, files_queryset, folders_queryset, - destination, suffix): return - + destination = self.get_queryset(request).get(pk=request.POST.get('destination')) + except self.model.DoesNotExist: + raise PermissionDenied + folders_dict = dict(folders) + if destination not in folders_dict or not folders_dict[destination][1]: + raise PermissionDenied if files_queryset.count() + folders_queryset.count(): - # We count all files and folders here (recursivelly) - n = self._copy_files_and_folders_impl( - files_queryset, folders_queryset, destination, - suffix, False) - self.message_user(request, - _("Successfully copied %(count)d files and/or " - "folders to folder '%(destination)s'.") % { - "count": n, - "destination": destination, - }) + # We count all files and folders here (recursively) + n = self._copy_files_and_folders_impl(files_queryset, folders_queryset, destination, form.cleaned_data['suffix'], False) + self.message_user(request, _("Successfully copied %(count)d files and/or folders to folder '%(destination)s'.") % { + "count": n, + "destination": destination, + }) return None else: form = CopyFilesAndFoldersForm() try: - selected_destination_folder = \ - int(request.POST.get('destination', 0)) + selected_destination_folder = int(request.POST.get('destination', 0)) except ValueError: if current_folder: selected_destination_folder = current_folder.pk else: selected_destination_folder = 0 - context = { + + context = self.admin_site.each_context(request) + context.update({ "title": _("Copy files and/or folders"), "instance": current_folder, "breadcrumbs_action": _("Copy files and/or folders"), "to_copy": to_copy, + "destination_folders": folders, "selected_destination_folder": selected_destination_folder, "copy_form": form, "files_queryset": files_queryset, "folders_queryset": folders_queryset, + "perms_lacking": perms_needed, "opts": opts, "root_path": reverse('admin:index'), "app_label": app_label, "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, - } - context.update(self.admin_site.each_context(request)) - # Display the destination folder selection page - return render(request, "admin/filer/folder/choose_copy_destination.html", context) - - copy_files_and_folders.short_description = gettext_lazy( - "Copy selected files and/or folders") - - def files_toggle_restriction(self, request, restriction, - files_qs, folders_qs): - """ - Action which enables or disables restriction for files/folders. - """ - if request.method != 'POST': - return None - # cannot restrict/unrestrict unfiled files - unfiled_files = files_qs.filter(folder__isnull=True) - if unfiled_files.exists(): - messages.warning(request, _("Some of the selected files do not have parents: %s, " - "so their rights cannot be changed.") % - ', '.join([str(unfiled_file) for unfiled_file in unfiled_files.all()])) - return None - - if not has_multi_file_action_permission(request, files_qs, folders_qs): - messages.warning(request, _("You are not allowed to modify the restrictions on "\ - "the selected files and folders.")) - return None - - count = [0] - - def set_files_or_folders(filer_obj): - for f in filer_obj: - if f.restricted != restriction: - f.restricted = restriction - f.save() - count[0] += 1 - - set_files_or_folders(files_qs) - set_files_or_folders(folders_qs) - count = count[0] - if restriction: - self.message_user(request, - _("Successfully enabled restriction for %(count)d files " - "and/or folders.") % {"count": count,}) - else: - self.message_user(request, - _("Successfully disabled restriction for %(count)d files " - "and/or folders.") % {"count": count,}) - - return None - - def enable_restriction(self, request, files_qs, folders_qs): - return self.files_toggle_restriction( - request, True, files_qs, folders_qs) - - enable_restriction.short_description = gettext_lazy( - "Enable restriction for selected and/or folders") - - def disable_restriction(self, request, files_qs, folders_qs): - return self.files_toggle_restriction( - request, False, files_qs, folders_qs) - - disable_restriction.short_description = gettext_lazy( - "Disable restriction for selected and/or folders") - -''' - def _rename_file(self, file_obj, form_data, counter, global_counter): - original_basename, original_extension = os.path.splitext( - file_obj.original_filename) - if file_obj.name: - current_basename, current_extension = os.path.splitext( - file_obj.name) - else: - current_basename = "" - current_extension = "" - file_obj.name = form_data['rename_format'] % { - 'original_filename': file_obj.original_filename, - 'original_basename': original_basename, - 'original_extension': original_extension, - 'current_filename': file_obj.name or "", - 'current_basename': current_basename, - 'current_extension': current_extension, - 'current_folder': file_obj.folder.name, - 'counter': counter + 1, # 1-based - 'global_counter': global_counter + 1, # 1-based - } - file_obj.save() - - def _rename_files(self, files, form_data, global_counter): - n = 0 - for f in sorted(files): - self._rename_file(f, form_data, n, global_counter + n) - n += 1 - return n - - def _rename_folder(self, folder, form_data, global_counter): - return self._rename_files_impl( - folder.files.all(), folder.children.all(), - form_data, global_counter) - - def _rename_files_impl(self, files_queryset, folders_queryset, - form_data, global_counter): - n = 0 - - for f in folders_queryset: - n += self._rename_folder(f, form_data, global_counter + n) - - n += self._rename_files(files_queryset, form_data, global_counter + n) - - return n - - def rename_files(self, request, files_queryset, folders_queryset): - # this logic needs to be suplimented with folder type permission layer - opts = self.model._meta - app_label = opts.app_label - - current_folder = self._get_current_action_folder( - request, files_queryset, folders_queryset) - to_rename = self._list_all_to_copy_or_move( - request, files_queryset, folders_queryset) - - if request.method == 'POST' and request.POST.get('post'): - form = RenameFilesForm(request.POST) - if form.is_valid(): - if files_queryset.count() + folders_queryset.count(): - n = self._rename_files_impl( - files_queryset, folders_queryset, - form.cleaned_data, 0) - self.message_user(request, - _("Successfully renamed %(count)d files.") % { - "count": n, - }) - return None - else: - form = RenameFilesForm() + }) - context = { - "title": _("Rename files"), - "instance": current_folder, - "breadcrumbs_action": _("Rename files"), - "to_rename": to_rename, - "rename_form": form, - "files_queryset": files_queryset, - "folders_queryset": folders_queryset, - "opts": opts, - "root_path": reverse('admin:index'), - "app_label": app_label, - "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, - } + # Display the destination folder selection page + return TemplateResponse(request, "admin/filer/folder/choose_copy_destination.html", context) - # Display the rename format selection page - return render(request, "admin/filer/folder/choose_rename_format.html", context=context) + copy_files_and_folders.short_description = _("Copy selected files and/or folders") - rename_files.short_description = gettext_lazy("Rename files") + def _check_resize_perms(self, request, files_queryset, folders_queryset): + try: + check_files_read_permissions(request, files_queryset) + check_folder_read_permissions(request, folders_queryset) + check_files_edit_permissions(request, files_queryset) + except PermissionDenied: + return True + return False def _list_folders_to_resize(self, request, folders): for fo in folders: - children = list(self._list_folders_to_resize( - request, fo.children.all())) - children.extend([self._format_callback( - f, request.user, self.admin_site, set()) - for f in sorted(fo.files) - if isinstance(f, Image)]) + children = list(self._list_folders_to_resize(request, fo.children.all())) + children.extend([self._format_callback(f, request.user, self.admin_site, set()) for f in sorted(fo.files) if isinstance(f, Image)]) if children: - yield self._format_callback( - fo, request.user, self.admin_site, set()) + yield self._format_callback(fo, request.user, self.admin_site, set()) yield children def _list_all_to_resize(self, request, files_queryset, folders_queryset): - to_resize = list(self._list_folders_to_resize( - request, folders_queryset)) - to_resize.extend([self._format_callback( - f, request.user, self.admin_site, set()) - for f in sorted(files_queryset) - if isinstance(f, Image)]) + to_resize = list(self._list_folders_to_resize(request, folders_queryset)) + to_resize.extend([self._format_callback(f, request.user, self.admin_site, set()) for f in sorted(files_queryset) if isinstance(f, Image)]) return to_resize - def _new_subject_location(self, original_width, original_height, - new_width, new_height, x, y, crop): - # TODO: We could probably do better - return (round(new_width / 2), round(new_height / 2)) + def _new_subject_location(self, original_width, original_height, new_width, new_height, x, y, crop): + # TODO: We could probably do even better, but this method knows nothing + # about actual thumbnailing algorithm details. + # It's better to reset subject location to the central point of the new + # image if the image is being cropped. The originally specified subject + # location could be outside of the new image. + if crop: + return int(new_width / 2), int(new_height / 2) + else: + # Calculate scaling factor of the new image compared to old. + scale = min(new_width / original_width, new_height / original_height) + return int(scale * x), int(scale * y) def _resize_image(self, image, form_data): original_width = float(image.width) original_height = float(image.height) - thumbnailer = FilerActionThumbnailer( - file=image.file.file, - name=image.file.name, - source_storage=image.file.source_storage, - thumbnail_storage=image.file.source_storage) + thumbnailer = FilerActionThumbnailer(file=image.file, name=image.file.name, source_storage=image.file.source_storage, thumbnail_storage=image.file.source_storage) # This should overwrite the original image new_image = thumbnailer.get_thumbnail({ - 'size': (form_data['width'], form_data['height']), + 'size': tuple(int(form_data[d] or 0) for d in ('width', 'height')), 'crop': form_data['crop'], 'upscale': form_data['upscale'], 'subject_location': image.subject_location, }) - from django.db.models.fields.files import ImageFieldFile image.file.file = new_image.file - image.generate_sha1() - image.save() # Also gets new width and height + # Since only file data was changed, there is no way for file field to know about the change. + # To update size, sha1, width and height fields let's call file_data_changed callback directly. + image.file_data_changed() + image.save() subject_location = normalize_subject_location(image.subject_location) if subject_location: @@ -1357,9 +1263,7 @@ def _resize_image(self, image, form_data): y = float(y) new_width = float(image.width) new_height = float(image.height) - (new_x, new_y) = self._new_subject_location( - original_width, original_height, new_width, new_height, - x, y, form_data['crop']) + (new_x, new_y) = self._new_subject_location(original_width, original_height, new_width, new_height, x, y, form_data['crop']) image.subject_location = "%d,%d" % (new_x, new_y) image.save() @@ -1372,11 +1276,9 @@ def _resize_images(self, files, form_data): return n def _resize_folder(self, folder, form_data): - return self._resize_images_impl( - folder.files.all(), folder.children.all(), form_data) + return self._resize_images_impl(folder.files.all(), folder.children.all(), form_data) - def _resize_images_impl(self, files_queryset, - folders_queryset, form_data): + def _resize_images_impl(self, files_queryset, folders_queryset, form_data): n = self._resize_images(files_queryset, form_data) for f in folders_queryset: @@ -1388,115 +1290,45 @@ def resize_images(self, request, files_queryset, folders_queryset): opts = self.model._meta app_label = opts.app_label - current_folder = self._get_current_action_folder( - request, files_queryset, folders_queryset) - to_resize = self._list_all_to_resize( - request, files_queryset, folders_queryset) + current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) + perms_needed = self._check_resize_perms(request, files_queryset, folders_queryset) + to_resize = self._list_all_to_resize(request, files_queryset, folders_queryset) if request.method == 'POST' and request.POST.get('post'): + if perms_needed: + raise PermissionDenied form = ResizeImagesForm(request.POST) if form.is_valid(): if form.cleaned_data.get('thumbnail_option'): - form.cleaned_data['width'] = \ - form.cleaned_data['thumbnail_option'].width - form.cleaned_data['height'] = \ - form.cleaned_data['thumbnail_option'].height - form.cleaned_data['crop'] = \ - form.cleaned_data['thumbnail_option'].crop - form.cleaned_data['upscale'] = \ - form.cleaned_data['thumbnail_option'].upscale + form.cleaned_data['width'] = form.cleaned_data['thumbnail_option'].width + form.cleaned_data['height'] = form.cleaned_data['thumbnail_option'].height + form.cleaned_data['crop'] = form.cleaned_data['thumbnail_option'].crop + form.cleaned_data['upscale'] = form.cleaned_data['thumbnail_option'].upscale if files_queryset.count() + folders_queryset.count(): - # We count all files here (recursivelly) - n = self._resize_images_impl( - files_queryset, folders_queryset, form.cleaned_data) - self.message_user(request, - _("Successfully resized %(count)d images.") % { - "count": n, - }) + # We count all files here (recursively) + n = self._resize_images_impl(files_queryset, folders_queryset, form.cleaned_data) + self.message_user(request, _("Successfully resized %(count)d images.") % {"count": n, }) return None else: form = ResizeImagesForm() - context = { + context = self.admin_site.each_context(request) + context.update({ "title": _("Resize images"), "instance": current_folder, "breadcrumbs_action": _("Resize images"), "to_resize": to_resize, "resize_form": form, - "cmsplugin_enabled": ('cmsplugin_filer_image' - in django_settings.INSTALLED_APPS), "files_queryset": files_queryset, "folders_queryset": folders_queryset, + "perms_lacking": perms_needed, "opts": opts, "root_path": reverse('admin:index'), "app_label": app_label, "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, - } + }) # Display the resize options page - return render( - request, - "admin/filer/folder/choose_images_resize_options.html", - context=context, - ) - - resize_images.short_description = gettext_lazy("Resize selected images") - - def files_set_public_or_private(self, request, set_public, - files_queryset, folders_queryset): - """ - Action which enables or disables permissions for selected - files and files in selected folders to clipboard - (set them private or public). - """ - - if not self.has_change_permission(request): - raise PermissionDenied - - if request.method != 'POST': - return None - - # We define it like that so that we can modify it inside the - # set_files function - files_count = [0] - - def set_files(files): - for f in files: - if f.is_public != set_public: - f.is_public = set_public - f.save() - files_count[0] += 1 - - def set_folders(folders): - for f in folders: - set_files(f.files) - set_folders(f.children.all()) - - set_files(files_queryset) - set_folders(folders_queryset) - - if set_public: - self.message_user(request, - _("Successfully disabled permissions for %(count)d files.") % { - "count": files_count[0], }) - else: - self.message_user(request, - _("Successfully enabled permissions for %(count)d files.") % { - "count": files_count[0], }) - - return None - - def files_set_private(self, request, files_queryset, folders_queryset): - return self.files_set_public_or_private( - request, False, files_queryset, folders_queryset) - - files_set_private.short_description = gettext_lazy( - "Enable permissions for selected files") - - def files_set_public(self, request, files_queryset, folders_queryset): - return self.files_set_public_or_private( - request, True, files_queryset, folders_queryset) + return TemplateResponse(request, "admin/filer/folder/choose_images_resize_options.html", context) - files_set_public.short_description = gettext_lazy( - "Disable permissions for selected files") -''' + resize_images.short_description = _("Resize selected images") diff --git a/filer/admin/forms.py b/filer/admin/forms.py index 52925c0d9..1a35e4125 100644 --- a/filer/admin/forms.py +++ b/filer/admin/forms.py @@ -1,40 +1,38 @@ from django import forms -from django.db import models from django.contrib.admin import widgets -from filer.utils.files import get_valid_filename -from django.utils.translation import gettext as _ +from django.contrib.admin.helpers import AdminForm from django.core.exceptions import ValidationError -from django.conf import settings +from django.db import models +from django.utils.translation import gettext as _ +from ..models import ThumbnailOption +from ..utils.files import get_valid_filename -if 'cmsplugin_filer_image' in settings.INSTALLED_APPS: - from cmsplugin_filer_image.models import ThumbnailOption +class WithFieldsetMixin: + def get_fieldsets(self): + return getattr(self, "fieldsets", [ + (None, {"fields": [field for field in self.fields]}) + ]) -class AsPWithHelpMixin(object): - def as_p_with_help(self): - "Returns this form rendered as HTML

s with help text formated for admin." - return self._html_output( - normal_row='%(label)s %(field)s

%(help_text)s', - error_row='%s', - row_ender='

', - help_text_html='

%s

', - errors_on_separate_row=True) + def admin_form(self): + "Returns a class contains the Admin fieldset to show form as admin form" + return AdminForm(self, self.get_fieldsets(), {}) -class CopyFilesAndFoldersForm(forms.Form, AsPWithHelpMixin): +class CopyFilesAndFoldersForm(forms.Form): suffix = forms.CharField(required=False, help_text=_("Suffix which will be appended to filenames of copied files.")) # TODO: We have to find a way to overwrite files with different storage backends first. - #overwrite_files = forms.BooleanField(required=False, help_text=_("Overwrite a file if there already exists a file with the same filename?")) + # overwrite_files = forms.BooleanField(required=False, help_text=_("Overwrite a file if there already exists a file with the same filename?")) def clean_suffix(self): - valid = get_valid_filename(self.cleaned_data['suffix']) + valid = get_valid_filename(self.cleaned_data['suffix']) if self.cleaned_data['suffix'] else "" if valid != self.cleaned_data['suffix']: raise forms.ValidationError(_('Suffix should be a valid, simple and lowercase filename part, like "%(valid)s".') % {'valid': valid}) return self.cleaned_data['suffix'] -class RenameFilesForm(forms.Form, AsPWithHelpMixin): +class RenameFilesForm(WithFieldsetMixin, forms.Form): rename_format = forms.CharField(required=True) def clean_rename_format(self): @@ -57,9 +55,20 @@ def clean_rename_format(self): return self.cleaned_data['rename_format'] -class ResizeImagesForm(forms.Form, AsPWithHelpMixin): - if 'cmsplugin_filer_image' in settings.INSTALLED_APPS: - thumbnail_option = models.ForeignKey(ThumbnailOption, null=True, blank=True, verbose_name=_("thumbnail option")).formfield() +class ResizeImagesForm(WithFieldsetMixin, forms.Form): + fieldsets = ((None, {"fields": ( + "thumbnail_option", + ("width", "height"), + ("crop", "upscale"))}),) + + thumbnail_option = models.ForeignKey( + ThumbnailOption, + null=True, + blank=True, + verbose_name=_("thumbnail option"), + on_delete=models.CASCADE, + ).formfield() + width = models.PositiveIntegerField(_("width"), null=True, blank=True).formfield(widget=widgets.AdminIntegerFieldWidget) height = models.PositiveIntegerField(_("height"), null=True, blank=True).formfield(widget=widgets.AdminIntegerFieldWidget) crop = models.BooleanField(_("crop"), default=True).formfield() @@ -67,8 +76,5 @@ class ResizeImagesForm(forms.Form, AsPWithHelpMixin): def clean(self): if not (self.cleaned_data.get('thumbnail_option') or ((self.cleaned_data.get('width') or 0) + (self.cleaned_data.get('height') or 0))): - if 'cmsplugin_filer_image' in settings.INSTALLED_APPS: - raise ValidationError(_('Thumbnail option or resize parameters must be choosen.')) - else: - raise ValidationError(_('Resize parameters must be choosen.')) + raise ValidationError(_('Thumbnail option or resize parameters must be choosen.')) return self.cleaned_data diff --git a/filer/admin/imageadmin.py b/filer/admin/imageadmin.py index 96fd494f3..aec3d41f9 100644 --- a/filer/admin/imageadmin.py +++ b/filer/admin/imageadmin.py @@ -1,63 +1,121 @@ -#-*- coding: utf-8 -*- from django import forms -from django.utils.translation import gettext as _ -from django.shortcuts import render -from django.http import Http404 -from django.urls import re_path -from filer.admin.fileadmin import FileAdmin -from filer.models import Image -from filer.views import (popup_status, selectfolder_status) +from django.shortcuts import get_object_or_404 +from django.template.response import TemplateResponse +from django.urls import path +from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy +from ..settings import FILER_IMAGE_MODEL +from ..thumbnail_processors import normalize_subject_location +from ..utils.compatibility import string_concat +from ..utils.loader import load_model +from .fileadmin import FileAdmin, FileAdminChangeFrom -class ImageAdminForm(forms.ModelForm): + +Image = load_model(FILER_IMAGE_MODEL) + + +class ImageAdminForm(FileAdminChangeFrom): subject_location = forms.CharField( - max_length=64, required=False, - label=_('Subject location'), - help_text=_('Location of the main subject of the scene.')) + max_length=64, required=False, + label=_('Subject location'), + help_text=_('Location of the main subject of the scene. ' + 'Format: "x,y".')) def sidebar_image_ratio(self): if self.instance: # this is very important. It forces the value to be returned as a - # string and always with a "." as seperator. If the conversion + # string and always with a "." as separator. If the conversion # from float to string is done in the template, the locale will # be used and in some cases there would be a "," instead of ".". # javascript would parse that to an integer. - return "%.6F" % self.instance.sidebar_image_ratio() + return '%.6F' % self.instance.sidebar_image_ratio() else: return '' + def _set_previous_subject_location(self, cleaned_data): + subject_location = self.instance.subject_location + cleaned_data['subject_location'] = subject_location + self.data = self.data.copy() + self.data['subject_location'] = subject_location + + def clean_subject_location(self): + """ + Validate subject_location preserving last saved value. + + Last valid value of the subject_location field is shown to the user + for subject location widget to receive valid coordinates on field + validation errors. + """ + subject_location = self.cleaned_data['subject_location'] + if not subject_location: + # if supplied subject location is empty, do not check it + return subject_location + + # use thumbnail's helper function to check the format + coordinates = normalize_subject_location(subject_location) + + if not coordinates: + err_msg = gettext_lazy('Invalid subject location format. ') + err_code = 'invalid_subject_format' + + elif ( + coordinates[0] > self.instance.width > 0 + or coordinates[1] > self.instance.height > 0 + ): + err_msg = gettext_lazy( + 'Subject location is outside of the image. ') + err_code = 'subject_out_of_bounds' + else: + return subject_location + + self._set_previous_subject_location(self.cleaned_data) + raise forms.ValidationError( + string_concat( + err_msg, + gettext_lazy('Your input: "{subject_location}". '.format( + subject_location=subject_location)), + 'Previous value is restored.'), + code=err_code) + class Meta: model = Image exclude = () class ImageAdmin(FileAdmin): + change_form_template = 'admin/filer/image/change_form.html' form = ImageAdminForm def get_urls(self): - urls = super(ImageAdmin, self).get_urls() - url_patterns = [ - re_path(r'^(?P\d+)/full_size_preview/$', - self.admin_site.admin_view(self.full_size_preview), - name='filer-image-preview'), + return super().get_urls() + [ + path("expand/", + self.admin_site.admin_view(self.expand_view), + name=f"{self.opts.app_label}_{self.opts.model_name}_expand") ] - url_patterns.extend(urls) - return url_patterns - - def full_size_preview(self, request, file_id): - try: - image = Image.objects.get(id=file_id) - except Image.DoesNotExist: - raise Http404 - - return render(request, 'admin/filer/image/full_size_preview.html', { - 'image': image, - 'current_site': request.GET.get('current_site', None), - 'is_popup': popup_status(request), - 'select_folder': selectfolder_status(request), - }) + + def expand_view(self, request, file_id): + image = get_object_or_404(self.model, pk=file_id) + return TemplateResponse( + request, + "admin/filer/image/expand.html", + context={ + "original_url": image.url + }, + ) + + +if FILER_IMAGE_MODEL == 'filer.Image': + extra_main_fields = ('author', 'default_alt_text', 'default_caption',) +else: + extra_main_fields = ('default_alt_text', 'default_caption',) ImageAdmin.fieldsets = ImageAdmin.build_fieldsets( - extra_main_fields=('default_alt_text', 'default_caption', 'default_credit'), - extra_fieldsets=() + extra_main_fields=extra_main_fields, + extra_fieldsets=( + (_('Subject location'), { + 'fields': ('subject_location',), + 'classes': ('collapse',), + }), + ) ) diff --git a/filer/admin/patched/__init__.py b/filer/admin/patched/__init__.py index 53f7f2286..e69de29bb 100644 --- a/filer/admin/patched/__init__.py +++ b/filer/admin/patched/__init__.py @@ -1,2 +0,0 @@ -#-*- coding: utf-8 -*- - diff --git a/filer/admin/patched/admin_utils.py b/filer/admin/patched/admin_utils.py index ec986f68a..84602d5e5 100644 --- a/filer/admin/patched/admin_utils.py +++ b/filer/admin/patched/admin_utils.py @@ -1,31 +1,34 @@ -# -*- coding: utf-8 -*- """ Copy of ``django.contrib.admin.utils.get_deleted_objects`` and a subclass of -``django.contrib.admin.utils.NestedObjects`` that work with djongo_polymorphic querysets. -Ultimatly these should go directly into django_polymorphic or, in a more generic way, into django itself. +``django.contrib.admin.utils.NestedObjects`` that work with django-polymorphic +querysets. +Ultimately these should go directly into django-polymorphic or, in a more +generic way, into Django itself. -This code has been copied from -django 1.4. ``get_deleted_objects`` and ``NestedObjects`` have not changed compared to 1.3.1. +This code has been copied from Django 1.9.4. -At all locations where something has been changed, there are inline comments in the code. +At all locations where something has been changed, there are inline comments +in the code. """ -from django.contrib.admin.utils import NestedObjects, quote +from collections import defaultdict + +from django import VERSION as DJANGO_VERSION +from django.contrib.admin.utils import quote from django.contrib.auth import get_permission_codename -from django.utils.text import capfirst -from django.utils.html import format_html +from django.db import models +from django.db.models.deletion import Collector from django.urls import NoReverseMatch, reverse from django.utils.encoding import force_str - +from django.utils.html import format_html +from django.utils.text import capfirst def get_deleted_objects(objs, opts, user, admin_site, using): """ Find all objects related to ``objs`` that should also be deleted. ``objs`` - must be a homogenous iterable of objects (e.g. a QuerySet). - + must be a homogeneous iterable of objects (e.g. a QuerySet). Returns a nested list of strings suitable for display in the template with the ``unordered_list`` filter. - """ # --- begin patch --- collector = PolymorphicAwareNestedObjects(using=using) @@ -53,8 +56,7 @@ def format_callback(obj): p = '%s.%s' % (opts.app_label, get_permission_codename('delete', opts)) - # Additional change: also check for individual object permission - if not user.has_perm(p, obj) and not user.has_perm(p): + if not user.has_perm(p): perms_needed.add(opts.verbose_name) # Display a link to the admin page. return format_html('{}: {}', @@ -69,11 +71,45 @@ def format_callback(obj): to_delete = collector.nested(format_callback) protected = [format_callback(obj) for obj in collector.protected] + model_count = {model._meta.verbose_name_plural: len(objs) for model, objs in collector.model_objs.items()} - return to_delete, perms_needed, protected + return to_delete, model_count, perms_needed, protected -class PolymorphicAwareNestedObjects(NestedObjects): +class NestedObjects(Collector): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.edges = {} # {from_instance: [to_instances]} + self.protected = set() + self.model_objs = defaultdict(set) + + def add_edge(self, source, target): + self.edges.setdefault(source, []).append(target) + + def collect(self, objs, source=None, source_attr=None, **kwargs): + for obj in objs: + if source_attr and not source_attr.endswith('+'): + related_name = source_attr % { + 'class': source._meta.model_name, + 'app_label': source._meta.app_label, + } + self.add_edge(getattr(obj, related_name), obj) + else: + self.add_edge(None, obj) + self.model_objs[obj._meta.model].add(obj) + try: + return super().collect(objs, source_attr=source_attr, **kwargs) + except models.ProtectedError as e: + self.protected.update(e.protected_objects) + + if DJANGO_VERSION >= (3, 1): + def related_objects(self, related_model, related_fields, objs): + qs = super().related_objects(related_model, related_fields, objs) + return qs.select_related(*[related.name for related in related_fields]) + else: + def related_objects(self, related, objs): + qs = super().related_objects(related, objs) + return qs.select_related(related.field.name) def _nested(self, obj, seen, format_callback): if obj in seen: @@ -82,21 +118,37 @@ def _nested(self, obj, seen, format_callback): children = [] for child in self.edges.get(obj, ()): children.extend(self._nested(child, seen, format_callback)) - if hasattr(obj, 'is_in_trash') and obj.is_in_trash(): - ret = [] + if format_callback: + ret = [format_callback(obj)] else: - if format_callback: - ret = [format_callback(obj)] - else: - ret = [obj] + ret = [obj] if children: ret.append(children) return ret + def nested(self, format_callback=None): + """ + Return the graph as a nested list. + """ + seen = set() + roots = [] + for root in self.edges.get(None, ()): + roots.extend(self._nested(root, seen, format_callback)) + return roots + + def can_fast_delete(self, *args, **kwargs): + """ + We always want to load the objects into memory so that we can display + them to the user in confirm page. + """ + return False + + +class PolymorphicAwareNestedObjects(NestedObjects): def collect(self, objs, source_attr=None, **kwargs): if hasattr(objs, 'non_polymorphic'): - # .filter() is needed, because there may already be - # cached polymorphic results in the queryset + # .filter() is needed, because there may already be cached + # polymorphic results in the queryset objs = objs.non_polymorphic().filter() - return super(PolymorphicAwareNestedObjects, self).collect( + return super().collect( objs, source_attr=source_attr, **kwargs) diff --git a/filer/admin/tools.py b/filer/admin/tools.py index 1995b905b..d7eeceebf 100644 --- a/filer/admin/tools.py +++ b/filer/admin/tools.py @@ -1,9 +1,128 @@ -#-*- coding: utf-8 -*- -from django.conf import settings +from django.conf import settings as django_settings +from django.contrib.admin.options import IS_POPUP_VAR +from django.core.exceptions import PermissionDenied from django.db.models import Q -from filer.utils.cms_roles import * -from filer.models.foldermodels import Folder +from django.utils.http import urlencode +from .. import settings +from ..utils.cms_roles import get_sites_for_user +from ..models.foldermodels import Folder + + +ALLOWED_PICK_TYPES = ('folder', 'file') + + +def check_files_edit_permissions(request, files): + for f in files: + if not f.has_edit_permission(request): + raise PermissionDenied + + +def check_folder_edit_permissions(request, folders): + for f in folders: + if not f.has_edit_permission(request): + raise PermissionDenied + check_files_edit_permissions(request, f.files) + check_folder_edit_permissions(request, f.children.all()) + + +def check_files_read_permissions(request, files): + for f in files: + if not f.has_read_permission(request): + raise PermissionDenied + + +def check_folder_read_permissions(request, folders): + for f in folders: + if not f.has_read_permission(request): + raise PermissionDenied + check_files_read_permissions(request, f.files) + check_folder_read_permissions(request, f.children.all()) + + +def userperms_for_request(item, request): + r = [] + ps = ['read', 'edit', 'add_children'] + for p in ps: + attr = "has_%s_permission" % p + if hasattr(item, attr): + x = getattr(item, attr)(request) + if x: + r.append(p) + return r + + +def popup_status(request): + return ( + IS_POPUP_VAR in request.GET + or 'pop' in request.GET + or IS_POPUP_VAR in request.POST + or 'pop' in request.POST + ) + + +def popup_pick_type(request): + pick_type = request.GET.get('_pick', request.POST.get('_pick')) + if pick_type in ALLOWED_PICK_TYPES: + return pick_type + return None + + +def edit_from_widget(request): + return request.GET.get('_edit_from_widget') == '1' + + +def get_directory_listing_type(request): + list_type = request.GET.get('_list_type', None) + if list_type not in settings.FILER_FOLDER_ADMIN_LIST_TYPE_CHOICES: + return + return list_type + + +def admin_url_params(request, params=None): + params = params or {} + if popup_status(request): + params[IS_POPUP_VAR] = '1' + pick_type = popup_pick_type(request) + if pick_type: + params['_pick'] = pick_type + if edit_from_widget(request): + params['_edit_from_widget'] = '1' + list_type = get_directory_listing_type(request) + if list_type and '_list_type' not in params.keys(): + params['_list_type'] = list_type + return params + + +def admin_url_params_encoded(request, first_separator='?', params=None): + params = urlencode( + sorted(admin_url_params(request, params=params).items()) + ) + if not params: + return '' + return f'{first_separator}{params}' + + +class AdminContext(dict): + def __init__(self, request): + super().__init__() + self.update(admin_url_params(request)) + + def __missing__(self, key): + if key == 'popup': + return self.get(IS_POPUP_VAR, False) == '1' + elif key == 'pick': + return self.get('_pick', '') + elif key.startswith('pick_'): + return self.get('_pick', '') == key.split('pick_')[1] + + def __getattr__(self, name): + if name in ('popup', 'pick') or name.startswith('pick_'): + return self.get(name) + raise AttributeError + + +# --- PBS-specific functions --- def is_valid_destination(request, folder): user = request.user @@ -33,104 +152,22 @@ def _filter_available_sites(current_site, user): def folders_available(current_site, user, folders_qs): """ - Returns a queryset with folders that current user can see - * core folders - * shared folders - * only site folders with sites available to the user - * site admins can also see site folder files with no site assigned - - * current_site param is passed only with cms plugin change form so this - will restrict visible files/folder for the ones that belong to that - site for all users, even superusers + Returns a queryset with folders that current user can see. """ - if user.is_superuser and not current_site: - return folders_qs.distinct() - - available_sites = _filter_available_sites(current_site, user) - - sites_q = Q(Q(folder_type=Folder.CORE_FOLDER) | - Q(site__in=available_sites) | - Q(shared__in=available_sites)) - - if (getattr(settings, 'FILER_INCLUDE_SITELESS_FOLDERS', True) and - has_admin_role(user) and not current_site): - sites_q |= Q(site__pk__isnull=True) - - return folders_qs.filter(sites_q).distinct() - - -def files_available(current_site, user, files_qs): - """ - Returns a queryset with files that current user can see: - * core folder files - * shared folder files - * files from 'unfiled files' - * only site folder files with sites available to the user - * site admins can also see site folder files with no site assigned - - * current_site param is passed only with cms plugin change form so this - will restrict visible files/folder for the ones that belong to that - site for all users, even superusers - """ - # never show unfiled files from other users clipboard - unfiled_in_clipboard = Q(Q(folder__isnull=True) & - ~Q(clipboarditem__isnull=True)) - - if user.is_superuser and not current_site: - return files_qs.exclude(unfiled_in_clipboard).distinct() - available_sites = _filter_available_sites(current_site, user) + if not available_sites: + return folders_qs.none() - sites_q = Q(Q(folder__folder_type=Folder.CORE_FOLDER) | - Q(folder__site__in=available_sites) | - Q(folder__shared__in=available_sites)) - - if not current_site: - sites_q |= Q(folder__isnull=True) - if (getattr(settings, 'FILER_INCLUDE_SITELESS_FOLDERS', True) and - has_admin_role(user)): - sites_q |= Q(folder__site__isnull=True) - else: - # never show unfiled in popup - sites_q &= Q(folder__isnull=False) - - return files_qs.exclude(unfiled_in_clipboard).filter(sites_q).distinct() + core_folders = Q(folder_type=Folder.CORE_FOLDER) + shared_folders = Q(shared__in=available_sites) + accessible_site_folders = Q(site__in=available_sites) - -def has_multi_file_action_permission(request, files, folders): - # unfiled files can be moved/deleted so better to just exclude them - # from checking permissions for them - files = files.exclude(folder__isnull=True) - user = request.user - - if files.readonly(user).exists() or folders.readonly(user).exists(): - return False if user.is_superuser: - return True - - if files.restricted(user).exists(): - return False - - if folders.restricted_descendants(user).exists(): - return False - - # only superusers can move/delete files/folders with no site ownership - if (files.filter(folder__site__isnull=True).exists() or - folders.filter(site__isnull=True).exists()): - return False - - _exists_root_folders = folders.filter(parent__isnull=True).exists() - if _exists_root_folders: - if not has_admin_role(user): - return False - # allow site admins to move/delete root files/folders that belong - # to the site where is admin - sites_allowed = [s.id for s in get_admin_sites_for_user(user)] + # superusers can also see folders with no site assigned + no_site_folders = Q(site__isnull=True) & ~core_folders + visible = (core_folders | shared_folders | + accessible_site_folders | no_site_folders) else: - sites_allowed = get_sites_for_user(user) - - if (files.exclude(folder__site__in=sites_allowed).exists() or - folders.exclude(site__in=sites_allowed).exists()): - return False + visible = core_folders | shared_folders | accessible_site_folders - return True + return folders_qs.filter(visible).distinct() diff --git a/filer/fields/file.py b/filer/fields/file.py index e43b56871..0223440b9 100644 --- a/filer/fields/file.py +++ b/filer/fields/file.py @@ -1,121 +1,101 @@ -#-*- coding: utf-8 -*- +import logging +import warnings + from django import forms -from django.contrib.admin.widgets import ForeignKeyRawIdWidget -from django.contrib.admin import widgets as django_widgets from django.contrib.admin.sites import site -from django.urls import reverse +from django.contrib.admin.widgets import ForeignKeyRawIdWidget +from django.core.exceptions import ObjectDoesNotExist from django.db import models from django.template.loader import render_to_string +from django.urls import reverse +from django.utils.http import urlencode from django.utils.safestring import mark_safe -from filer.models import File -from filer import settings as filer_settings -from filer.utils.model_label import get_model_label -try: - from django.utils.text import truncate_words -except ImportError: - from django.template.defaultfilters import truncatewords as truncate_words +from .. import settings as filer_settings +from ..models import File +from ..settings import ICON_CSS_LIB +from ..utils.compatibility import truncate_words +from ..utils.model_label import get_model_label + -import logging logger = logging.getLogger(__name__) + class AdminFileWidget(ForeignKeyRawIdWidget): choices = None - def __init__(self, *args, **kwargs): - super(AdminFileWidget, self).__init__(*args, **kwargs) - self.set_defaults() - - def set_defaults(self): - self.custom_preview_width = None - self.search_label = None - self.remove_label = None - - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, renderer=None): obj = self.obj_for_value(value) - css_id = attrs.get('id', 'id_image_x') - css_id_thumbnail_img = "%s_thumbnail_img" % css_id - css_id_description_txt = "%s_description_txt" % css_id - css_id_link_to_file = "%s_link_to_file" % css_id + css_id = attrs.get("id", "id_image_x") related_url = None + change_url = "" if value: try: file_obj = File.objects.get(pk=value) - related_url = file_obj.logical_folder.\ - get_admin_directory_listing_url_path() + related_url = ( + file_obj.logical_folder.get_admin_directory_listing_url_path() + ) + change_url = file_obj.get_admin_change_url() except Exception as e: # catch exception and manage it. We can re-raise it for debugging # purposes and/or just logging it, provided user configured # proper logging configuration if filer_settings.FILER_ENABLE_LOGGING: - logger.error('Error while rendering file widget: %s',e) + logger.error("Error while rendering file widget: %s", e) if filer_settings.FILER_DEBUG: - raise e + raise if not related_url: - related_url = reverse('admin:filer-directory_listing-root') + related_url = reverse("admin:filer-directory_listing-last") params = self.url_parameters() + params["_pick"] = "file" if params: - lookup_url = '?' + '&'.join( - ['%s=%s' % (k, v) for k, v in list(params.items())]) + lookup_url = "?" + urlencode(sorted(params.items())) else: - lookup_url = '' - if not 'class' in attrs: + lookup_url = "" + # Filer image is never autocomplete widget; Django's popup js fails if it finds "data-context="available-source" + self.attrs.pop("data-context", None) + if "class" not in attrs: # The JavaScript looks for this hook. - attrs['class'] = 'vForeignKeyRawIdAdminField' + attrs["class"] = "vForeignKeyRawIdAdminField" # rendering the super for ForeignKeyRawIdWidget on purpose here because # we only need the input and none of the other stuff that # ForeignKeyRawIdWidget adds hidden_input = super(ForeignKeyRawIdWidget, self).render( - name, value, attrs) - filer_static_prefix = filer_settings.FILER_STATICMEDIA_PREFIX - if not filer_static_prefix[-1] == '/': - filer_static_prefix += '/' + name, value, attrs + ) # grandparent super context = { - 'hidden_input': hidden_input, - 'lookup_url': '%s%s' % (related_url, lookup_url), - 'thumb_id': css_id_thumbnail_img, - 'span_id': css_id_description_txt, - 'link_id': css_id_link_to_file, - 'object': obj, - 'lookup_name': name, - 'filer_static_prefix': filer_static_prefix, - 'clear_id': '%s_clear' % css_id, - 'id': css_id, - 'search_label': self.search_label, - 'remove_label': self.remove_label, + "hidden_input": hidden_input, + "lookup_url": f"{related_url}{lookup_url}", + "change_url": change_url, + "object": obj, + "lookup_name": name, + "id": css_id, + "admin_icon_delete": ("admin/img/icon-deletelink.svg"), } - - template = 'admin/filer/widgets/admin_file.html' - if self.custom_preview_width: - self.update_context_for_custom_preview(context, obj) - template = 'admin/filer/widgets/admin_file_custom.html' - - html = render_to_string(template, context) + html = render_to_string("admin/filer/widgets/admin_file.html", context) return mark_safe(html) def label_for_value(self, value): obj = self.obj_for_value(value) - return ' %s' % truncate_words(obj, 14) + return " %s" % truncate_words(obj, 14) def obj_for_value(self, value): - try: - key = self.remote_field.get_related_field().name - obj = self.remote_field.model.objects.get(**{key: value}) - except: + if value: + try: + # the next line may never bee reached + key = self.rel.get_related_field().name + obj = self.rel.model._default_manager.get(**{key: value}) + except ObjectDoesNotExist: + obj = None + else: obj = None return obj - def update_context_for_custom_preview(self, context, obj): - context['custom_preview'] = True - context['custom_preview_width'] = self.custom_preview_width - context['custom_preview_image'] = self.get_custom_preview_image(obj=obj) - return context - - def get_custom_preview_image(self, obj): - return obj.icons['32'] if obj else None - class Media: - js = (filer_settings.FILER_STATICMEDIA_PREFIX + 'js/popup_handling.js',) + css = { + "all": ("filer/css/admin_filer.css",) + ICON_CSS_LIB, + } + js = ("filer/js/dist/admin-file-widget.bundle.js",) class AdminFileFormField(forms.ModelChoiceField): @@ -127,8 +107,8 @@ def __init__(self, rel, queryset, to_field_name, *args, **kwargs): self.to_field_name = to_field_name self.max_value = None self.min_value = None - kwargs.pop('widget', None) - super(AdminFileFormField, self).__init__(queryset, widget=self.widget(rel, site), *args, **kwargs) + kwargs.pop("widget", None) + super().__init__(queryset, widget=self.widget(rel, site), *args, **kwargs) def widget_attrs(self, widget): widget.required = self.required @@ -139,29 +119,19 @@ class FilerFileField(models.ForeignKey): default_form_class = AdminFileFormField default_model_class = File - def __init__(self, to=None, *args, **kwargs): - kwargs['to'] = get_model_label(self.default_model_class) - super(FilerFileField, self).__init__(*args, **kwargs) + def __init__(self, **kwargs): + to = kwargs.pop("to", None) + dfl = get_model_label(self.default_model_class) + if to and get_model_label(to).lower() != dfl.lower(): + msg = "In {}: ForeignKey must point to {}; instead passed {}" + warnings.warn(msg.format(self.__class__.__name__, dfl, to), SyntaxWarning) + kwargs["to"] = dfl # hard-code `to` to model `filer.File` + super().__init__(**kwargs) def formfield(self, **kwargs): - # This is a fairly standard way to set up some defaults - # while letting the caller override them. defaults = { - 'form_class': self.default_form_class, - 'rel': self.remote_field, + "form_class": self.default_form_class, + "rel": self.remote_field, } defaults.update(kwargs) - return super(FilerFileField, self).formfield(**defaults) - - def south_field_triple(self): - "Returns a suitable description of this field for South." - # We'll just introspect ourselves, since we inherit. - from south.modelsinspector import introspector - field_class = "django.db.models.fields.related.ForeignKey" - args, kwargs = introspector(self) - # That's our definition! - return (field_class, args, kwargs) - - -class NonClearableFileInput(django_widgets.AdminFileWidget): - template_with_clear = '' + return super().formfield(**defaults) diff --git a/filer/fields/folder.py b/filer/fields/folder.py index a1bf9f88a..5a6dc450a 100644 --- a/filer/fields/folder.py +++ b/filer/fields/folder.py @@ -1,35 +1,35 @@ -#-*- coding: utf-8 -*- -from django.template.loader import render_to_string +import warnings from django import forms -from django.contrib.admin.widgets import ForeignKeyRawIdWidget from django.contrib.admin.sites import site -from django.urls import reverse +from django.contrib.admin.widgets import ForeignKeyRawIdWidget +from django.core.exceptions import ObjectDoesNotExist from django.db import models +from django.template.loader import render_to_string +from django.urls import reverse +from django.utils.http import urlencode from django.utils.safestring import mark_safe -from filer.models import Folder -from filer.settings import FILER_STATICMEDIA_PREFIX -from filer.utils.model_label import get_model_label -try: - from django.utils.text import truncate_words -except ImportError: - from django.template.defaultfilters import truncatewords as truncate_words +from ..models import Folder +from ..settings import ICON_CSS_LIB +from ..utils.compatibility import truncate_words +from ..utils.model_label import get_model_label class AdminFolderWidget(ForeignKeyRawIdWidget): choices = None + input_type = "hidden" + is_hidden = False - - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, renderer=None): obj = self.obj_for_value(value) - css_id = attrs.get('id') + css_id = attrs.get("id") css_id_folder = "%s_folder" % css_id css_id_description_txt = "%s_description_txt" % css_id - required = self.attrs if attrs is None: attrs = {} related_url = None + if value: try: folder = Folder.objects.get(pk=value) @@ -37,52 +37,57 @@ def render(self, name, value, attrs=None): except Exception: pass if not related_url: - related_url = reverse('admin:filer-directory_listing-root') + related_url = reverse("admin:filer-directory_listing-last") params = self.url_parameters() - params['select_folder'] = 1 + params["_pick"] = "folder" if params: - url = '?' + '&'.join( - ['%s=%s' % (k, v) for k, v in list(params.items())]) + url = "?" + urlencode(sorted(params.items())) else: - url = '' - if not 'class' in attrs: + url = "" + if "class" not in attrs: # The JavaScript looks for this hook. - attrs['class'] = 'vForeignKeyRawIdAdminField' + attrs["class"] = "vForeignKeyRawIdAdminField" super_attrs = attrs.copy() hidden_input = super(ForeignKeyRawIdWidget, self).render( - name, value, super_attrs) + name, value, super_attrs + ) # grandparent super # TODO: "id_" is hard-coded here. This should instead use the correct # API to determine the ID dynamically. context = { - 'hidden_input': hidden_input, - 'lookup_url': '%s%s' % (related_url, url), - 'lookup_name': name, - 'span_id': css_id_description_txt, - 'object': obj, - 'clear_id': '%s_clear' % css_id, - 'descid': css_id_description_txt, - 'noimg': '%sicons/nofile_32x32.png' % FILER_STATICMEDIA_PREFIX, - 'foldid': css_id_folder, - 'id': css_id, - } - html = render_to_string('admin/filer/widgets/admin_folder.html', context) + "hidden_input": hidden_input, + "lookup_url": f"{related_url}{url}", + "lookup_name": name, + "span_id": css_id_description_txt, + "object": obj, + "clear_id": "%s_clear" % css_id, + "descid": css_id_description_txt, + "foldid": css_id_folder, + "id": css_id, + } + html = render_to_string("admin/filer/widgets/admin_folder.html", context) return mark_safe(html) def label_for_value(self, value): obj = self.obj_for_value(value) - return ' %s' % truncate_words(obj, 14) + return " %s" % truncate_words(obj, 14) def obj_for_value(self, value): + if not value: + return None try: - key = self.remote_field.get_related_field().name - obj = self.remote_field.model.objects.get(**{key: value}) - except: + key = self.rel.get_related_field().name + obj = self.rel.model._default_manager.get(**{key: value}) + except ObjectDoesNotExist: obj = None return obj class Media: - js = (FILER_STATICMEDIA_PREFIX + 'js/popup_handling.js',) + css = {"all": ("filer/css/admin_filer.css",) + ICON_CSS_LIB} + js = ( + "filer/js/addons/popup_handling.js", + "filer/js/widgets/admin-folder-widget.js", + ) class AdminFolderFormField(forms.ModelChoiceField): @@ -91,11 +96,13 @@ class AdminFolderFormField(forms.ModelChoiceField): def __init__(self, rel, queryset, to_field_name, *args, **kwargs): self.rel = rel self.queryset = queryset + self.limit_choices_to = kwargs.pop("limit_choices_to", None) self.to_field_name = to_field_name self.max_value = None self.min_value = None - kwargs.pop('widget', None) - super(AdminFolderFormField, self).__init__(queryset, widget=self.widget(rel, site), *args, **kwargs) + kwargs.pop("widget", None) + kwargs.pop("blank", None) + forms.Field.__init__(self, widget=self.widget(rel, site), *args, **kwargs) def widget_attrs(self, widget): widget.required = self.required @@ -107,24 +114,22 @@ class FilerFolderField(models.ForeignKey): default_model_class = Folder def __init__(self, **kwargs): - kwargs['to'] = get_model_label(self.default_model_class) - super(FilerFolderField, self).__init__(**kwargs) + # We hard-code the `to` argument for ForeignKey.__init__ + dfl = get_model_label(self.default_model_class) + if "to" in kwargs.keys(): # pragma: no cover + old_to = get_model_label(kwargs.pop("to")) + if old_to.lower() != dfl.lower(): + msg = "{} can only be a ForeignKey to {}; {} passed".format( + self.__class__.__name__, dfl, old_to + ) + warnings.warn(msg, SyntaxWarning) + kwargs["to"] = dfl + super().__init__(**kwargs) def formfield(self, **kwargs): - # This is a fairly standard way to set up some defaults - # while letting the caller override them. defaults = { - 'form_class': self.default_form_class, - 'rel': self.remote_field, + "form_class": self.default_form_class, + "rel": self.remote_field, } defaults.update(kwargs) - return super(FilerFolderField, self).formfield(**defaults) - - def south_field_triple(self): - "Returns a suitable description of this field for South." - # We'll just introspect ourselves, since we inherit. - from south.modelsinspector import introspector - field_class = "django.db.models.fields.related.ForeignKey" - args, kwargs = introspector(self) - # That's our definition! - return (field_class, args, kwargs) + return super().formfield(**defaults) diff --git a/filer/fields/image.py b/filer/fields/image.py index c9eabe90d..d1ff162bb 100644 --- a/filer/fields/image.py +++ b/filer/fields/image.py @@ -1,13 +1,9 @@ -#-*- coding: utf-8 -*- -from filer.fields.file import AdminFileWidget, AdminFileFormField, \ - FilerFileField -from filer.models import Image +from .. import settings +from .file import AdminFileFormField, AdminFileWidget, FilerFileField class AdminImageWidget(AdminFileWidget): - - def get_custom_preview_image(self, obj): - return obj.url if obj else None + pass class AdminImageFormField(AdminFileFormField): @@ -16,4 +12,4 @@ class AdminImageFormField(AdminFileFormField): class FilerImageField(FilerFileField): default_form_class = AdminImageFormField - default_model_class = Image + default_model_class = settings.FILER_IMAGE_MODEL diff --git a/filer/fields/multistorage_file.py b/filer/fields/multistorage_file.py index 9be171cdf..99f730403 100644 --- a/filer/fields/multistorage_file.py +++ b/filer/fields/multistorage_file.py @@ -1,10 +1,16 @@ -#-*- coding: utf-8 -*- -from easy_thumbnails import fields as easy_thumbnails_fields, \ - files as easy_thumbnails_files +import base64 +import hashlib +import warnings +from io import BytesIO -from filer import settings as filer_settings -from filer.utils.filer_easy_thumbnails import ThumbnailerNameMixin -from filer.utils.cdn import get_cdn_url +from django.core.files.base import ContentFile +from django.db.models.fields.files import FileDescriptor + +from easy_thumbnails import fields as easy_thumbnails_fields +from easy_thumbnails import files as easy_thumbnails_files + +from .. import settings as filer_settings +from ..utils.filer_easy_thumbnails import ThumbnailerNameMixin STORAGES = { @@ -33,18 +39,30 @@ def generate_filename_multistorage(instance, filename): return upload_to -class CdnAwareThumbnailFile(object): - - def __init__(self, thumbnail_file, filer_file): - self._thumbnail_file = thumbnail_file - self._filer_file = filer_file - - def __getattr__(self, attr_name): - return getattr(self._thumbnail_file, attr_name) - - @property - def url(self): - return get_cdn_url(self._filer_file, self._thumbnail_file.url) +class MultiStorageFileDescriptor(FileDescriptor): + """ + This is rather similar to Django's ImageFileDescriptor. + It calls _data_changed on model instance when new + value is set. The callback is supposed to update fields which + are related to file data (like size, checksum, etc.). + When this is called from model __init__ (prev_assigned=False), + it does nothing because related fields might not have values yet. + In such case data_changed callback should be called at the end of model __init__ + (File.__init__ in this case). + """ + def __set__(self, instance, value): + prev_assigned = self.field.name in instance.__dict__ + previous_file = instance.__dict__.get(self.field.name) + super().__set__(instance, value) + + # To prevent recalculating file data related attributes when we are instantiating + # an object from the database, update only if the field had a value before this assignment. + # To prevent recalculating upon reassignment of the same file, update only if value is + # different from the previous one. + if prev_assigned and value != previous_file: + callback_attr = f'{self.field.name}_data_changed' + if hasattr(instance, callback_attr): + getattr(instance, callback_attr)() class MultiStorageFieldFile(ThumbnailerNameMixin, @@ -52,7 +70,7 @@ class MultiStorageFieldFile(ThumbnailerNameMixin, def __init__(self, instance, field, name): """ This is a little weird, but I couldn't find a better solution. - Thumbnailer.__init__ is called first for proper object inizialization. + Thumbnailer.__init__ is called first for proper object initialisation. Then we override some attributes defined at runtime with properties. We cannot simply call super().__init__ because filer Field objects doesn't have a storage attribute. @@ -97,41 +115,63 @@ def _thumbnail_base_dir(self): else: return self.thumbnail_options['private'].get('base_dir', '') - def _get_url(self): - if self.instance.is_in_trash(): - return '' - url = super(MultiStorageFieldFile, self).url - return get_cdn_url(self.instance, url) - url = property(_get_url) - def save(self, name, content, save=True): - content.seek(0) # Ensure we upload the whole file - super(MultiStorageFieldFile, self).save(name, content, save) - - def get_thumbnail(self, opts, save=True, generate=None): - if self.instance.is_in_trash(): - return None - thumbnail = super(MultiStorageFieldFile, self).get_thumbnail(opts, save, generate) - return CdnAwareThumbnailFile(thumbnail, self.instance) + content.seek(0) # Ensure we upload the whole file + super().save(name, content, save) - def get_thumbnails(self, *args, **kwargs): - if self.instance.is_in_trash(): - return [] - return super(MultiStorageFieldFile, self).get_thumbnails( - *args, **kwargs) + def exists(self): + """ + Returns ``True`` if underlying file exists in storage. + """ + return self.name and self.storage.exists(self.name) class MultiStorageFileField(easy_thumbnails_fields.ThumbnailerField): attr_class = MultiStorageFieldFile + descriptor_class = MultiStorageFileDescriptor def __init__(self, verbose_name=None, name=None, storages=None, thumbnail_storages=None, thumbnail_options=None, **kwargs): - # fix for makemigrations - kwargs.pop("upload_to", None) + if 'upload_to' in kwargs: # pragma: no cover + upload_to = kwargs.pop("upload_to") + if upload_to != generate_filename_multistorage: + warnings.warn("MultiStorageFileField can handle only File objects;" + "%s passed" % upload_to, SyntaxWarning) self.storages = storages or STORAGES self.thumbnail_storages = thumbnail_storages or THUMBNAIL_STORAGES self.thumbnail_options = thumbnail_options or THUMBNAIL_OPTIONS super(easy_thumbnails_fields.ThumbnailerField, self).__init__( - verbose_name=verbose_name, name=name, - upload_to=generate_filename_multistorage, - storage=None, **kwargs) + verbose_name=verbose_name, name=name, + upload_to=generate_filename_multistorage, + storage=None, **kwargs) # grandparent super + + def value_to_string(self, obj): + value = super().value_to_string(obj) + if not filer_settings.FILER_DUMP_PAYLOAD: + return value + try: + payload_file = BytesIO(self.storage.open(value).read()) + sha = hashlib.sha1() + sha.update(payload_file.read()) + if sha.hexdigest() != obj.sha1: + warnings.warn('The checksum for "%s" diverges. Check for file consistency!' % obj.original_filename) + payload_file.seek(0) + encoded_string = base64.b64encode(payload_file.read()).decode('utf-8') + return value, encoded_string + except OSError: + warnings.warn(f'The payload for "{obj.original_filename}" is missing. No such file on disk: {self.storage.location}!') + return value + + def to_python(self, value): + if isinstance(value, list) and len(value) == 2 and isinstance(value[0], str): + filename, payload = value + try: + payload = base64.b64decode(payload) + except TypeError: + pass + else: + if self.storage.exists(filename): + self.storage.delete(filename) + self.storage.save(filename, ContentFile(payload)) + return filename + return value diff --git a/filer/server/backends/base.py b/filer/server/backends/base.py index 6a843ea0e..5e811ee4e 100644 --- a/filer/server/backends/base.py +++ b/filer/server/backends/base.py @@ -1,18 +1,14 @@ -#-*- coding: utf-8 -*- -from django.utils.encoding import smart_str -import mimetypes import os +from django.utils.encoding import smart_str + -class ServerBase(object): +class ServerBase: """ Server classes define a way to serve a Django File object. Warning: this API is EXPERIMENTAL and may change at any time. """ - def get_mimetype(self, path): - return mimetypes.guess_type(path)[0] or 'application/octet-stream' - def default_headers(self, **kwargs): self.save_as_header(**kwargs) self.size_header(**kwargs) @@ -21,24 +17,29 @@ def save_as_header(self, response, **kwargs): """ * if save_as is False the header will not be added * if save_as is a filename, it will be used in the header - * if save_as is None the filename will be determined from the file path + * if save_as is True or None the filename will be determined from the + file path """ save_as = kwargs.get('save_as', None) - if save_as == False: + if save_as is False: return file_obj = kwargs.get('file_obj', None) - filename = None - if save_as: - filename = save_as - else: + if save_as is True or save_as is None: filename = os.path.basename(file_obj.path) - response['Content-Disposition'] = smart_str('attachment; filename=%s' % filename) + else: + filename = save_as + response['Content-Disposition'] = smart_str( + 'attachment; filename=%s' % filename) def size_header(self, response, **kwargs): size = kwargs.get('size', None) - #file = kwargs.get('file', None) + # file = kwargs.get('file', None) if size: response['Content-Length'] = size - # we should not do this, because it accesses the file. and that might be an expensive operation. + # we should not do this, because it accesses the file. and that might + # be an expensive operation. # elif file and file.size is not None: # response['Content-Length'] = file.size + + def serve(self, request, filer_file, **kwargs): + raise NotImplementedError(".serve() must be overridden") diff --git a/filer/server/backends/default.py b/filer/server/backends/default.py index 172ac1871..2aed251d4 100644 --- a/filer/server/backends/default.py +++ b/filer/server/backends/default.py @@ -1,10 +1,11 @@ -#-*- coding: utf-8 -*- import os import stat + from django.http import Http404, HttpResponse, HttpResponseNotModified from django.utils.http import http_date from django.views.static import was_modified_since -from filer.server.backends.base import ServerBase + +from .base import ServerBase class DefaultServer(ServerBase): @@ -14,19 +15,19 @@ class DefaultServer(ServerBase): This will only work for files that can be accessed in the local filesystem. """ - def serve(self, request, file_obj, **kwargs): - fullpath = file_obj.path + def serve(self, request, filer_file, **kwargs): + fullpath = filer_file.path # the following code is largely borrowed from `django.views.static.serve` # and django-filetransfers: filetransfers.backends.default if not os.path.exists(fullpath): raise Http404('"%s" does not exist' % fullpath) # Respect the If-Modified-Since header. statobj = os.stat(fullpath) - mimetype = self.get_mimetype(fullpath) + response_params = {'content_type': filer_file.mime_type} if not was_modified_since(request.META.get('HTTP_IF_MODIFIED_SINCE'), statobj[stat.ST_MTIME]): - return HttpResponseNotModified(content_type=mimetype) - response = HttpResponse(open(fullpath, 'rb').read(), content_type=mimetype) + return HttpResponseNotModified(**response_params) + response = HttpResponse(open(fullpath, 'rb').read(), **response_params) response["Last-Modified"] = http_date(statobj[stat.ST_MTIME]) - self.default_headers(request=request, response=response, file_obj=file_obj, **kwargs) + self.default_headers(request=request, response=response, file_obj=filer_file.file, **kwargs) return response diff --git a/filer/server/backends/nginx.py b/filer/server/backends/nginx.py index d0b6e9adf..03a7ff17f 100644 --- a/filer/server/backends/nginx.py +++ b/filer/server/backends/nginx.py @@ -1,6 +1,6 @@ -#-*- coding: utf-8 -*- from django.http import HttpResponse -from filer.server.backends.base import ServerBase + +from .base import ServerBase class NginxXAccelRedirectServer(ServerBase): @@ -18,11 +18,10 @@ def __init__(self, location, nginx_location): def get_nginx_location(self, path): return path.replace(self.location, self.nginx_location) - def serve(self, request, file_obj, **kwargs): - # we should not use get_mimetype() here, because it tries to access the file in the filesystem. - #response = HttpResponse(content_type=self.get_mimetype(file.path)) + def serve(self, request, filer_file, **kwargs): response = HttpResponse() - nginx_path = self.get_nginx_location(file_obj.path) + response['Content-Type'] = filer_file.mime_type + nginx_path = self.get_nginx_location(filer_file.path) response['X-Accel-Redirect'] = nginx_path - self.default_headers(request=request, response=response, file_obj=file_obj, **kwargs) + self.default_headers(request=request, response=response, file_obj=filer_file.file, **kwargs) return response diff --git a/filer/server/backends/xsendfile.py b/filer/server/backends/xsendfile.py index cd3316f64..476a87f7b 100644 --- a/filer/server/backends/xsendfile.py +++ b/filer/server/backends/xsendfile.py @@ -1,17 +1,17 @@ -#-*- coding: utf-8 -*- from django.http import HttpResponse -from filer.server.backends.base import ServerBase + +from .base import ServerBase class ApacheXSendfileServer(ServerBase): - def serve(self, request, file_obj, **kwargs): + def serve(self, request, filer_file, **kwargs): response = HttpResponse() - response['X-Sendfile'] = file_obj.path + response['X-Sendfile'] = filer_file.path # This is needed for lighttpd, hopefully this will # not be needed after this is fixed: # http://redmine.lighttpd.net/issues/2076 - response['Content-Type'] = self.get_mimetype(file_obj.path) + response['Content-Type'] = filer_file.mime_type - self.default_headers(request=request, response=response, file_obj=file_obj, **kwargs) + self.default_headers(request=request, response=response, file_obj=filer_file.file, **kwargs) return response diff --git a/filer/server/main_server_urls.py b/filer/server/main_server_urls.py index bb555c1a3..232c1fe2a 100644 --- a/filer/server/main_server_urls.py +++ b/filer/server/main_server_urls.py @@ -1,8 +1,8 @@ -#-*- coding: utf-8 -*- from django.urls import re_path from . import views + urlpatterns = [ - re_path(r'^(?P.*)$', views.serve_protected_file) + re_path(r'^(?P.*)$', views.serve_protected_file), ] diff --git a/filer/server/thumbnails_server_urls.py b/filer/server/thumbnails_server_urls.py index 072f51cac..7d2cb0395 100644 --- a/filer/server/thumbnails_server_urls.py +++ b/filer/server/thumbnails_server_urls.py @@ -1,8 +1,8 @@ -#-*- coding: utf-8 -*- from django.urls import re_path from . import views + urlpatterns = [ - re_path(r'^(?P.*)$', views.serve_protected_thumbnail) + re_path(r'^(?P.*)$', views.serve_protected_thumbnail), ] diff --git a/filer/server/urls.py b/filer/server/urls.py index 14a1a0f4d..8f758dcc9 100644 --- a/filer/server/urls.py +++ b/filer/server/urls.py @@ -1,8 +1,12 @@ -#-*- coding: utf-8 -*- -from django.urls import re_path, include -from filer import settings as filer_settings +from django.urls import include, re_path -urlpatterns = [ - re_path(r'^' + filer_settings.FILER_PRIVATEMEDIA_STORAGE.base_url.lstrip('/'), include('filer.server.main_server_urls')), - re_path(r'^' + filer_settings.FILER_PRIVATEMEDIA_THUMBNAIL_STORAGE.base_url.lstrip('/'), include('filer.server.thumbnails_server_urls')) -] +from .. import settings as filer_settings + + +if not filer_settings.FILER_0_8_COMPATIBILITY_MODE: + urlpatterns = [ + re_path(r'^' + filer_settings.FILER_PRIVATEMEDIA_STORAGE.base_url.lstrip('/'), include('filer.server.main_server_urls')), + re_path(r'^' + filer_settings.FILER_PRIVATEMEDIA_THUMBNAIL_STORAGE.base_url.lstrip('/'), include('filer.server.thumbnails_server_urls')), + ] +else: + urlpatterns = [] diff --git a/filer/server/views.py b/filer/server/views.py index ea26c9def..90b394abb 100644 --- a/filer/server/views.py +++ b/filer/server/views.py @@ -1,14 +1,20 @@ -#-*- coding: utf-8 -*- +from django.conf import settings +from django.core.exceptions import PermissionDenied from django.http import Http404 +from django.views.decorators.cache import never_cache + from easy_thumbnails.files import ThumbnailFile -from filer import settings as filer_settings -from filer.models import File -from filer.utils.filer_easy_thumbnails import thumbnail_to_original_filename + +from .. import settings as filer_settings +from ..models import File +from ..utils.filer_easy_thumbnails import thumbnail_to_original_filename + server = filer_settings.FILER_PRIVATEMEDIA_SERVER thumbnail_server = filer_settings.FILER_PRIVATEMEDIA_THUMBNAIL_SERVER +@never_cache def serve_protected_file(request, path): """ Serve protected files to authenticated users with read permissions. @@ -17,9 +23,15 @@ def serve_protected_file(request, path): file_obj = File.objects.get(file=path, is_public=False) except File.DoesNotExist: raise Http404('File not found') - return server.serve(request, file_obj=file_obj.file, save_as=False) + if not file_obj.has_read_permission(request): + if settings.DEBUG: + raise PermissionDenied + else: + raise Http404('File not found') + return server.serve(request, file_obj, save_as=False) +@never_cache def serve_protected_thumbnail(request, path): """ Serve protected thumbnails to authenticated users. @@ -32,8 +44,14 @@ def serve_protected_thumbnail(request, path): file_obj = File.objects.get(file=source_path, is_public=False) except File.DoesNotExist: raise Http404('File not found') + if not file_obj.has_read_permission(request): + if settings.DEBUG: + raise PermissionDenied + else: + raise Http404('File not found') try: thumbnail = ThumbnailFile(name=path, storage=file_obj.file.thumbnail_storage) + thumbnail.mime_type = file_obj.mime_type return thumbnail_server.serve(request, thumbnail, save_as=False) except Exception: raise Http404('File not found') diff --git a/filer/templatetags/filer_admin_tags.py b/filer/templatetags/filer_admin_tags.py index 8dd08a542..8ef9bd9fe 100644 --- a/filer/templatetags/filer_admin_tags.py +++ b/filer/templatetags/filer_admin_tags.py @@ -1,13 +1,32 @@ -from django.conf import settings +from math import ceil + +from django.contrib.staticfiles.storage import staticfiles_storage +from django.core.files.storage import FileSystemStorage from django.template import Library -from packaging.version import parse -import django -import pytz -import datetime -import filer +from django.templatetags.static import static +from django.urls import reverse +from django.utils.html import escapejs, format_html_join +from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ + +from easy_thumbnails.engine import NoSourceGenerator +from easy_thumbnails.exceptions import InvalidImageFormatError +from easy_thumbnails.files import get_thumbnailer +from easy_thumbnails.options import ThumbnailOptions + +from filer import settings +from filer.admin.tools import admin_url_params, admin_url_params_encoded +from filer.models.imagemodels import BaseImage +from filer.settings import ( + DEFERRED_THUMBNAIL_SIZES, FILER_MAX_SVG_THUMBNAIL_SIZE, FILER_TABLE_ICON_SIZE, FILER_THUMBNAIL_ICON_SIZE, +) + register = Library() +assignment_tag = getattr(register, 'assignment_tag', register.simple_tag) + + def filer_actions(context): """ Track the number of times the action field has been rendered on the page, @@ -15,121 +34,196 @@ def filer_actions(context): """ context['action_index'] = context.get('action_index', -1) + 1 return context -filer_actions = register.inclusion_tag("admin/filer/actions.html", takes_context=True)(filer_actions) -if parse(django.get_version()) < parse('1.4'): - ADMIN_ICON_BASE = "%sadmin/img/admin/" % settings.STATIC_URL -else: - ADMIN_ICON_BASE = "%sadmin/img/" % settings.STATIC_URL -ADMIN_CSS_BASE = "%sadmin/css/" % settings.STATIC_URL -ADMIN_JS_BASE = "%sadmin/js/" % settings.STATIC_URL +filer_actions = register.inclusion_tag( + "admin/filer/actions.html", takes_context=True)(filer_actions) + + +@register.inclusion_tag( + 'admin/filer/folder/list_type_switcher.html', + takes_context=True, +) +def filer_folder_list_type_switcher(context): + choice_list = settings.FILER_FOLDER_ADMIN_LIST_TYPE_CHOICES + current_list_type = context['list_type'] + # This solution is user-friendly when there's only 2 choices + # If there will be more list types then please change this switcher to more + # proper widget (like for e.g. select list) + next_list_type = next( + iter(choice_list[choice_list.index(current_list_type) + 1:]), + choice_list[0], + ) + + context['url'] = admin_url_params_encoded( + context['request'], + params={'_list_type': next_list_type}, + ) + context['tooltip_text'] = settings.FILER_FOLDER_ADMIN_LIST_TYPE_SWITCHER_SETTINGS[next_list_type]['tooltip_text'] + context['icon'] = settings.FILER_FOLDER_ADMIN_LIST_TYPE_SWITCHER_SETTINGS[next_list_type]['icon'] + return context + -@register.simple_tag -def admin_icon_base(): - return ADMIN_ICON_BASE +@register.simple_tag(takes_context=True) +def filer_admin_context_url_params(context, first_separator='?'): + return admin_url_params_encoded( + context['request'], first_separator=first_separator) -@register.simple_tag -def admin_css_base(): - return ADMIN_CSS_BASE -@register.simple_tag -def admin_js_base(): - return ADMIN_JS_BASE +@register.simple_tag(takes_context=True) +def filer_admin_context_hidden_formfields(context): + request = context.get('request') + return format_html_join( + '\n', + '', + admin_url_params(request).items(), + ) + + +@assignment_tag(takes_context=True) +def filer_has_permission(context, item, action): + """Does the current user (taken from the request in the context) have + permission to do the given action on the given item. -@register.inclusion_tag('admin/filer/submit_line.html', takes_context=True) -def submit_row(context): - """ - Displays the row of buttons for delete and save. """ - opts = context['opts'] - change = context['change'] - is_popup = context['is_popup'] - save_as = context['save_as'] - ctx = { - 'opts': opts, - 'obj': context.get('original'), - 'show_delete_link': not is_popup and context['has_delete_permission'] and change and context.get('show_delete', True), - 'show_save_as_new': not is_popup and change and save_as, - 'show_save_and_add_another': context['has_add_permission'] and not is_popup and (not save_as or context['add']), - 'show_save_and_continue': not is_popup and context['has_change_permission'], - 'is_popup': is_popup, - 'show_save': True, - 'preserved_filters': context.get('preserved_filters'), + permission_method_name = f'has_{action}_permission' + permission_method = getattr(item, permission_method_name, None) + request = context.get('request') + + if not permission_method or not request: + return False + # Call the permission method. + # This amounts to calling `item.has_X_permission(request)` + return permission_method(request) + + +def file_icon_context(file, detail, width, height): + mime_maintype, mime_subtype = file.mime_maintype, file.mime_subtype + context = { + 'mime_maintype': mime_maintype, + 'mime_type': file.mime_type, } - if context.get('original') is not None: - ctx['original'] = context['original'] - return ctx + height, width, context = get_aspect_ratio_and_download_url(context, detail, file, height, width) + # returned context if icon is not available + not_available_context = { + 'icon_url': staticfiles_storage.url('filer/icons/file-missing.svg'), + 'alt_text': _("File is missing"), + 'width': width, + 'height': width, # The icon is a square + } + # Check if file exists for performance reasons (only on FileSystemStorage) + if file.file and isinstance(file.file.source_storage, FileSystemStorage) and not file.file.exists(): + return not_available_context + + add_styles = {} + if isinstance(file, BaseImage): + thumbnailer = get_thumbnailer(file) + + # SVG files may contain multiple vector graphics, and width and height are not available for them. If file does + # not have width or height just ignore the thumbnail icon. Otherwise, continue with the standard procedure. + if file.width == 0.0 or file.height == 0.0: + icon_url = staticfiles_storage.url('filer/icons/file-unknown.svg') + else: + if detail: + opts = {'size': (width, height), 'upscale': True} + else: + opts = {'size': (width, height), 'crop': True} + thumbnail_options = ThumbnailOptions(opts) + # Optimize directory listing: + if width == height and width in DEFERRED_THUMBNAIL_SIZES and hasattr(file, "thumbnail_name"): + # Get name of thumbnail from easy-thumbnail + configured_name = thumbnailer.get_thumbnail_name(thumbnail_options, transparent=file._transparent) + # If the name was annotated: Thumbnail exists and we can use it + if configured_name == file.thumbnail_name: + icon_url = file.file.thumbnail_storage.url(configured_name) + if mime_subtype != 'svg+xml' and file.thumbnailx2_name: + context['highres_url'] = file.file.thumbnail_storage.url(file.thumbnailx2_name) + elif mime_subtype == 'svg+xml': + if file.size < FILER_MAX_SVG_THUMBNAIL_SIZE: + icon_url = file.url + else: + # Only display a generic image icon + # Better solution: Render a bitmap thumbnail from SVG + icon_url = staticfiles_storage.url('filer/icons/file-picture.svg') + add_styles = { + "object-fit": "cover", # Mimic the behavior of the thumbnail + } + else: # Probably does not exist, defer creation + icon_url = reverse("admin:filer_file_fileicon", args=(file.pk, width)) + context['alt_text'] = file.default_alt_text + else: + # Try creating thumbnails / take existing ones + try: + icon_url = thumbnailer.get_thumbnail(thumbnail_options).url + context['alt_text'] = file.default_alt_text + if mime_subtype != 'svg+xml': + thumbnail_options['size'] = 2 * width, 2 * height + context['highres_url'] = thumbnailer.get_thumbnail(thumbnail_options).url + except (InvalidImageFormatError, NoSourceGenerator): + # This is caught by file.exists() for file storage systems + # For remote storage systems we catch the error to avoid second trip + # to the storage system + return not_available_context + elif mime_maintype in ['audio', 'font', 'video']: + icon_url = staticfiles_storage.url(f'filer/icons/file-{mime_maintype}.svg') + height = width # icon is a square + elif mime_maintype == 'application' and mime_subtype in ['zip', 'pdf']: + icon_url = staticfiles_storage.url(f'filer/icons/file-{mime_subtype}.svg') + height = width # icon is a square + else: + icon_url = staticfiles_storage.url('filer/icons/file-unknown.svg') + height = width # icon is a square + context.update(width=width, height=height, icon_url=icon_url) + if add_styles: + styles = "; ".join(f"{k}: {v}" for k, v in add_styles.items()) + context.update(add_styles=f'style="{styles}"') + return context +def get_aspect_ratio_and_download_url(context, detail, file, height, width): + # Get download_url and aspect ratio right for detail view + if detail: + context['download_url'] = file.url + if isinstance(file, BaseImage): + # only check for file width, if the file + # is actually an image and not on other files + # because they don't really have width or height + if file.width: + width, height = 210, ceil(210 / file.width * file.height) + context['sidebar_image_ratio'] = '%.6f' % (file.width / 210) + return height, width, context -@register.simple_tag(takes_context=True) -def get_popup_params(context, sep='?'): - is_popup = context.get('is_popup', False) - select_folder = context.get('select_folder', False) - current_site = context.get('current_site', False) - file_type = context.get('file_type', None) - params = '' - if is_popup: - params += '%s_popup=1' % sep - if select_folder: - params += '&select_folder=1' - if current_site: - params += '¤t_site=%s' % current_site - if file_type: - params += '&file_type=%s' % file_type - - return params - - -@register.filter -def is_restricted_for_user(filer_obj, user): - return (filer_obj.is_readonly_for_user(user) or - filer_obj.is_restricted_for_user(user)) - - -@register.filter -def is_readonly_for_user(filer_obj, user): - return filer_obj.is_readonly_for_user(user) - - -@register.filter -def can_change_folder(folder, user): - return folder.has_change_permission(user) - - -@register.filter -def pretty_display(filer_obj): - if isinstance(filer_obj, filer.models.Folder): - return '/%s' % '/'.join(filer_obj.get_ancestors(include_self=True) - .values_list('name', flat=True)) - if isinstance(filer_obj, filer.models.File): - name = filer_obj.actual_name - if not filer_obj.folder_id: - return '/%s' % name - return '/%s' % '/'.join( - list(filer.models.Folder.all_objects.get(id=filer_obj.folder_id) - .get_ancestors(include_self=True) - .values_list('name', flat=True)) + [name]) - return '' - - -def _build_timezone_dict(): - offset_with_timezone = {} - for zone in pytz.common_timezones: - timezone_obj = pytz.timezone(zone) - zone_offset = datetime.datetime.now(timezone_obj).strftime("%z") - offset_with_timezone[zone_offset] = timezone_obj - return offset_with_timezone - -_OFFSETS_WITH_TIMEZONES = _build_timezone_dict() -@register.simple_tag(takes_context=True) -def client_timezone(context, date): - gmt_offset = context.get('request').COOKIES.get('gmt_offset', None) - if not gmt_offset: - return date - client_timezone = _OFFSETS_WITH_TIMEZONES.get(gmt_offset, None) - if not client_timezone: - return date - return date.astimezone(client_timezone) +@register.inclusion_tag('admin/filer/templatetags/file_icon.html') +def file_icon(file, detail=False, size=None): + """ + This templatetag returns a rendered ` + to be used for rendering thumbnails of files in the directory listing or in the corresponding detail + views for that image. + """ + if size: + width, height = (int(s) for s in size.split('x')) + elif detail == "thumbnail": + width, height = FILER_THUMBNAIL_ICON_SIZE, FILER_THUMBNAIL_ICON_SIZE + elif detail is True: + width, height = 2 * FILER_TABLE_ICON_SIZE, 2 * FILER_TABLE_ICON_SIZE + else: + width, height = FILER_TABLE_ICON_SIZE, FILER_TABLE_ICON_SIZE + return file_icon_context(file, detail is True, width, height) + + +@register.simple_tag +def file_icon_url(file): + # Cache since it is called repeatedly by templates + if not hasattr(file, "_file_icon_url_cache"): + context = file_icon_context(file, False, 2 * FILER_TABLE_ICON_SIZE, 2 * FILER_TABLE_ICON_SIZE) + file._file_icon_url_cache = escapejs(context.get('highres_url', context['icon_url'])) + return file._file_icon_url_cache + + +@register.simple_tag +def icon_css_library(): + html = "" + for lib in settings.ICON_CSS_LIB: + html += f'' + return mark_safe(html) diff --git a/filer/templatetags/filer_image_tags.py b/filer/templatetags/filer_image_tags.py index 78a58d716..5588521f1 100644 --- a/filer/templatetags/filer_image_tags.py +++ b/filer/templatetags/filer_image_tags.py @@ -1,12 +1,17 @@ -#-*- coding: utf-8 -*- -from django.template import Library import re +from django.template import Library + + register = Library() RE_SIZE = re.compile(r'(\d+)x(\d+)$') +def percentage(part, whole): + return 100 * float(part) / float(whole) + + def _recalculate_size(size, index, divisor=0, padding=0, keep_aspect_ratio=False): new_one = size[index] @@ -15,8 +20,8 @@ def _recalculate_size(size, index, divisor=0, padding=0, if padding: new_one = new_one - padding if keep_aspect_ratio: - new_two = int(float(new_one) * \ - float(size[int(not index)]) / size[index]) + new_two = int( + float(new_one) * float(size[int(not index)]) / size[index]) else: new_two = int(size[int(not index)]) @@ -56,6 +61,8 @@ def extra_padding_x(original_size, padding): Reduce the width of `original_size` by `padding` """ return _resize(original_size, 0, padding=padding) + + extra_padding_x = register.filter(extra_padding_x) @@ -65,6 +72,8 @@ def extra_padding_x_keep_ratio(original_size, padding): ratio. """ return _resize(original_size, 0, padding=padding, keep_aspect_ratio=True) + + extra_padding_x_keep_ratio = register.filter(extra_padding_x_keep_ratio) @@ -73,6 +82,8 @@ def extra_padding_y(original_size, padding): Reduce the height of `original_size` by `padding` """ return _resize(original_size, 1, padding=padding) + + extra_padding_y = register.filter(extra_padding_y) @@ -82,16 +93,22 @@ def extra_padding_y_keep_ratio(original_size, padding): ratio. """ return _resize(original_size, 1, padding=padding, keep_aspect_ratio=True) + + extra_padding_y_keep_ratio = register.filter(extra_padding_y_keep_ratio) def divide_x_by(original_size, divisor): return _resize(original_size, 0, divisor=divisor) + + devide_x_by = register.filter(divide_x_by) def divide_y_by(original_size, divisor): return _resize(original_size, 1, divisor=divisor) + + devide_y_by = register.filter(divide_y_by) @@ -99,4 +116,24 @@ def divide_xy_by(original_size, divisor): size = divide_x_by(original_size, divisor=divisor) size = divide_y_by(size, divisor=divisor) return size + + divide_xy_by = register.filter(divide_xy_by) + + +def get_css_position(image): + if not image or not image.subject_location: + return '50% 50%' + + x, y = image.subject_location.split(',') + width = image.width + height = image.height + + coords = '{}% {}%'.format( + percentage(x, width), + percentage(y, height) + ) + return coords + + +get_css_position = register.filter(get_css_position) diff --git a/filer/templatetags/filer_tags.py b/filer/templatetags/filer_tags.py index f481c50e0..faaba6109 100644 --- a/filer/templatetags/filer_tags.py +++ b/filer/templatetags/filer_tags.py @@ -1,7 +1,8 @@ -#-*- coding: utf-8 -*- -from django.template import Library import math +from django.template import Library + + register = Library() # The templatetag below is copied from sorl.thumbnail @@ -49,6 +50,7 @@ def filesize(bytes, format='auto1024'): elif format not in ('auto1024', 'auto1000', 'auto1024long', 'auto1000long'): return bytes + # Check for valid bytes try: bytes = int(bytes) @@ -82,12 +84,12 @@ def filesize(bytes, format='auto1024'): unit = filesize_long_formats.get(unit, '') if base == 1024 and unit: unit = '%sbi' % unit[:2] - unit = '%sbyte%s' % (unit, bytes != '1' and 's' or '') + unit = '{}byte{}'.format(unit, bytes != '1' and 's' or '') else: - unit = '%s%s' % (base == 1024 and unit.upper() or unit, + unit = '{}{}'.format(base == 1024 and unit.upper() or unit, base == 1024 and 'iB' or 'B') - return '%s %s' % (bytes, unit) + return f'{bytes} {unit}' if bytes == 0: return bytes @@ -99,4 +101,6 @@ def filesize(bytes, format='auto1024'): elif format_len == 3: bytes = bytes >> (10 * (base - 1)) return bytes / 1024.0 + + register.filter(filesize) diff --git a/filer/templatetags/filermedia.py b/filer/templatetags/filermedia.py deleted file mode 100644 index 84a7f60f7..000000000 --- a/filer/templatetags/filermedia.py +++ /dev/null @@ -1,16 +0,0 @@ -#-*- coding: utf-8 -*- -from django.template import Library - -register = Library() - - -def filer_staticmedia_prefix(): - """ - Returns the string contained in the setting FILER_STATICMEDIA_PREFIX. - """ - try: - from filer import settings - except ImportError: - return '' - return settings.FILER_STATICMEDIA_PREFIX -filer_staticmedia_prefix = register.simple_tag(filer_staticmedia_prefix) diff --git a/filer/thumbnail_processors.py b/filer/thumbnail_processors.py index a06b4ef73..04fc43789 100644 --- a/filer/thumbnail_processors.py +++ b/filer/thumbnail_processors.py @@ -1,16 +1,18 @@ -#-*- coding: utf-8 -*- import re + +from easy_thumbnails import processors + +from .settings import FILER_SUBJECT_LOCATION_IMAGE_DEBUG, FILER_WHITESPACE_COLOR + + try: - from PIL import Image - from PIL import ImageDraw + from PIL import Image, ImageDraw except ImportError: try: import Image import ImageDraw except ImportError: raise ImportError("The Python Imaging Library was not found.") -from easy_thumbnails import processors -from filer.settings import FILER_SUBJECT_LOCATION_IMAGE_DEBUG RE_SUBJECT_LOCATION = re.compile(r'^(\d+),(\d+)$') @@ -30,12 +32,13 @@ def normalize_subject_location(subject_location): def scale_and_crop_with_subject_location(im, size, subject_location=False, - crop=False, upscale=False, **kwargs): + zoom=None, crop=False, upscale=False, + **kwargs): """ Like ``easy_thumbnails.processors.scale_and_crop``, but will use the coordinates in ``subject_location`` to make sure that that part of the image is in the center or at least somewhere on the cropped image. - Please not that this does *not* work correctly if the image has been + Please note that this does *not* work correctly if the image has been resized by a previous processor (e.g ``autocrop``). ``crop`` needs to be set for this to work, but any special cropping @@ -44,15 +47,15 @@ def scale_and_crop_with_subject_location(im, size, subject_location=False, subject_location = normalize_subject_location(subject_location) if not (subject_location and crop): # use the normal scale_and_crop - return processors.scale_and_crop(im, size, crop=crop, + return processors.scale_and_crop(im, size, zoom=zoom, crop=crop, upscale=upscale, **kwargs) # for here on we have a subject_location and cropping is on # --snip-- this is a copy and paste of the first few # lines of ``scale_and_crop`` - source_x, source_y = [float(v) for v in im.size] - target_x, target_y = [float(v) for v in size] + source_x, source_y = (float(v) for v in im.size) + target_x, target_y = (float(v) for v in size) if crop or not target_x or not target_y: scale = max(target_x / source_x, target_y / source_y) @@ -65,16 +68,27 @@ def scale_and_crop_with_subject_location(im, size, subject_location=False, elif not target_y: target_y = source_y * scale + if zoom: + if not crop: + target_x = round(source_x * scale) + target_y = round(source_y * scale) + scale *= (100 + int(zoom)) / 100.0 + if scale < 1.0 or (scale > 1.0 and upscale): - im = im.resize((int(source_x * scale), int(source_y * scale)), - resample=Image.ANTIALIAS) + try: + im = im.resize((int(source_x * scale), int(source_y * scale)), + resample=Image.LANCZOS) + except AttributeError: # pragma: no cover + im = im.resize((int(source_x * scale), int(source_y * scale)), + resample=Image.ANTIALIAS) + # --endsnip-- begin real code # =============================== # subject location aware cropping # =============================== # res_x, res_y: the resolution of the possibly already resized image - res_x, res_y = [float(v) for v in im.size] + res_x, res_y = (float(v) for v in im.size) # subj_x, subj_y: the position of the subject (maybe already re-scaled) subj_x = res_x * float(subject_location[0]) / source_x @@ -110,10 +124,37 @@ def scale_and_crop_with_subject_location(im, size, subject_location=False, if ex or ey: crop_box = ((int(tex), int(tey), int(tfx), int(tfy))) if FILER_SUBJECT_LOCATION_IMAGE_DEBUG: - # draw elipse on focal point for Debugging + # draw ellipse on focal point for Debugging draw = ImageDraw.Draw(im) esize = 10 draw.ellipse(((subj_x - esize, subj_y - esize), (subj_x + esize, subj_y + esize)), outline="#FF0000") im = im.crop(crop_box) return im + + +def whitespace(image, size, whitespace=False, whitespace_color=None, **kwargs): + if not whitespace: + return image + + if whitespace_color is None: + whitespace_color = FILER_WHITESPACE_COLOR + if whitespace_color is None: + whitespace_color = '#fff' + + old_image = image + source_x, source_y = image.size + target_x, target_y = size + + image = Image.new('RGBA', (target_x, target_y), whitespace_color) + if source_x < target_x and source_y < target_y: # whitespace all around + image.paste(old_image, ( + (target_x - source_x) / 2, (target_y - source_y) / 2)) + elif source_x < target_x: # whitespace on top and bottom only + image.paste(old_image, ((target_x - source_x) / 2, 0)) + elif source_y < target_y: # whitespace on sides only + image.paste(old_image, (0, (target_y - source_y) / 2)) + else: # no whitespace needed + image = old_image + + return image diff --git a/filer/utils/filer_easy_thumbnails.py b/filer/utils/filer_easy_thumbnails.py index 2ee1f7d0d..00b2f4b43 100644 --- a/filer/utils/filer_easy_thumbnails.py +++ b/filer/utils/filer_easy_thumbnails.py @@ -1,8 +1,9 @@ -#-*- coding: utf-8 -*- -from easy_thumbnails.files import Thumbnailer import os import re +from easy_thumbnails.files import Thumbnailer + + # match the source filename using `__` as the seperator. ``opts_and_ext`` is non # greedy so it should match the last occurence of `__`. # in ``ThumbnailerNameMixin.get_thumbnail_name`` we ensure that there is no `__` @@ -17,20 +18,24 @@ def thumbnail_to_original_filename(thumbnail_name): return None -class ThumbnailerNameMixin(object): +class ThumbnailerNameMixin: thumbnail_basedir = '' thumbnail_subdir = '' thumbnail_prefix = '' - def get_thumbnail_name(self, thumbnail_options, transparent=False, - high_resolution=False): + def get_thumbnail_name(self, thumbnail_options, transparent=False): """ A version of ``Thumbnailer.get_thumbnail_name`` that produces a reproducible thumbnail name that can be converted back to the original filename. """ path, source_filename = os.path.split(self.name) - if transparent: + source_extension = os.path.splitext(source_filename)[1][1:].lower() + preserve_extensions = self.thumbnail_preserve_extensions + if preserve_extensions is True or source_extension == 'svg' or \ + isinstance(preserve_extensions, (list, tuple)) and source_extension in preserve_extensions: + extension = source_extension + elif transparent: extension = self.thumbnail_transparency_extension else: extension = self.thumbnail_extension @@ -38,35 +43,36 @@ def get_thumbnail_name(self, thumbnail_options, transparent=False, thumbnail_options = thumbnail_options.copy() size = tuple(thumbnail_options.pop('size')) + initial_opts = ['{}x{}'.format(*size)] quality = thumbnail_options.pop('quality', self.thumbnail_quality) - initial_opts = ['%sx%s' % size, 'q%s' % quality] + if extension == 'jpg': + initial_opts.append(f'q{quality}') + elif extension == 'svg': + thumbnail_options.pop('subsampling', None) + thumbnail_options.pop('upscale', None) opts = list(thumbnail_options.items()) opts.sort() # Sort the options so the file name is consistent. - opts = ['%s' % (v is not True and '%s-%s' % (k, v) or k) + opts = ['{}'.format(v is not True and f'{k}-{v}' or k) for k, v in opts if v] - all_opts = '_'.join(initial_opts + opts) basedir = self.thumbnail_basedir subdir = self.thumbnail_subdir - #make sure our magic delimiter is not used in all_opts + # make sure our magic delimiter is not used in all_opts all_opts = all_opts.replace('__', '_') - if high_resolution: - all_opts += '@2x' - filename = '%s__%s.%s' % (source_filename, all_opts, extension) + filename = f'{source_filename}__{all_opts}.{extension}' return os.path.join(basedir, path, subdir, filename) -class ActionThumbnailerMixin(object): +class ActionThumbnailerMixin: thumbnail_basedir = '' thumbnail_subdir = '' thumbnail_prefix = '' - def get_thumbnail_name(self, thumbnail_options, transparent=False, - high_resolution=False): + def get_thumbnail_name(self, thumbnail_options, transparent=False): """ A version of ``Thumbnailer.get_thumbnail_name`` that returns the original filename to resize. @@ -85,7 +91,7 @@ def thumbnail_exists(self, thumbnail_name): class FilerThumbnailer(ThumbnailerNameMixin, Thumbnailer): def __init__(self, *args, **kwargs): self.thumbnail_basedir = kwargs.pop('thumbnail_basedir', '') - super(FilerThumbnailer, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) class FilerActionThumbnailer(ActionThumbnailerMixin, Thumbnailer): diff --git a/filer/utils/files.py b/filer/utils/files.py index 74d1c9d3e..4af97c241 100644 --- a/filer/utils/files.py +++ b/filer/utils/files.py @@ -1,53 +1,152 @@ -#-*- coding: utf-8 -*- -import os import mimetypes +import os +import uuid +from django.http.multipartparser import ChunkIter, SkipFile, StopFutureHandlers, StopUpload, exhaust +from django.template.defaultfilters import slugify as slugify_django +from django.utils.encoding import force_str from django.utils.text import get_valid_filename as get_valid_filename_django -from django.template.defaultfilters import slugify -from django.core.files.uploadedfile import SimpleUploadedFile - -from filer.settings import FILER_FILE_MODELS -from filer.utils.loader import load_object -from filer.utils.is_ajax import is_ajax -import filetype - class UploadException(Exception): pass def handle_upload(request): - if not request.method == "POST": - raise UploadException("AJAX request not valid: must be POST") - if is_ajax(request): + if not request.method == 'POST': + raise UploadException("XMLHttpRequest not valid: must be POST") + if request.headers.get('x-requested-with') == 'XMLHttpRequest': # the file is stored raw in the request is_raw = True filename = request.GET.get('qqfile', False) or request.GET.get('filename', False) or '' - if hasattr(request, 'body'): - # raw_post_data was depreciated in django 1.4: - # https://docs.djangoproject.com/en/dev/releases/1.4/#httprequest-raw-post-data-renamed-to-httprequest-body - data = request.body - elif hasattr(request, 'raw_post_data'): - # fallback for django 1.3 - data = request.raw_post_data + + try: + content_length = int(request.headers['content-length']) + except (IndexError, TypeError, ValueError): + content_length = None + + if content_length < 0: + # This means we shouldn't continue...raise an error. + raise UploadException("Invalid content length: %r" % content_length) + + mime_type = mimetypes.guess_type(filename)[0] or 'application/octet-stream' + + upload_handlers = request.upload_handlers + for handler in upload_handlers: + handler.handle_raw_input(request, + request.META, + content_length, + None, + None) + pass + + # For compatibility with low-level network APIs (with 32-bit integers), + # the chunk size should be < 2^31, but still divisible by 4. + possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size] + chunk_size = min([2 ** 31 - 4] + possible_sizes) + + stream = ChunkIter(request, chunk_size) + counters = [0] * len(upload_handlers) + + try: + for handler in upload_handlers: + try: + handler.new_file(None, filename, + None, content_length, None) + except StopFutureHandlers: + break + + for chunk in stream: + for i, handler in enumerate(upload_handlers): + chunk_length = len(chunk) + chunk = handler.receive_data_chunk(chunk, + counters[i]) + counters[i] += chunk_length + if chunk is None: + # If the chunk received by the handler is None, then don't continue. + break + + except SkipFile: + # Just use up the rest of this file... + exhaust(stream) + except StopUpload as e: + if not e.connection_reset: + exhaust(request) else: - raise UploadException("Request is not valid: there is no request body.") - mime_type = mimetypes.guess_type(filename)[0] or "text/plain" - upload = SimpleUploadedFile(name=filename, content=data, content_type=mime_type) + # Make sure that the request data is all fed + exhaust(request) + + # Signal that the upload has completed. + for handler in upload_handlers: + retval = handler.upload_complete() + if retval: + break + + for i, handler in enumerate(upload_handlers): + file_obj = handler.file_complete(counters[i]) + if file_obj: + upload = file_obj + break else: if len(request.FILES) == 1: - # FILES is a dictionary in Django but Ajax Upload gives the uploaded file an - # ID based on a random number, so it cannot be guessed here in the code. - # Rather than editing Ajax Upload to pass the ID in the querystring, note that - # each upload is a separate request so FILES should only have one entry. - # Thus, we can just grab the first (and only) value in the dict. - is_raw = False - upload = list(request.FILES.values())[0] - filename = upload.name + upload, filename, is_raw, mime_type = handle_request_files_upload(request) else: - raise UploadException("AJAX request not valid: Bad Upload") - return upload, filename, is_raw + raise UploadException("XMLHttpRequest request not valid: Bad Upload") + return upload, filename, is_raw, mime_type + + +def handle_request_files_upload(request): + """ + Handle request.FILES if len(request.FILES) == 1. + Returns tuple(upload, filename, is_raw, mime_type) where upload is file itself. + """ + # FILES is a dictionary in Django but Ajax Upload gives the uploaded file + # an ID based on a random number, so it cannot be guessed here in the code. + # Rather than editing Ajax Upload to pass the ID in the querystring, + # note that each upload is a separate request so FILES should only + # have one entry. + # Thus, we can just grab the first (and only) value in the dict. + is_raw = False + upload = list(request.FILES.values())[0] + filename = upload.name + _, iext = os.path.splitext(filename) + mime_type = upload.content_type.lower() + extensions = mimetypes.guess_all_extensions(mime_type) + if mime_type != 'application/octet-stream' and extensions and iext.lower() not in extensions: + msg = "MIME-Type '{mimetype}' does not correspond to file extension of {filename}." + raise UploadException(msg.format(mimetype=mime_type, filename=filename)) + return upload, filename, is_raw, mime_type + + +def slugify(string): + return slugify_django(force_str(string)) + + +def _ensure_safe_length(filename, max_length=155, random_suffix_length=16): + """ + Ensures that the filename does not exceed the maximum allowed length. + If it does, the function truncates the filename and appends a random hexadecimal + suffix of length `random_suffix_length` to ensure uniqueness and compliance with + database constraints - even after markers for a thumbnail are added. + + Parameters: + filename (str): The filename to check. + max_length (int): The maximum allowed length for the filename. + random_suffix_length (int): The length of the random suffix to append. + + Returns: + str: The safe filename. + + + Reference issue: https://github.com/django-cms/django-filer/issues/1270 + """ + + if len(filename) <= max_length: + return filename + + keep_length = max_length - random_suffix_length + random_suffix = uuid.uuid4().hex[:random_suffix_length] + return filename[:keep_length] + random_suffix def get_valid_filename(s): @@ -55,42 +154,53 @@ def get_valid_filename(s): like the regular get_valid_filename, but also slugifies away umlauts and stuff. """ - if not s: - return '' s = get_valid_filename_django(s) filename, ext = os.path.splitext(s) filename = slugify(filename) ext = slugify(ext) if ext: - return "%s.%s" % (filename, ext) + valid_filename = "{}.{}".format(filename, ext) else: - return "%s" % (filename,) + valid_filename = "{}".format(filename) + + # Ensure the filename meets the maximum length requirements. + return _ensure_safe_length(valid_filename) +# PBS-specific: file type matching and filename utilities + def matching_file_subtypes(filename, file_pointer, request): """ Returns a list of valid subtypes for a given file. """ + from ..settings import FILER_FILE_MODELS + from .loader import load_object + types = list(map(load_object, FILER_FILE_MODELS)) def _match_subtype(subtype): - is_match = subtype.matches_file_type(filename, file_pointer, request) - return is_match + return subtype.matches_file_type(filename, file_pointer, request) type_matches = list(filter(_match_subtype, types)) return type_matches def truncate_filename(upload, maxlen=None): """ - Return truncated filename - Pre-extension filename will be less than or equals maxlen(if passed) + Return truncated filename. + Pre-extension filename will be less than or equals maxlen (if passed). """ + try: + import filetype as filetype_lib + except ImportError: + filetype_lib = None + title, extension = os.path.splitext(upload.name) if not extension.lstrip('.'): - guessed = filetype.guess_extension(upload) or '' - # filetype reads bytes from the upload; seek back for later use - if hasattr(upload, 'seek'): - upload.seek(0) + guessed = '' + if filetype_lib is not None: + guessed = filetype_lib.guess_extension(upload) or '' + if hasattr(upload, 'seek'): + upload.seek(0) else: guessed = '' filename = '{title}.{ext}'.format(title=title[:maxlen], diff --git a/filer/utils/generate_filename.py b/filer/utils/generate_filename.py index 14b6f8874..5d107ce35 100644 --- a/filer/utils/generate_filename.py +++ b/filer/utils/generate_filename.py @@ -1,20 +1,28 @@ -import datetime import os -import filer - -from filer.utils.files import get_valid_filename +import uuid from django.core.exceptions import ObjectDoesNotExist from django.core.files.uploadedfile import UploadedFile -from django.utils.encoding import smart_str +from django.utils.encoding import force_str +from django.utils.timezone import now + +import filer + +from .files import get_valid_filename def by_date(instance, filename): - datepart = str(datetime.datetime.now().strftime(smart_str("%Y/%m/%d"))) + datepart = force_str(now().strftime("%Y/%m/%d")) return os.path.join(datepart, get_valid_filename(filename)) -class prefixed_factory(object): +def randomized(instance, filename): + uuid_str = str(uuid.uuid4()) + return os.path.join(uuid_str[0:2], uuid_str[2:4], uuid_str, + get_valid_filename(filename)) + + +class prefixed_factory: def __init__(self, upload_to, prefix): self.upload_to = upload_to self.prefix = prefix @@ -29,6 +37,8 @@ def __call__(self, instance, filename): return os.path.join(self.prefix, upload_to_str) +# PBS-specific: path-based filename generation + def _is_in_memory(file_): return isinstance(file_, UploadedFile) @@ -61,8 +71,6 @@ def by_path(instance, filename): def get_trash_path(instance): path = [filer.settings.FILER_TRASH_PREFIX] - # enforce uniqueness by using file's pk path.append("%s" % instance.pk) - # add folder path path.append(instance.pretty_logical_path.strip('/')) return os.path.join(*path) diff --git a/filer/utils/is_ajax.py b/filer/utils/is_ajax.py deleted file mode 100644 index 63166d793..000000000 --- a/filer/utils/is_ajax.py +++ /dev/null @@ -1,3 +0,0 @@ -def is_ajax(request): - """Checks if a request is ajax.""" - return request.headers.get('x-requested-with') == 'XMLHttpRequest' diff --git a/filer/utils/loader.py b/filer/utils/loader.py index 89a841ae3..b75f8f4d6 100644 --- a/filer/utils/loader.py +++ b/filer/utils/loader.py @@ -1,4 +1,3 @@ -#-*- coding: utf-8 -*- """ This function is snatched from https://github.com/ojii/django-load/blob/3058ab9d9d4875589638cc45e84b59e7e1d7c9c3/django_load/core.py#L49 @@ -8,6 +7,7 @@ or method. """ + from importlib import import_module @@ -30,13 +30,20 @@ def load_object(import_path): return import_path if '.' not in import_path: raise TypeError( - "'import_path' argument to 'django_load.core.load_object' " +\ - "must contain at least one dot.") + "'import_path' argument to 'django_load.core.load_object' must " + "contain at least one dot.") module_name, object_name = import_path.rsplit('.', 1) module = import_module(module_name) return getattr(module, object_name) +def load_model(model_name): + from django.apps import apps + + model_name_tuple = model_name.split('.') + return apps.get_model(*model_name_tuple) + + def storage_factory(klass, location, base_url): """ This factory returns an instance of the storage class provided. diff --git a/filer/utils/model_label.py b/filer/utils/model_label.py index f488cf67f..93cc66809 100644 --- a/filer/utils/model_label.py +++ b/filer/utils/model_label.py @@ -1,15 +1,17 @@ def get_model_label(model): """ Take a model class or model label and return its model label. + >>> get_model_label(MyModel) "myapp.MyModel" + >>> get_model_label("myapp.MyModel") "myapp.MyModel" """ if isinstance(model, str): return model else: - return "%s.%s" % ( + return "{}.{}".format( model._meta.app_label, model.__name__ ) diff --git a/filer/utils/multi_model_qs.py b/filer/utils/multi_model_qs.py deleted file mode 100644 index e87227ab5..000000000 --- a/filer/utils/multi_model_qs.py +++ /dev/null @@ -1,49 +0,0 @@ -from functools import reduce - - -class MultiMoldelQuerysetChain(object): - """ - Allows passing a list of different models querysets to a paginator without - transforming them into one list. - """ - - def __init__(self, qsets): - self._qsets = qsets - self._offsets = [] - offset = 0 - for q in qsets: - self._offsets.append(offset) - offset += q.count() - self.length = offset - - def __getitem__(self, key): - if isinstance(key, slice): - return self._get_slice(key) - elif isinstance(key, int): - return self._get_item(key) - else: - raise TypeError("QuerysetChain index must be int or slice not {}".format(type(key))) - - def _get_item(self, key): - if key < 0: - raise IndexError("index out of bounds {}".format(key)) - for index, offset in enumerate(self._offsets): - qset = self._qsets[index] - if key-offset < qset.count(): - return qset[key-offset] - raise IndexError("index out of bounds {}".format(key)) - - def _get_slice(self, key): - assert key.start is not None - assert key.stop is not None - assert key.step is None - slices = (self.slice(qs, key.start-offset, key.stop-offset) - for qs, offset in zip(self._qsets, self._offsets)) - return reduce(lambda s1, s2: s1+s2, slices) - - def slice(self, qset, start, stop): - start, stop = max(start, 0), max(stop, 0) - return list(qset[start:stop]) - - def __len__(self): - return self.length diff --git a/filer/utils/pil_exif.py b/filer/utils/pil_exif.py index 0d0077b77..f0280e4aa 100644 --- a/filer/utils/pil_exif.py +++ b/filer/utils/pil_exif.py @@ -1,35 +1,29 @@ -#-*- coding: utf-8 -*- -try: - from PIL import Image - from PIL import ExifTags -except ImportError: - try: - import Image - import ExifTags - except ImportError: - raise ImportError("The Python Imaging Library was not found.") +from django.core.files.storage import default_storage as storage + +from ..utils.compatibility import PILExifTags, PILImage def get_exif(im): try: exif_raw = im._getexif() or {} - except: + except Exception: + # Not available? Return empty dict return {} ret = {} for tag, value in list(exif_raw.items()): - decoded = ExifTags.TAGS.get(tag, tag) + decoded = PILExifTags.TAGS.get(tag, tag) ret[decoded] = value return ret def get_exif_for_file(file_obj): - im = Image.open(file_obj, 'r') + im = PILImage.open(storage.open(file_obj.name), 'r') return get_exif(im) def get_subject_location(exif_data): try: r = (int(exif_data['SubjectLocation'][0]), int(exif_data['SubjectLocation'][1]),) - except: + except KeyError: r = None return r diff --git a/filer/utils/recursive_dictionary.py b/filer/utils/recursive_dictionary.py index cd49eaa3b..01ad34be0 100644 --- a/filer/utils/recursive_dictionary.py +++ b/filer/utils/recursive_dictionary.py @@ -1,5 +1,3 @@ -#-*- coding: utf-8 -*- - # https://gist.github.com/114831 # recursive_dictionary.py # Created 2009-05-20 by Jannis Andrija Schnitzer. @@ -24,8 +22,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. + __author__ = 'jannis@itisme.org (Jannis Andrija Schnitzer)' + class RecursiveDictionary(dict): """RecursiveDictionary provides the methods rec_update and iter_rec_update that can be used to update member dictionaries rather than overwriting @@ -41,11 +41,11 @@ def rec_update(self, other, **third): {'foo': {'baz': 36, 'bar': 42}} """ try: - iterator = list(other.items()) + iterator = other.items() except AttributeError: iterator = other self.iter_rec_update(iterator) - self.iter_rec_update(list(third.items())) + self.iter_rec_update(third.items()) def iter_rec_update(self, iterator): for (key, value) in iterator: @@ -65,7 +65,7 @@ class RecursiveDictionaryWithExcludes(RecursiveDictionary): """ def __init__(self, *args, **kwargs): self.rec_excluded_keys = kwargs.pop('rec_excluded_keys', ()) - super(RecursiveDictionaryWithExcludes, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) def iter_rec_update(self, iterator): for (key, value) in iterator: @@ -76,4 +76,4 @@ def iter_rec_update(self, iterator): rec_excluded_keys=self.rec_excluded_keys) self[key].rec_update(value) else: - self[key] = value \ No newline at end of file + self[key] = value diff --git a/filer/utils/zip.py b/filer/utils/zip.py deleted file mode 100644 index e6b1e3b29..000000000 --- a/filer/utils/zip.py +++ /dev/null @@ -1,26 +0,0 @@ -#-*- coding: utf-8 -*- -#import zipfile -# zipfile.open() is only available in Python 2.6, so we use the future version -from django.core.files.uploadedfile import SimpleUploadedFile -from zipfile import ZipFile - - -def unzip(file_obj): - """ - Take a path to a zipfile and checks if it is a valid zip file - and returns... - """ - files = [] - # TODO: implement try-except here - zip = ZipFile(file_obj) - bad_file = zip.testzip() - if bad_file: - raise Exception('"%s" in the .zip archive is corrupt.' % bad_file) - infolist = zip.infolist() - for zipinfo in infolist: - if zipinfo.filename.startswith('__'): # do not process meta files - continue - file_obj = SimpleUploadedFile(name=zipinfo.filename, content=zip.read(zipinfo)) - files.append((file_obj, zipinfo.filename)) - zip.close() - return files From 848acee4a607f0662233cba32db7ba32dc467d2c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:53:30 +0000 Subject: [PATCH 04/51] Phase 8: Generate migration 0008 for upstream schema changes (ThumbnailOption, FolderPermission, mime_type, etc.) Agent-Logs-Url: https://github.com/pbs/django-filer/sessions/cad30a66-0889-48ba-bb3e-2ab3bf2939b2 Co-authored-by: andreilupuleasa <124138251+andreilupuleasa@users.noreply.github.com> --- =5.1 | 518 ++++++++++++++++++ filer/admin/common_admin.py | 4 +- filer/admin/tools.py | 42 ++ filer/fields/file.py | 8 + ...nailoption_alter_image_options_and_more.py | 137 +++++ filer/utils/multi_model_qs.py | 49 ++ 6 files changed, 756 insertions(+), 2 deletions(-) create mode 100644 =5.1 create mode 100644 filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py create mode 100644 filer/utils/multi_model_qs.py diff --git a/=5.1 b/=5.1 new file mode 100644 index 000000000..7488124a1 --- /dev/null +++ b/=5.1 @@ -0,0 +1,518 @@ +Defaulting to user installation because normal site-packages is not writeable +Collecting django + Downloading django-6.0.4-py3-none-any.whl.metadata (3.9 kB) +Collecting django-mptt + Downloading django_mptt-0.18.0-py3-none-any.whl.metadata (5.3 kB) +Collecting django-polymorphic + Downloading django_polymorphic-4.11.2-py3-none-any.whl.metadata (7.7 kB) +Collecting django-js-asset + Downloading django_js_asset-3.1.2-py3-none-any.whl.metadata (6.4 kB) +Collecting easy-thumbnails + Downloading easy_thumbnails-2.10.1-py3-none-any.whl.metadata (15 kB) +Collecting Unidecode + Downloading Unidecode-1.4.0-py3-none-any.whl.metadata (13 kB) +Collecting filetype + Downloading filetype-1.2.0-py2.py3-none-any.whl.metadata (6.5 kB) +Collecting svglib + Downloading svglib-1.6.0-py3-none-any.whl.metadata (11 kB) +Collecting Pillow + Downloading pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (8.8 kB) +Collecting asgiref>=3.9.1 (from django) + Downloading asgiref-3.11.1-py3-none-any.whl.metadata (9.3 kB) +Collecting sqlparse>=0.5.0 (from django) + Downloading sqlparse-0.5.5-py3-none-any.whl.metadata (4.7 kB) +Collecting typing-extensions>=4.12.0 (from django-polymorphic) + Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB) +Collecting cssselect2>=0.2.0 (from svglib) + Downloading cssselect2-0.9.0-py3-none-any.whl.metadata (2.9 kB) +Collecting lxml>=6.0.0 (from svglib) + Downloading lxml-6.1.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.metadata (4.0 kB) +Collecting reportlab>=4.4.3 (from svglib) + Downloading reportlab-4.5.0-py3-none-any.whl.metadata (1.7 kB) +Collecting rlpycairo>=0.4.0 (from svglib) + Downloading rlpycairo-0.4.0-py3-none-any.whl.metadata (4.9 kB) +Collecting tinycss2>=0.6.0 (from svglib) + Downloading tinycss2-1.5.1-py3-none-any.whl.metadata (3.0 kB) +Collecting webencodings (from cssselect2>=0.2.0->svglib) + Downloading webencodings-0.5.1-py2.py3-none-any.whl.metadata (2.1 kB) +Collecting charset-normalizer (from reportlab>=4.4.3->svglib) + Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (40 kB) + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.9/40.9 kB 14.8 MB/s eta 0:00:00 +Collecting pycairo>=1.20.0 (from rlpycairo>=0.4.0->svglib) + Downloading pycairo-1.29.0.tar.gz (665 kB) + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 665.9/665.9 kB 23.9 MB/s eta 0:00:00 + Installing build dependencies: started + Installing build dependencies: finished with status 'done' + Getting requirements to build wheel: started + Getting requirements to build wheel: finished with status 'done' + Preparing metadata (pyproject.toml): started + Preparing metadata (pyproject.toml): finished with status 'error' + error: subprocess-exited-with-error + + × Preparing metadata (pyproject.toml) did not run successfully. + │ exit code: 1 + ╰─> [454 lines of output] + + meson setup /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667 /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md -Dwheel=true -Dtests=false --native-file=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-python-native-file.ini + The Meson build system + Version: 1.11.1 + Source dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667 + Build dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b + Build type: native build + Project name: pycairo + Project version: 1.29.0 + C compiler for the host machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0") + C linker for the host machine: cc ld.bfd 2.42 + Host machine cpu family: x86_64 + Host machine cpu: x86_64 + Program python3 found: YES (/usr/bin/python3) + Compiler for C supports arguments -Wall: YES + Compiler for C supports arguments -Warray-bounds: YES + Compiler for C supports arguments -Wcast-align: YES + Compiler for C supports arguments -Wconversion: YES + Compiler for C supports arguments -Wextra: YES + Compiler for C supports arguments -Wformat=2: YES + Compiler for C supports arguments -Wformat-nonliteral: YES + Compiler for C supports arguments -Wformat-security: YES + Compiler for C supports arguments -Wimplicit-function-declaration: YES + Compiler for C supports arguments -Winit-self: YES + Compiler for C supports arguments -Wmissing-format-attribute: YES + Compiler for C supports arguments -Wmissing-noreturn: YES + Compiler for C supports arguments -Wnested-externs: YES + Compiler for C supports arguments -Wold-style-definition: YES + Compiler for C supports arguments -Wpacked: YES + Compiler for C supports arguments -Wpointer-arith: YES + Compiler for C supports arguments -Wreturn-type: YES + Compiler for C supports arguments -Wshadow: YES + Compiler for C supports arguments -Wsign-compare: YES + Compiler for C supports arguments -Wstrict-aliasing: YES + Compiler for C supports arguments -Wundef: YES + Compiler for C supports arguments -Wunused-but-set-variable: YES + Compiler for C supports arguments -Wswitch-default: YES + Compiler for C supports arguments -Wno-missing-field-initializers: YES + Compiler for C supports arguments -Wno-unused-parameter: YES + Compiler for C supports arguments -fno-strict-aliasing: YES + Compiler for C supports arguments -fvisibility=hidden: YES + Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1 + Found CMake: /usr/local/bin/cmake (3.31.6) + Run-time dependency cairo found: NO (tried pkg-config and cmake) + + ../cairo/meson.build:31:12: ERROR: Dependency "cairo" not found (tried pkg-config and cmake) + + A full log can be found at /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-logs/meson-log.txt + ::group::==== CI platform detected, click here for meson-log.txt contents. ==== + Build started at 2026-04-30T09:49:25.394376 + Main binary: /usr/bin/python3 + Build Options: -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md -Dwheel=true -Dtests=false --native-file=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-python-native-file.ini + Python system: Linux + The Meson build system + Version: 1.11.1 + Source dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667 + Build dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b + Build type: native build + Project name: pycairo + Project version: 1.29.0 + ----------- + Detecting compiler via: `cc --version` -> 0 + stdout: + cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 + Copyright (C) 2023 Free Software Foundation, Inc. + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + ----------- + Running command: -cpp -x c -E -dM - + ----- + ----------- + Detecting linker via: `cc -Wl,--version` -> 0 + stdout: + GNU ld (GNU Binutils for Ubuntu) 2.42 + Copyright (C) 2024 Free Software Foundation, Inc. + This program is free software; you may redistribute it under the terms of + the GNU General Public License version 3 or (at your option) a later version. + This program has absolutely no warranty. + ----------- + stderr: + collect2 version 13.3.0 + /usr/bin/ld -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxnZMDU.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o + ----------- + Sanity check compiler command line: cc -D_FILE_OFFSET_BITS=64 -o sanity_check_for_c.exe sanity_check_for_c.c -D_FILE_OFFSET_BITS=64 + Sanity check compile stdout: + + ----- + Sanity check compile stderr: + + ----- + Sanity check built target output for host machine c compiler + -- Running test binary command: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe + ----------- + Sanity check: `/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe` -> 0 + -- stdout: + + -- stderr: + + -- returncode: 0 + C compiler for the host machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0") + C linker for the host machine: cc ld.bfd 2.42 + ----------- + Detecting archiver via: `gcc-ar --version` -> 0 + stdout: + GNU ar (GNU Binutils for Ubuntu) 2.42 + Copyright (C) 2024 Free Software Foundation, Inc. + This program is free software; you may redistribute it under the terms of + the GNU General Public License version 3 or (at your option) any later version. + This program has absolutely no warranty. + ----------- + ----------- + Detecting compiler via: `cc --version` -> 0 + stdout: + cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 + Copyright (C) 2023 Free Software Foundation, Inc. + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + ----------- + Running command: -cpp -x c -E -dM - + ----- + ----------- + Detecting linker via: `cc -Wl,--version` -> 0 + stdout: + GNU ld (GNU Binutils for Ubuntu) 2.42 + Copyright (C) 2024 Free Software Foundation, Inc. + This program is free software; you may redistribute it under the terms of + the GNU General Public License version 3 or (at your option) a later version. + This program has absolutely no warranty. + ----------- + stderr: + collect2 version 13.3.0 + /usr/bin/ld -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxwrsCc.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o + ----------- + Sanity check compiler command line: cc -D_FILE_OFFSET_BITS=64 -o sanity_check_for_c.exe sanity_check_for_c.c -D_FILE_OFFSET_BITS=64 + Sanity check compile stdout: + + ----- + Sanity check compile stderr: + + ----- + Sanity check built target output for build machine c compiler + -- Running test binary command: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe + ----------- + Sanity check: `/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe` -> 0 + -- stdout: + + -- stderr: + + -- returncode: 0 + C compiler for the build machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0") + C linker for the build machine: cc ld.bfd 2.42 + Build machine cpu family: x86_64 + Build machine cpu: x86_64 + Host machine cpu family: x86_64 + Host machine cpu: x86_64 + Target machine cpu family: x86_64 + Target machine cpu: x86_64 + Program python3 found: YES (/usr/bin/python3) + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpq10ufb7l + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpq10ufb7l/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpq10ufb7l/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wall` -> 0 + Compiler for C supports arguments -Wall: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp8qts2n5l + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp8qts2n5l/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp8qts2n5l/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Warray-bounds` -> 0 + Compiler for C supports arguments -Warray-bounds: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpg8nrnjvb + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpg8nrnjvb/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpg8nrnjvb/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wcast-align` -> 0 + Compiler for C supports arguments -Wcast-align: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpahi5_xug + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpahi5_xug/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpahi5_xug/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wconversion` -> 0 + Compiler for C supports arguments -Wconversion: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpvetn92u9 + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpvetn92u9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpvetn92u9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wextra` -> 0 + Compiler for C supports arguments -Wextra: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp591nhuze + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp591nhuze/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp591nhuze/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wformat=2` -> 0 + Compiler for C supports arguments -Wformat=2: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr5lad1fi + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr5lad1fi/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr5lad1fi/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wformat-nonliteral` -> 0 + Compiler for C supports arguments -Wformat-nonliteral: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpduqdxvjc + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpduqdxvjc/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpduqdxvjc/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wformat-security` -> 0 + Compiler for C supports arguments -Wformat-security: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr2cg9qgk + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr2cg9qgk/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr2cg9qgk/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wimplicit-function-declaration` -> 0 + Compiler for C supports arguments -Wimplicit-function-declaration: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpv65xtow9 + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpv65xtow9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpv65xtow9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Winit-self` -> 0 + Compiler for C supports arguments -Winit-self: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp82mly3km + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp82mly3km/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp82mly3km/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wmissing-format-attribute` -> 0 + Compiler for C supports arguments -Wmissing-format-attribute: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpfaswcrni + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpfaswcrni/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpfaswcrni/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wmissing-noreturn` -> 0 + Compiler for C supports arguments -Wmissing-noreturn: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmps5n97jul + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmps5n97jul/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmps5n97jul/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wnested-externs` -> 0 + Compiler for C supports arguments -Wnested-externs: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpkcvs47pl + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpkcvs47pl/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpkcvs47pl/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wold-style-definition` -> 0 + Compiler for C supports arguments -Wold-style-definition: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp089e1gxr + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp089e1gxr/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp089e1gxr/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wpacked` -> 0 + Compiler for C supports arguments -Wpacked: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp5vsuim0z + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp5vsuim0z/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp5vsuim0z/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wpointer-arith` -> 0 + Compiler for C supports arguments -Wpointer-arith: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppw3tn4mm + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppw3tn4mm/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppw3tn4mm/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wreturn-type` -> 0 + Compiler for C supports arguments -Wreturn-type: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpdyednray + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpdyednray/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpdyednray/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wshadow` -> 0 + Compiler for C supports arguments -Wshadow: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppzs14kt9 + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppzs14kt9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppzs14kt9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wsign-compare` -> 0 + Compiler for C supports arguments -Wsign-compare: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpim1xzoce + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpim1xzoce/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpim1xzoce/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wstrict-aliasing` -> 0 + Compiler for C supports arguments -Wstrict-aliasing: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp2rcs89un + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp2rcs89un/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp2rcs89un/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wundef` -> 0 + Compiler for C supports arguments -Wundef: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpye9rfxe9 + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpye9rfxe9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpye9rfxe9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wunused-but-set-variable` -> 0 + Compiler for C supports arguments -Wunused-but-set-variable: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpgt0j7j7o + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpgt0j7j7o/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpgt0j7j7o/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wswitch-default` -> 0 + Compiler for C supports arguments -Wswitch-default: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpuy8j9o8g + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpuy8j9o8g/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpuy8j9o8g/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wmissing-field-initializers -Wno-missing-field-initializers` -> 0 + Compiler for C supports arguments -Wno-missing-field-initializers: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp206a43mw + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp206a43mw/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp206a43mw/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wunused-parameter -Wno-unused-parameter` -> 0 + Compiler for C supports arguments -Wno-unused-parameter: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp98e0ru46 + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp98e0ru46/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp98e0ru46/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -fno-strict-aliasing` -> 0 + Compiler for C supports arguments -fno-strict-aliasing: YES + Running compile: + Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpz771h1xa + Code: + extern int i; + int i; + + ----------- + Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpz771h1xa/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpz771h1xa/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -fvisibility=hidden` -> 0 + Compiler for C supports arguments -fvisibility=hidden: YES + Pkg-config binary missing from cross or native file, or env var undefined. + Trying a default Pkg-config fallback at pkg-config + Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1 + Determining dependency 'cairo' with pkg-config executable '/usr/bin/pkg-config' + env[PKG_CONFIG_PATH]: + env[PKG_CONFIG]: /usr/bin/pkg-config + ----------- + Called: `/usr/bin/pkg-config --modversion cairo` -> 1 + stderr: + Package cairo was not found in the pkg-config search path. + Perhaps you should add the directory containing `cairo.pc' + to the PKG_CONFIG_PATH environment variable + Package 'cairo', required by 'virtual:world', not found + ----------- + CMake binary for host machine is not cached + CMake binary missing from cross or native file, or env var undefined. + Trying a default CMake fallback at cmake + Found CMake: /usr/local/bin/cmake (3.31.6) + Extracting basic cmake information + CMake Toolchain: Calling CMake once to generate the compiler state + Calling CMake (['/usr/local/bin/cmake']) in /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__ with: + - "--trace-expand" + - "--trace-format=json-v1" + - "--no-warn-unused-cli" + - "--trace-redirect=cmake_trace.txt" + - "-G" + - "Ninja" + - "-DCMAKE_TOOLCHAIN_FILE=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__/CMakeMesonTempToolchainFile.cmake" + - "." + CMake trace warning: add_executable() non imported executables are not supported + CMake TRACE: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__/CMakeFiles/CMakeScratch/TryCompile-5br5r6/CMakeLists.txt:22 add_executable(['cmTC_68a78']) + CMake trace warning: target_link_libraries() TARGET cmTC_68a78 not found + CMake TRACE: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__/CMakeFiles/CMakeScratch/TryCompile-5br5r6/CMakeLists.txt:28 target_link_libraries(['cmTC_68a78', '']) + !meson_ci!/ci_include "/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo/CMakeMesonToolchainFile.cmake" + Try CMake generator: auto + !meson_ci!/ci_include "/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo/CMakeLists.txt" + Calling CMake (['/usr/local/bin/cmake']) in /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo with: + - "--trace-expand" + - "--trace-format=json-v1" + - "--no-warn-unused-cli" + - "--trace-redirect=cmake_trace.txt" + - "-DCMAKE_TOOLCHAIN_FILE=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo/CMakeMesonToolchainFile.cmake" + - "." + -- Module search paths: ['/', '/opt', '/usr', '/usr/local'] + -- CMake root: /usr/local/share/cmake-3.31 + -- CMake architectures: ['x86_64-linux-gnu'] + -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share', '', 'lib/x86_64-linux-gnu'] + Preliminary CMake check failed. Aborting. + Run-time dependency cairo found: NO (tried pkg-config and cmake) + + ../cairo/meson.build:31:12: ERROR: Dependency "cairo" not found (tried pkg-config and cmake) + + ::endgroup:: + + [end of output] + + note: This error originates from a subprocess, and is likely not a problem with pip. +error: metadata-generation-failed + +× Encountered error while generating package metadata. +╰─> See above for output. + +note: This is an issue with the package mentioned above, not pip. +hint: See above for details. diff --git a/filer/admin/common_admin.py b/filer/admin/common_admin.py index c6ee96971..4e34716cc 100644 --- a/filer/admin/common_admin.py +++ b/filer/admin/common_admin.py @@ -7,8 +7,8 @@ from django.http import HttpResponseRedirect from filer.models import Folder, File -from filer.admin.tools import (has_admin_role, has_role_on_site, - has_multi_file_action_permission) +from filer.utils.cms_roles import has_admin_role, has_role_on_site +from filer.admin.tools import has_multi_file_action_permission from filer.views import (popup_param, selectfolder_param, popup_status, selectfolder_status, current_site_param, get_param_from_request) diff --git a/filer/admin/tools.py b/filer/admin/tools.py index d7eeceebf..66a75dd8c 100644 --- a/filer/admin/tools.py +++ b/filer/admin/tools.py @@ -171,3 +171,45 @@ def folders_available(current_site, user, folders_qs): visible = core_folders | shared_folders | accessible_site_folders return folders_qs.filter(visible).distinct() + + +def has_multi_file_action_permission(request, files, folders): + """PBS: Check permissions for multi-file actions (move/copy/delete).""" + from ..utils.cms_roles import ( + has_admin_role, + get_admin_sites_for_user, + get_sites_for_user, + ) + # unfiled files can be moved/deleted so better to just exclude them + files = files.exclude(folder__isnull=True) + user = request.user + + if files.readonly(user).exists() or folders.readonly(user).exists(): + return False + if user.is_superuser: + return True + + if files.restricted(user).exists(): + return False + + if folders.restricted_descendants(user).exists(): + return False + + # only superusers can move/delete files/folders with no site ownership + if (files.filter(folder__site__isnull=True).exists() or + folders.filter(site__isnull=True).exists()): + return False + + _exists_root_folders = folders.filter(parent__isnull=True).exists() + if _exists_root_folders: + if not has_admin_role(user): + return False + sites_allowed = [s.id for s in get_admin_sites_for_user(user)] + else: + sites_allowed = get_sites_for_user(user) + + if (files.exclude(folder__site__in=sites_allowed).exists() or + folders.exclude(site__in=sites_allowed).exists()): + return False + + return True diff --git a/filer/fields/file.py b/filer/fields/file.py index 0223440b9..7fb4bf6b8 100644 --- a/filer/fields/file.py +++ b/filer/fields/file.py @@ -135,3 +135,11 @@ def formfield(self, **kwargs): } defaults.update(kwargs) return super().formfield(**defaults) + + +# PBS-specific: widget that doesn't show clear checkbox +from django.contrib.admin import widgets as django_widgets + + +class NonClearableFileInput(django_widgets.AdminFileWidget): + template_with_clear = '' diff --git a/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py b/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py new file mode 100644 index 000000000..f6196990c --- /dev/null +++ b/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py @@ -0,0 +1,137 @@ +# Generated by Django 5.1.15 on 2026-04-30 04:52 + +import django.db.models.deletion +import filer.fields.multistorage_file +import filer.models.filemodels +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ('contenttypes', '0002_remove_content_type_name'), + ('filer', '0007_filer_file_size'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='ThumbnailOption', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100, verbose_name='name')), + ('width', models.IntegerField(help_text='width in pixel.', verbose_name='width')), + ('height', models.IntegerField(help_text='height in pixel.', verbose_name='height')), + ('crop', models.BooleanField(default=True, verbose_name='crop')), + ('upscale', models.BooleanField(default=True, verbose_name='upscale')), + ], + options={ + 'verbose_name': 'thumbnail option', + 'verbose_name_plural': 'thumbnail options', + 'ordering': ('width', 'height'), + }, + ), + migrations.AlterModelOptions( + name='image', + options={'default_manager_name': 'objects', 'verbose_name': 'image', 'verbose_name_plural': 'images'}, + ), + migrations.RemoveField( + model_name='image', + name='default_credit', + ), + migrations.AddField( + model_name='file', + name='mime_type', + field=models.CharField(default='application/octet-stream', help_text='MIME type of uploaded content', max_length=255, validators=[filer.models.filemodels.mimetype_validator]), + ), + migrations.AddField( + model_name='image', + name='_transparent', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='file', + name='_file_size', + field=models.BigIntegerField(blank=True, null=True, verbose_name='file size'), + ), + migrations.AlterField( + model_name='file', + name='file', + field=filer.fields.multistorage_file.MultiStorageFileField(blank=True, db_index=True, max_length=1024, null=True, upload_to=filer.fields.multistorage_file.generate_filename_multistorage, verbose_name='file'), + ), + migrations.AlterField( + model_name='file', + name='owner', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='owned_%(class)ss', to=settings.AUTH_USER_MODEL, verbose_name='owner'), + ), + migrations.AlterField( + model_name='file', + 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='folder', + name='level', + field=models.PositiveIntegerField(editable=False), + ), + migrations.AlterField( + model_name='folder', + name='lft', + field=models.PositiveIntegerField(editable=False), + ), + migrations.AlterField( + model_name='folder', + name='rght', + field=models.PositiveIntegerField(editable=False), + ), + migrations.AlterField( + model_name='image', + name='_height', + field=models.FloatField(blank=True, null=True), + ), + migrations.AlterField( + model_name='image', + name='_width', + field=models.FloatField(blank=True, null=True), + ), + migrations.AlterField( + model_name='image', + name='default_alt_text', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='default alt text'), + ), + migrations.AlterField( + model_name='image', + name='default_caption', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='default caption'), + ), + migrations.AlterField( + model_name='image', + name='file_ptr', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='%(app_label)s_%(class)s_file', serialize=False, to='filer.file'), + ), + migrations.AlterField( + model_name='image', + name='subject_location', + field=models.CharField(blank=True, default='', max_length=64, verbose_name='subject location'), + ), + migrations.CreateModel( + name='FolderPermission', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.SmallIntegerField(choices=[(0, 'all items'), (1, 'this item only'), (2, 'this item and all children')], default=0, verbose_name='type')), + ('everybody', models.BooleanField(default=False, verbose_name='everybody')), + ('can_read', models.SmallIntegerField(blank=True, choices=[(None, 'inherit'), (1, 'allow'), (0, 'deny')], default=None, null=True, verbose_name='can read')), + ('can_edit', models.SmallIntegerField(blank=True, choices=[(None, 'inherit'), (1, 'allow'), (0, 'deny')], default=None, null=True, verbose_name='can edit')), + ('can_add_children', models.SmallIntegerField(blank=True, choices=[(None, 'inherit'), (1, 'allow'), (0, 'deny')], default=None, null=True, verbose_name='can add children')), + ('folder', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='filer.folder', verbose_name='folder')), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='filer_folder_permissions', to='auth.group', verbose_name='group')), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='filer_folder_permissions', to=settings.AUTH_USER_MODEL, verbose_name='user')), + ], + options={ + 'verbose_name': 'folder permission', + 'verbose_name_plural': 'folder permissions', + }, + ), + ] diff --git a/filer/utils/multi_model_qs.py b/filer/utils/multi_model_qs.py new file mode 100644 index 000000000..e87227ab5 --- /dev/null +++ b/filer/utils/multi_model_qs.py @@ -0,0 +1,49 @@ +from functools import reduce + + +class MultiMoldelQuerysetChain(object): + """ + Allows passing a list of different models querysets to a paginator without + transforming them into one list. + """ + + def __init__(self, qsets): + self._qsets = qsets + self._offsets = [] + offset = 0 + for q in qsets: + self._offsets.append(offset) + offset += q.count() + self.length = offset + + def __getitem__(self, key): + if isinstance(key, slice): + return self._get_slice(key) + elif isinstance(key, int): + return self._get_item(key) + else: + raise TypeError("QuerysetChain index must be int or slice not {}".format(type(key))) + + def _get_item(self, key): + if key < 0: + raise IndexError("index out of bounds {}".format(key)) + for index, offset in enumerate(self._offsets): + qset = self._qsets[index] + if key-offset < qset.count(): + return qset[key-offset] + raise IndexError("index out of bounds {}".format(key)) + + def _get_slice(self, key): + assert key.start is not None + assert key.stop is not None + assert key.step is None + slices = (self.slice(qs, key.start-offset, key.stop-offset) + for qs, offset in zip(self._qsets, self._offsets)) + return reduce(lambda s1, s2: s1+s2, slices) + + def slice(self, qset, start, stop): + start, stop = max(start, 0), max(stop, 0) + return list(qset[start:stop]) + + def __len__(self): + return self.length From ea8f30039fce6324c741c71303ec732737e389af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:59:44 +0000 Subject: [PATCH 05/51] Phase 9-10: Adopt upstream templates/static/locale, fix import issues, restore needed PBS utils Agent-Logs-Url: https://github.com/pbs/django-filer/sessions/cad30a66-0889-48ba-bb3e-2ab3bf2939b2 Co-authored-by: andreilupuleasa <124138251+andreilupuleasa@users.noreply.github.com> --- =5.1 | 518 ------- filer/locale/ar/LC_MESSAGES/django.mo | Bin 0 -> 520 bytes filer/locale/ar/LC_MESSAGES/django.po | 1245 +++++++++++++++ filer/locale/bg/LC_MESSAGES/django.mo | Bin 0 -> 440 bytes filer/locale/bg/LC_MESSAGES/django.po | 1224 +++++++++++++++ filer/locale/ca/LC_MESSAGES/django.mo | Bin 0 -> 16627 bytes filer/locale/ca/LC_MESSAGES/django.po | 1261 ++++++++++++++++ filer/locale/cs/LC_MESSAGES/django.mo | Bin 0 -> 16442 bytes filer/locale/cs/LC_MESSAGES/django.po | 1265 ++++++++++++++++ filer/locale/de/LC_MESSAGES/django.mo | Bin 0 -> 21636 bytes filer/locale/de/LC_MESSAGES/django.po | 1244 +++++++++++++++ filer/locale/en/LC_MESSAGES/django.mo | Bin 458 -> 15724 bytes filer/locale/en/LC_MESSAGES/django.po | 1341 +++++++++++------ filer/locale/es/LC_MESSAGES/django.mo | Bin 0 -> 20427 bytes filer/locale/es/LC_MESSAGES/django.po | 1296 ++++++++++++++++ filer/locale/et/LC_MESSAGES/django.mo | Bin 479 -> 5456 bytes filer/locale/et/LC_MESSAGES/django.po | 1150 +++++++++----- filer/locale/eu/LC_MESSAGES/django.mo | Bin 0 -> 11064 bytes filer/locale/eu/LC_MESSAGES/django.po | 1241 +++++++++++++++ filer/locale/fa/LC_MESSAGES/django.mo | Bin 0 -> 21668 bytes filer/locale/fa/LC_MESSAGES/django.po | 1045 +++++++++++++ filer/locale/fi/LC_MESSAGES/django.mo | Bin 0 -> 16713 bytes filer/locale/fi/LC_MESSAGES/django.po | 1259 ++++++++++++++++ filer/locale/fr/LC_MESSAGES/django.mo | Bin 16758 -> 22139 bytes filer/locale/fr/LC_MESSAGES/django.po | 1292 ++++++++++------ filer/locale/gl/LC_MESSAGES/django.mo | Bin 0 -> 3830 bytes filer/locale/gl/LC_MESSAGES/django.po | 1228 +++++++++++++++ filer/locale/he/LC_MESSAGES/django.mo | Bin 0 -> 14347 bytes filer/locale/he/LC_MESSAGES/django.po | 1249 +++++++++++++++ filer/locale/hr/LC_MESSAGES/django.mo | Bin 0 -> 13374 bytes filer/locale/hr/LC_MESSAGES/django.po | 1265 ++++++++++++++++ filer/locale/hu/LC_MESSAGES/django.mo | Bin 0 -> 16819 bytes filer/locale/hu/LC_MESSAGES/django.po | 1258 ++++++++++++++++ filer/locale/it/LC_MESSAGES/django.mo | Bin 16237 -> 17229 bytes filer/locale/it/LC_MESSAGES/django.po | 1189 +++++++++------ filer/locale/ja/LC_MESSAGES/django.mo | Bin 0 -> 432 bytes filer/locale/ja/LC_MESSAGES/django.po | 1219 +++++++++++++++ filer/locale/ja_JP/LC_MESSAGES/django.mo | Bin 0 -> 446 bytes filer/locale/ja_JP/LC_MESSAGES/django.po | 1219 +++++++++++++++ filer/locale/lt/LC_MESSAGES/django.mo | Bin 0 -> 17336 bytes filer/locale/lt/LC_MESSAGES/django.po | 1273 ++++++++++++++++ filer/locale/lt_LT/LC_MESSAGES/django.mo | Bin 0 -> 590 bytes filer/locale/lt_LT/LC_MESSAGES/django.po | 1236 +++++++++++++++ filer/locale/nb/LC_MESSAGES/django.mo | Bin 0 -> 12700 bytes filer/locale/nb/LC_MESSAGES/django.po | 1256 +++++++++++++++ filer/locale/nl_NL/LC_MESSAGES/django.mo | Bin 0 -> 21260 bytes filer/locale/nl_NL/LC_MESSAGES/django.po | 1245 +++++++++++++++ filer/locale/nn/LC_MESSAGES/django.mo | Bin 0 -> 12594 bytes filer/locale/nn/LC_MESSAGES/django.po | 1253 +++++++++++++++ filer/locale/pl/LC_MESSAGES/django.mo | Bin 4616 -> 17155 bytes filer/locale/pl/LC_MESSAGES/django.po | 1299 ++++++++++------ filer/locale/pt/LC_MESSAGES/django.mo | Bin 0 -> 492 bytes filer/locale/pt/LC_MESSAGES/django.po | 1230 +++++++++++++++ filer/locale/pt_BR/LC_MESSAGES/django.mo | Bin 5630 -> 17504 bytes filer/locale/pt_BR/LC_MESSAGES/django.po | 1284 ++++++++++------ filer/locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 21137 bytes filer/locale/ru/LC_MESSAGES/django.po | 1263 ++++++++++++++++ filer/locale/sk/LC_MESSAGES/django.mo | Bin 0 -> 512 bytes filer/locale/sk/LC_MESSAGES/django.po | 1235 +++++++++++++++ filer/locale/tr/LC_MESSAGES/django.mo | Bin 0 -> 7360 bytes filer/locale/tr/LC_MESSAGES/django.po | 1230 +++++++++++++++ filer/locale/vi_VN/LC_MESSAGES/django.mo | Bin 0 -> 18089 bytes filer/locale/vi_VN/LC_MESSAGES/django.po | 1252 +++++++++++++++ filer/locale/zh-Hans/LC_MESSAGES/django.mo | Bin 0 -> 15264 bytes filer/locale/zh-Hans/LC_MESSAGES/django.po | 1208 +++++++++++++++ filer/locale/zh/LC_MESSAGES/django.mo | Bin 0 -> 431 bytes filer/locale/zh/LC_MESSAGES/django.po | 1219 +++++++++++++++ filer/locale/zh_CN/LC_MESSAGES/django.mo | Bin 0 -> 445 bytes filer/locale/zh_CN/LC_MESSAGES/django.po | 1219 +++++++++++++++ filer/locale/zh_TW/LC_MESSAGES/django.mo | Bin 0 -> 446 bytes filer/locale/zh_TW/LC_MESSAGES/django.po | 1219 +++++++++++++++ .../filer/css/admin_filer.cms.icons.css | 1 + filer/static/filer/css/admin_filer.css | 3 + .../static/filer/css/admin_filer.fa.icons.css | 4 + .../filer/css/admin_folderpermissions.css | 6 + .../css/maps/admin_filer.cms.icons.css.map | 1 + .../static/filer/css/maps/admin_filer.css.map | 1 + .../css/maps/admin_filer.fa.icons.css.map | 1 + filer/static/filer/fonts/FontAwesome.otf | Bin 0 -> 106260 bytes .../filer/fonts/django-filer-iconfont.eot | Bin 0 -> 3860 bytes .../filer/fonts/django-filer-iconfont.svg | 51 + .../filer/fonts/django-filer-iconfont.ttf | Bin 0 -> 3640 bytes .../filer/fonts/django-filer-iconfont.woff | Bin 0 -> 2224 bytes .../filer/fonts/django-filer-iconfont.woff2 | Bin 0 -> 1680 bytes .../filer/fonts/fontawesome-webfont.eot | Bin 0 -> 68875 bytes .../filer/fonts/fontawesome-webfont.svg | 640 ++++++++ .../filer/fonts/fontawesome-webfont.ttf | Bin 0 -> 138204 bytes .../filer/fonts/fontawesome-webfont.woff | Bin 0 -> 81284 bytes .../filer/fonts/fontawesome-webfont.woff2 | Bin 0 -> 64464 bytes filer/static/filer/fonts/src/arrow-down.svg | 41 + filer/static/filer/fonts/src/caret-down.svg | 3 + .../static/filer/fonts/src/chevron-right.svg | 3 + filer/static/filer/fonts/src/download.svg | 4 + filer/static/filer/fonts/src/expand.svg | 3 + filer/static/filer/fonts/src/link.svg | 4 + .../static/filer/fonts/src/move-to-folder.svg | 3 + filer/static/filer/fonts/src/picture.svg | 4 + .../filer/fonts/src/remove-selection.svg | 3 + filer/static/filer/fonts/src/select.svg | 3 + filer/static/filer/fonts/src/th-large.svg | 3 + filer/static/filer/fonts/src/th-list.svg | 5 + filer/static/filer/fonts/src/upload.svg | 3 + filer/static/filer/icons/cloud-up.svg | 8 + filer/static/filer/icons/file-audio.svg | 11 + filer/static/filer/icons/file-empty.svg | 8 + filer/static/filer/icons/file-font.svg | 11 + filer/static/filer/icons/file-missing.svg | 84 ++ filer/static/filer/icons/file-pdf.svg | 11 + filer/static/filer/icons/file-picture.svg | 11 + filer/static/filer/icons/file-unknown.svg | 69 + filer/static/filer/icons/file-video.svg | 8 + filer/static/filer/icons/file-zip.svg | 14 + filer/static/filer/icons/folder-dropdown.svg | 85 ++ filer/static/filer/icons/folder-root.svg | 10 + filer/static/filer/icons/folder-unfiled.svg | 77 + filer/static/filer/icons/folder.svg | 9 + filer/static/filer/img/button-bg.gif | Bin 0 -> 224 bytes filer/static/filer/img/icon_changelink.gif | Bin 0 -> 1178 bytes filer/static/filer/img/icon_deletelink.gif | Bin 0 -> 1200 bytes .../static/filer/js/addons/copy-move-files.js | 32 + filer/static/filer/js/addons/dropdown-menu.js | 249 +++ filer/static/filer/js/addons/dropzone.init.js | 234 +++ .../filer/js/addons/filer_popup_response.js | 22 + filer/static/filer/js/addons/focal-point.js | 253 ++++ .../static/filer/js/addons/popup_handling.js | 137 ++ .../static/filer/js/addons/table-dropzone.js | 282 ++++ filer/static/filer/js/addons/toggler.js | 82 + filer/static/filer/js/addons/tooltip.js | 40 + filer/static/filer/js/addons/upload-button.js | 242 +++ filer/static/filer/js/addons/widget.js | 56 + filer/static/filer/js/base.js | 417 +++++ .../filer/js/widgets/admin-file-widget.js | 30 + .../filer/js/widgets/admin-folder-widget.js | 64 + filer/templates/admin/filer/actions.html | 38 +- filer/templates/admin/filer/base_site.html | 19 +- filer/templates/admin/filer/breadcrumbs.html | 55 +- filer/templates/admin/filer/change_form.html | 86 +- .../admin/filer/delete_confirmation.html | 39 +- .../delete_selected_files_confirmation.html | 80 +- .../templates/admin/filer/dismiss_popup.html | 8 + .../admin/filer/file/change_form.html | 23 + .../admin/filer/file/popup_response.html | 10 + .../admin/filer/folder/change_form.html | 51 +- .../filer/folder/choose_copy_destination.html | 86 +- .../folder/choose_images_resize_options.html | 64 +- .../filer/folder/choose_move_destination.html | 85 +- .../filer/folder/choose_rename_format.html | 104 +- .../admin/filer/folder/directory_listing.html | 341 +++-- .../filer/folder/directory_table_list.html | 256 ++++ .../folder/directory_thumbnail_list.html | 228 +++ .../admin/filer/folder/legacy_listing.html | 265 ++++ .../filer/folder/list_type_switcher.html | 1 + .../admin/filer/folder/new_folder_form.html | 67 +- .../admin/filer/image/change_form.html | 45 +- filer/templates/admin/filer/image/expand.html | 28 + .../admin/filer/templatetags/file_icon.html | 38 + .../filer/tools/clipboard/clipboard.html | 110 +- .../tools/clipboard/clipboard_item_rows.html | 32 +- .../admin/filer/tools/detail_info.html | 55 + .../admin/filer/tools/search_form.html | 50 +- .../admin/filer/widgets/admin_file.html | 100 +- .../admin/filer/widgets/admin_folder.html | 44 +- filer/tests/foo_file.jpg | Bin 0 -> 11200 bytes filer/tests/image_name | Bin 0 -> 11200 bytes filer/tests/new_one.jpg | Bin 0 -> 1119 bytes filer/tests/new_three.jpg | Bin 0 -> 1119 bytes ...sttesttesttesttesttesttesttesttesttest.jpg | Bin 0 -> 11200 bytes filer/utils/files.py | 6 +- filer/utils/zip.py | 26 + test.zip | Bin 0 -> 2538 bytes 170 files changed, 45820 insertions(+), 3895 deletions(-) delete mode 100644 =5.1 create mode 100644 filer/locale/ar/LC_MESSAGES/django.mo create mode 100644 filer/locale/ar/LC_MESSAGES/django.po create mode 100644 filer/locale/bg/LC_MESSAGES/django.mo create mode 100644 filer/locale/bg/LC_MESSAGES/django.po create mode 100644 filer/locale/ca/LC_MESSAGES/django.mo create mode 100644 filer/locale/ca/LC_MESSAGES/django.po create mode 100644 filer/locale/cs/LC_MESSAGES/django.mo create mode 100644 filer/locale/cs/LC_MESSAGES/django.po create mode 100644 filer/locale/de/LC_MESSAGES/django.mo create mode 100644 filer/locale/de/LC_MESSAGES/django.po create mode 100644 filer/locale/es/LC_MESSAGES/django.mo create mode 100644 filer/locale/es/LC_MESSAGES/django.po create mode 100644 filer/locale/eu/LC_MESSAGES/django.mo create mode 100644 filer/locale/eu/LC_MESSAGES/django.po create mode 100644 filer/locale/fa/LC_MESSAGES/django.mo create mode 100644 filer/locale/fa/LC_MESSAGES/django.po create mode 100644 filer/locale/fi/LC_MESSAGES/django.mo create mode 100644 filer/locale/fi/LC_MESSAGES/django.po create mode 100644 filer/locale/gl/LC_MESSAGES/django.mo create mode 100644 filer/locale/gl/LC_MESSAGES/django.po create mode 100644 filer/locale/he/LC_MESSAGES/django.mo create mode 100644 filer/locale/he/LC_MESSAGES/django.po create mode 100644 filer/locale/hr/LC_MESSAGES/django.mo create mode 100644 filer/locale/hr/LC_MESSAGES/django.po create mode 100644 filer/locale/hu/LC_MESSAGES/django.mo create mode 100644 filer/locale/hu/LC_MESSAGES/django.po create mode 100644 filer/locale/ja/LC_MESSAGES/django.mo create mode 100644 filer/locale/ja/LC_MESSAGES/django.po create mode 100644 filer/locale/ja_JP/LC_MESSAGES/django.mo create mode 100644 filer/locale/ja_JP/LC_MESSAGES/django.po create mode 100644 filer/locale/lt/LC_MESSAGES/django.mo create mode 100644 filer/locale/lt/LC_MESSAGES/django.po create mode 100644 filer/locale/lt_LT/LC_MESSAGES/django.mo create mode 100644 filer/locale/lt_LT/LC_MESSAGES/django.po create mode 100644 filer/locale/nb/LC_MESSAGES/django.mo create mode 100644 filer/locale/nb/LC_MESSAGES/django.po create mode 100644 filer/locale/nl_NL/LC_MESSAGES/django.mo create mode 100644 filer/locale/nl_NL/LC_MESSAGES/django.po create mode 100644 filer/locale/nn/LC_MESSAGES/django.mo create mode 100644 filer/locale/nn/LC_MESSAGES/django.po create mode 100644 filer/locale/pt/LC_MESSAGES/django.mo create mode 100644 filer/locale/pt/LC_MESSAGES/django.po create mode 100644 filer/locale/ru/LC_MESSAGES/django.mo create mode 100644 filer/locale/ru/LC_MESSAGES/django.po create mode 100644 filer/locale/sk/LC_MESSAGES/django.mo create mode 100644 filer/locale/sk/LC_MESSAGES/django.po create mode 100644 filer/locale/tr/LC_MESSAGES/django.mo create mode 100644 filer/locale/tr/LC_MESSAGES/django.po create mode 100644 filer/locale/vi_VN/LC_MESSAGES/django.mo create mode 100644 filer/locale/vi_VN/LC_MESSAGES/django.po create mode 100644 filer/locale/zh-Hans/LC_MESSAGES/django.mo create mode 100644 filer/locale/zh-Hans/LC_MESSAGES/django.po create mode 100644 filer/locale/zh/LC_MESSAGES/django.mo create mode 100644 filer/locale/zh/LC_MESSAGES/django.po create mode 100644 filer/locale/zh_CN/LC_MESSAGES/django.mo create mode 100644 filer/locale/zh_CN/LC_MESSAGES/django.po create mode 100644 filer/locale/zh_TW/LC_MESSAGES/django.mo create mode 100644 filer/locale/zh_TW/LC_MESSAGES/django.po create mode 100644 filer/static/filer/css/admin_filer.cms.icons.css create mode 100644 filer/static/filer/css/admin_filer.css create mode 100644 filer/static/filer/css/admin_filer.fa.icons.css create mode 100644 filer/static/filer/css/admin_folderpermissions.css create mode 100644 filer/static/filer/css/maps/admin_filer.cms.icons.css.map create mode 100644 filer/static/filer/css/maps/admin_filer.css.map create mode 100644 filer/static/filer/css/maps/admin_filer.fa.icons.css.map create mode 100644 filer/static/filer/fonts/FontAwesome.otf create mode 100644 filer/static/filer/fonts/django-filer-iconfont.eot create mode 100644 filer/static/filer/fonts/django-filer-iconfont.svg create mode 100644 filer/static/filer/fonts/django-filer-iconfont.ttf create mode 100644 filer/static/filer/fonts/django-filer-iconfont.woff create mode 100644 filer/static/filer/fonts/django-filer-iconfont.woff2 create mode 100644 filer/static/filer/fonts/fontawesome-webfont.eot create mode 100644 filer/static/filer/fonts/fontawesome-webfont.svg create mode 100644 filer/static/filer/fonts/fontawesome-webfont.ttf create mode 100644 filer/static/filer/fonts/fontawesome-webfont.woff create mode 100644 filer/static/filer/fonts/fontawesome-webfont.woff2 create mode 100644 filer/static/filer/fonts/src/arrow-down.svg create mode 100644 filer/static/filer/fonts/src/caret-down.svg create mode 100644 filer/static/filer/fonts/src/chevron-right.svg create mode 100644 filer/static/filer/fonts/src/download.svg create mode 100644 filer/static/filer/fonts/src/expand.svg create mode 100644 filer/static/filer/fonts/src/link.svg create mode 100644 filer/static/filer/fonts/src/move-to-folder.svg create mode 100644 filer/static/filer/fonts/src/picture.svg create mode 100644 filer/static/filer/fonts/src/remove-selection.svg create mode 100644 filer/static/filer/fonts/src/select.svg create mode 100644 filer/static/filer/fonts/src/th-large.svg create mode 100644 filer/static/filer/fonts/src/th-list.svg create mode 100644 filer/static/filer/fonts/src/upload.svg create mode 100644 filer/static/filer/icons/cloud-up.svg create mode 100644 filer/static/filer/icons/file-audio.svg create mode 100644 filer/static/filer/icons/file-empty.svg create mode 100644 filer/static/filer/icons/file-font.svg create mode 100644 filer/static/filer/icons/file-missing.svg create mode 100644 filer/static/filer/icons/file-pdf.svg create mode 100644 filer/static/filer/icons/file-picture.svg create mode 100644 filer/static/filer/icons/file-unknown.svg create mode 100644 filer/static/filer/icons/file-video.svg create mode 100644 filer/static/filer/icons/file-zip.svg create mode 100644 filer/static/filer/icons/folder-dropdown.svg create mode 100644 filer/static/filer/icons/folder-root.svg create mode 100644 filer/static/filer/icons/folder-unfiled.svg create mode 100644 filer/static/filer/icons/folder.svg create mode 100644 filer/static/filer/img/button-bg.gif create mode 100644 filer/static/filer/img/icon_changelink.gif create mode 100644 filer/static/filer/img/icon_deletelink.gif create mode 100644 filer/static/filer/js/addons/copy-move-files.js create mode 100644 filer/static/filer/js/addons/dropdown-menu.js create mode 100644 filer/static/filer/js/addons/dropzone.init.js create mode 100644 filer/static/filer/js/addons/filer_popup_response.js create mode 100644 filer/static/filer/js/addons/focal-point.js create mode 100644 filer/static/filer/js/addons/popup_handling.js create mode 100644 filer/static/filer/js/addons/table-dropzone.js create mode 100644 filer/static/filer/js/addons/toggler.js create mode 100644 filer/static/filer/js/addons/tooltip.js create mode 100644 filer/static/filer/js/addons/upload-button.js create mode 100644 filer/static/filer/js/addons/widget.js create mode 100644 filer/static/filer/js/base.js create mode 100644 filer/static/filer/js/widgets/admin-file-widget.js create mode 100644 filer/static/filer/js/widgets/admin-folder-widget.js create mode 100644 filer/templates/admin/filer/dismiss_popup.html create mode 100644 filer/templates/admin/filer/file/change_form.html create mode 100644 filer/templates/admin/filer/file/popup_response.html create mode 100644 filer/templates/admin/filer/folder/directory_table_list.html create mode 100644 filer/templates/admin/filer/folder/directory_thumbnail_list.html create mode 100644 filer/templates/admin/filer/folder/legacy_listing.html create mode 100644 filer/templates/admin/filer/folder/list_type_switcher.html create mode 100644 filer/templates/admin/filer/image/expand.html create mode 100644 filer/templates/admin/filer/templatetags/file_icon.html create mode 100644 filer/templates/admin/filer/tools/detail_info.html create mode 100644 filer/tests/foo_file.jpg create mode 100644 filer/tests/image_name create mode 100644 filer/tests/new_one.jpg create mode 100644 filer/tests/new_three.jpg create mode 100644 filer/tests/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest.jpg create mode 100644 filer/utils/zip.py create mode 100644 test.zip diff --git a/=5.1 b/=5.1 deleted file mode 100644 index 7488124a1..000000000 --- a/=5.1 +++ /dev/null @@ -1,518 +0,0 @@ -Defaulting to user installation because normal site-packages is not writeable -Collecting django - Downloading django-6.0.4-py3-none-any.whl.metadata (3.9 kB) -Collecting django-mptt - Downloading django_mptt-0.18.0-py3-none-any.whl.metadata (5.3 kB) -Collecting django-polymorphic - Downloading django_polymorphic-4.11.2-py3-none-any.whl.metadata (7.7 kB) -Collecting django-js-asset - Downloading django_js_asset-3.1.2-py3-none-any.whl.metadata (6.4 kB) -Collecting easy-thumbnails - Downloading easy_thumbnails-2.10.1-py3-none-any.whl.metadata (15 kB) -Collecting Unidecode - Downloading Unidecode-1.4.0-py3-none-any.whl.metadata (13 kB) -Collecting filetype - Downloading filetype-1.2.0-py2.py3-none-any.whl.metadata (6.5 kB) -Collecting svglib - Downloading svglib-1.6.0-py3-none-any.whl.metadata (11 kB) -Collecting Pillow - Downloading pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (8.8 kB) -Collecting asgiref>=3.9.1 (from django) - Downloading asgiref-3.11.1-py3-none-any.whl.metadata (9.3 kB) -Collecting sqlparse>=0.5.0 (from django) - Downloading sqlparse-0.5.5-py3-none-any.whl.metadata (4.7 kB) -Collecting typing-extensions>=4.12.0 (from django-polymorphic) - Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB) -Collecting cssselect2>=0.2.0 (from svglib) - Downloading cssselect2-0.9.0-py3-none-any.whl.metadata (2.9 kB) -Collecting lxml>=6.0.0 (from svglib) - Downloading lxml-6.1.0-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.metadata (4.0 kB) -Collecting reportlab>=4.4.3 (from svglib) - Downloading reportlab-4.5.0-py3-none-any.whl.metadata (1.7 kB) -Collecting rlpycairo>=0.4.0 (from svglib) - Downloading rlpycairo-0.4.0-py3-none-any.whl.metadata (4.9 kB) -Collecting tinycss2>=0.6.0 (from svglib) - Downloading tinycss2-1.5.1-py3-none-any.whl.metadata (3.0 kB) -Collecting webencodings (from cssselect2>=0.2.0->svglib) - Downloading webencodings-0.5.1-py2.py3-none-any.whl.metadata (2.1 kB) -Collecting charset-normalizer (from reportlab>=4.4.3->svglib) - Downloading charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (40 kB) - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.9/40.9 kB 14.8 MB/s eta 0:00:00 -Collecting pycairo>=1.20.0 (from rlpycairo>=0.4.0->svglib) - Downloading pycairo-1.29.0.tar.gz (665 kB) - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 665.9/665.9 kB 23.9 MB/s eta 0:00:00 - Installing build dependencies: started - Installing build dependencies: finished with status 'done' - Getting requirements to build wheel: started - Getting requirements to build wheel: finished with status 'done' - Preparing metadata (pyproject.toml): started - Preparing metadata (pyproject.toml): finished with status 'error' - error: subprocess-exited-with-error - - × Preparing metadata (pyproject.toml) did not run successfully. - │ exit code: 1 - ╰─> [454 lines of output] - + meson setup /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667 /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md -Dwheel=true -Dtests=false --native-file=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-python-native-file.ini - The Meson build system - Version: 1.11.1 - Source dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667 - Build dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b - Build type: native build - Project name: pycairo - Project version: 1.29.0 - C compiler for the host machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0") - C linker for the host machine: cc ld.bfd 2.42 - Host machine cpu family: x86_64 - Host machine cpu: x86_64 - Program python3 found: YES (/usr/bin/python3) - Compiler for C supports arguments -Wall: YES - Compiler for C supports arguments -Warray-bounds: YES - Compiler for C supports arguments -Wcast-align: YES - Compiler for C supports arguments -Wconversion: YES - Compiler for C supports arguments -Wextra: YES - Compiler for C supports arguments -Wformat=2: YES - Compiler for C supports arguments -Wformat-nonliteral: YES - Compiler for C supports arguments -Wformat-security: YES - Compiler for C supports arguments -Wimplicit-function-declaration: YES - Compiler for C supports arguments -Winit-self: YES - Compiler for C supports arguments -Wmissing-format-attribute: YES - Compiler for C supports arguments -Wmissing-noreturn: YES - Compiler for C supports arguments -Wnested-externs: YES - Compiler for C supports arguments -Wold-style-definition: YES - Compiler for C supports arguments -Wpacked: YES - Compiler for C supports arguments -Wpointer-arith: YES - Compiler for C supports arguments -Wreturn-type: YES - Compiler for C supports arguments -Wshadow: YES - Compiler for C supports arguments -Wsign-compare: YES - Compiler for C supports arguments -Wstrict-aliasing: YES - Compiler for C supports arguments -Wundef: YES - Compiler for C supports arguments -Wunused-but-set-variable: YES - Compiler for C supports arguments -Wswitch-default: YES - Compiler for C supports arguments -Wno-missing-field-initializers: YES - Compiler for C supports arguments -Wno-unused-parameter: YES - Compiler for C supports arguments -fno-strict-aliasing: YES - Compiler for C supports arguments -fvisibility=hidden: YES - Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1 - Found CMake: /usr/local/bin/cmake (3.31.6) - Run-time dependency cairo found: NO (tried pkg-config and cmake) - - ../cairo/meson.build:31:12: ERROR: Dependency "cairo" not found (tried pkg-config and cmake) - - A full log can be found at /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-logs/meson-log.txt - ::group::==== CI platform detected, click here for meson-log.txt contents. ==== - Build started at 2026-04-30T09:49:25.394376 - Main binary: /usr/bin/python3 - Build Options: -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md -Dwheel=true -Dtests=false --native-file=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-python-native-file.ini - Python system: Linux - The Meson build system - Version: 1.11.1 - Source dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667 - Build dir: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b - Build type: native build - Project name: pycairo - Project version: 1.29.0 - ----------- - Detecting compiler via: `cc --version` -> 0 - stdout: - cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 - Copyright (C) 2023 Free Software Foundation, Inc. - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - ----------- - Running command: -cpp -x c -E -dM - - ----- - ----------- - Detecting linker via: `cc -Wl,--version` -> 0 - stdout: - GNU ld (GNU Binutils for Ubuntu) 2.42 - Copyright (C) 2024 Free Software Foundation, Inc. - This program is free software; you may redistribute it under the terms of - the GNU General Public License version 3 or (at your option) a later version. - This program has absolutely no warranty. - ----------- - stderr: - collect2 version 13.3.0 - /usr/bin/ld -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxnZMDU.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o - ----------- - Sanity check compiler command line: cc -D_FILE_OFFSET_BITS=64 -o sanity_check_for_c.exe sanity_check_for_c.c -D_FILE_OFFSET_BITS=64 - Sanity check compile stdout: - - ----- - Sanity check compile stderr: - - ----- - Sanity check built target output for host machine c compiler - -- Running test binary command: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe - ----------- - Sanity check: `/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe` -> 0 - -- stdout: - - -- stderr: - - -- returncode: 0 - C compiler for the host machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0") - C linker for the host machine: cc ld.bfd 2.42 - ----------- - Detecting archiver via: `gcc-ar --version` -> 0 - stdout: - GNU ar (GNU Binutils for Ubuntu) 2.42 - Copyright (C) 2024 Free Software Foundation, Inc. - This program is free software; you may redistribute it under the terms of - the GNU General Public License version 3 or (at your option) any later version. - This program has absolutely no warranty. - ----------- - ----------- - Detecting compiler via: `cc --version` -> 0 - stdout: - cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 - Copyright (C) 2023 Free Software Foundation, Inc. - This is free software; see the source for copying conditions. There is NO - warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - ----------- - Running command: -cpp -x c -E -dM - - ----- - ----------- - Detecting linker via: `cc -Wl,--version` -> 0 - stdout: - GNU ld (GNU Binutils for Ubuntu) 2.42 - Copyright (C) 2024 Free Software Foundation, Inc. - This program is free software; you may redistribute it under the terms of - the GNU General Public License version 3 or (at your option) a later version. - This program has absolutely no warranty. - ----------- - stderr: - collect2 version 13.3.0 - /usr/bin/ld -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxwrsCc.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o - ----------- - Sanity check compiler command line: cc -D_FILE_OFFSET_BITS=64 -o sanity_check_for_c.exe sanity_check_for_c.c -D_FILE_OFFSET_BITS=64 - Sanity check compile stdout: - - ----- - Sanity check compile stderr: - - ----- - Sanity check built target output for build machine c compiler - -- Running test binary command: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe - ----------- - Sanity check: `/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/sanity_check_for_c.exe` -> 0 - -- stdout: - - -- stderr: - - -- returncode: 0 - C compiler for the build machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0") - C linker for the build machine: cc ld.bfd 2.42 - Build machine cpu family: x86_64 - Build machine cpu: x86_64 - Host machine cpu family: x86_64 - Host machine cpu: x86_64 - Target machine cpu family: x86_64 - Target machine cpu: x86_64 - Program python3 found: YES (/usr/bin/python3) - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpq10ufb7l - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpq10ufb7l/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpq10ufb7l/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wall` -> 0 - Compiler for C supports arguments -Wall: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp8qts2n5l - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp8qts2n5l/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp8qts2n5l/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Warray-bounds` -> 0 - Compiler for C supports arguments -Warray-bounds: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpg8nrnjvb - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpg8nrnjvb/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpg8nrnjvb/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wcast-align` -> 0 - Compiler for C supports arguments -Wcast-align: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpahi5_xug - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpahi5_xug/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpahi5_xug/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wconversion` -> 0 - Compiler for C supports arguments -Wconversion: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpvetn92u9 - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpvetn92u9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpvetn92u9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wextra` -> 0 - Compiler for C supports arguments -Wextra: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp591nhuze - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp591nhuze/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp591nhuze/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wformat=2` -> 0 - Compiler for C supports arguments -Wformat=2: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr5lad1fi - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr5lad1fi/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr5lad1fi/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wformat-nonliteral` -> 0 - Compiler for C supports arguments -Wformat-nonliteral: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpduqdxvjc - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpduqdxvjc/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpduqdxvjc/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wformat-security` -> 0 - Compiler for C supports arguments -Wformat-security: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr2cg9qgk - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr2cg9qgk/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpr2cg9qgk/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wimplicit-function-declaration` -> 0 - Compiler for C supports arguments -Wimplicit-function-declaration: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpv65xtow9 - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpv65xtow9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpv65xtow9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Winit-self` -> 0 - Compiler for C supports arguments -Winit-self: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp82mly3km - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp82mly3km/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp82mly3km/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wmissing-format-attribute` -> 0 - Compiler for C supports arguments -Wmissing-format-attribute: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpfaswcrni - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpfaswcrni/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpfaswcrni/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wmissing-noreturn` -> 0 - Compiler for C supports arguments -Wmissing-noreturn: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmps5n97jul - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmps5n97jul/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmps5n97jul/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wnested-externs` -> 0 - Compiler for C supports arguments -Wnested-externs: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpkcvs47pl - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpkcvs47pl/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpkcvs47pl/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wold-style-definition` -> 0 - Compiler for C supports arguments -Wold-style-definition: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp089e1gxr - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp089e1gxr/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp089e1gxr/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wpacked` -> 0 - Compiler for C supports arguments -Wpacked: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp5vsuim0z - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp5vsuim0z/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp5vsuim0z/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wpointer-arith` -> 0 - Compiler for C supports arguments -Wpointer-arith: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppw3tn4mm - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppw3tn4mm/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppw3tn4mm/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wreturn-type` -> 0 - Compiler for C supports arguments -Wreturn-type: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpdyednray - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpdyednray/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpdyednray/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wshadow` -> 0 - Compiler for C supports arguments -Wshadow: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppzs14kt9 - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppzs14kt9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmppzs14kt9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wsign-compare` -> 0 - Compiler for C supports arguments -Wsign-compare: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpim1xzoce - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpim1xzoce/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpim1xzoce/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wstrict-aliasing` -> 0 - Compiler for C supports arguments -Wstrict-aliasing: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp2rcs89un - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp2rcs89un/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp2rcs89un/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wundef` -> 0 - Compiler for C supports arguments -Wundef: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpye9rfxe9 - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpye9rfxe9/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpye9rfxe9/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wunused-but-set-variable` -> 0 - Compiler for C supports arguments -Wunused-but-set-variable: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpgt0j7j7o - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpgt0j7j7o/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpgt0j7j7o/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wswitch-default` -> 0 - Compiler for C supports arguments -Wswitch-default: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpuy8j9o8g - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpuy8j9o8g/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpuy8j9o8g/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wmissing-field-initializers -Wno-missing-field-initializers` -> 0 - Compiler for C supports arguments -Wno-missing-field-initializers: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp206a43mw - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp206a43mw/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp206a43mw/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -Wunused-parameter -Wno-unused-parameter` -> 0 - Compiler for C supports arguments -Wno-unused-parameter: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp98e0ru46 - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp98e0ru46/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmp98e0ru46/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -fno-strict-aliasing` -> 0 - Compiler for C supports arguments -fno-strict-aliasing: YES - Running compile: - Working directory: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpz771h1xa - Code: - extern int i; - int i; - - ----------- - Command line: `cc /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpz771h1xa/testfile.c -o /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/tmpz771h1xa/output.obj -c -D_FILE_OFFSET_BITS=64 -O0 -U_FORTIFY_SOURCE -fvisibility=hidden` -> 0 - Compiler for C supports arguments -fvisibility=hidden: YES - Pkg-config binary missing from cross or native file, or env var undefined. - Trying a default Pkg-config fallback at pkg-config - Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1 - Determining dependency 'cairo' with pkg-config executable '/usr/bin/pkg-config' - env[PKG_CONFIG_PATH]: - env[PKG_CONFIG]: /usr/bin/pkg-config - ----------- - Called: `/usr/bin/pkg-config --modversion cairo` -> 1 - stderr: - Package cairo was not found in the pkg-config search path. - Perhaps you should add the directory containing `cairo.pc' - to the PKG_CONFIG_PATH environment variable - Package 'cairo', required by 'virtual:world', not found - ----------- - CMake binary for host machine is not cached - CMake binary missing from cross or native file, or env var undefined. - Trying a default CMake fallback at cmake - Found CMake: /usr/local/bin/cmake (3.31.6) - Extracting basic cmake information - CMake Toolchain: Calling CMake once to generate the compiler state - Calling CMake (['/usr/local/bin/cmake']) in /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__ with: - - "--trace-expand" - - "--trace-format=json-v1" - - "--no-warn-unused-cli" - - "--trace-redirect=cmake_trace.txt" - - "-G" - - "Ninja" - - "-DCMAKE_TOOLCHAIN_FILE=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__/CMakeMesonTempToolchainFile.cmake" - - "." - CMake trace warning: add_executable() non imported executables are not supported - CMake TRACE: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__/CMakeFiles/CMakeScratch/TryCompile-5br5r6/CMakeLists.txt:22 add_executable(['cmTC_68a78']) - CMake trace warning: target_link_libraries() TARGET cmTC_68a78 not found - CMake TRACE: /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/__CMake_compiler_info__/CMakeFiles/CMakeScratch/TryCompile-5br5r6/CMakeLists.txt:28 target_link_libraries(['cmTC_68a78', '']) - !meson_ci!/ci_include "/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo/CMakeMesonToolchainFile.cmake" - Try CMake generator: auto - !meson_ci!/ci_include "/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo/CMakeLists.txt" - Calling CMake (['/usr/local/bin/cmake']) in /tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo with: - - "--trace-expand" - - "--trace-format=json-v1" - - "--no-warn-unused-cli" - - "--trace-redirect=cmake_trace.txt" - - "-DCMAKE_TOOLCHAIN_FILE=/tmp/pip-install-zbza_hym/pycairo_ded28bf9d04b454bae7dcc031f1c1667/.mesonpy-cdely51b/meson-private/cmake_cairo/CMakeMesonToolchainFile.cmake" - - "." - -- Module search paths: ['/', '/opt', '/usr', '/usr/local'] - -- CMake root: /usr/local/share/cmake-3.31 - -- CMake architectures: ['x86_64-linux-gnu'] - -- CMake lib search paths: ['lib', 'lib32', 'lib64', 'libx32', 'share', '', 'lib/x86_64-linux-gnu'] - Preliminary CMake check failed. Aborting. - Run-time dependency cairo found: NO (tried pkg-config and cmake) - - ../cairo/meson.build:31:12: ERROR: Dependency "cairo" not found (tried pkg-config and cmake) - - ::endgroup:: - - [end of output] - - note: This error originates from a subprocess, and is likely not a problem with pip. -error: metadata-generation-failed - -× Encountered error while generating package metadata. -╰─> See above for output. - -note: This is an issue with the package mentioned above, not pip. -hint: See above for details. diff --git a/filer/locale/ar/LC_MESSAGES/django.mo b/filer/locale/ar/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..ec06f66ea7a49b0588c034e22c86c99f699e3568 GIT binary patch literal 520 zcmYjMO-}+b5Y^~ukDfiuL5)Vswjc_{`UxZ?5{W_YWw$IPrQLLk!5`w^@+bIPoJs;t z^3vD5d2eQZ4)(uxuyzrLh$F-v;sOz?h4@CXjc@GP)X2NJ$^seWXx9$k=g6Mla-5eduT)T^SUII%Rc2uL)}aYw{*Nr&!6etO6N( zX)7ax^Bf**p^SsBwi<4x+De1Nl$n?JGZz+8n_A`;x9GFQQWlDgm0Y09%Zbk5bQVI% z(^QsaEyPegRjX)7bN!)Ry55{jDeZbgY?O8FzjvbWi^^SIUAJ4RXK#_DBJ-BRE1zj*_zgo)+0S;l-`O4oSdxrjbPEy*lLXZ6WeVRFHvlElAT|mM3Z>{ literal 0 HcmV?d00001 diff --git a/filer/locale/ar/LC_MESSAGES/django.po b/filer/locale/ar/LC_MESSAGES/django.po new file mode 100644 index 000000000..5469f0334 --- /dev/null +++ b/filer/locale/ar/LC_MESSAGES/django.po @@ -0,0 +1,1245 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Angelo Dini \n" +"Language-Team: Arabic (http://app.transifex.com/divio/django-filer/language/" +"ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" +#~ msgstr[4] "15c0f2d28d6dab1af1f6d94906beb627_pl_4" +#~ msgstr[5] "15c0f2d28d6dab1af1f6d94906beb627_pl_5" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/bg/LC_MESSAGES/django.mo b/filer/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..24974f0a5bf82ffb4ee81e7ed8ca9b169887934d GIT binary patch literal 440 zcmYL^!A=4(5Qa5++M{O=W8wj#rMnm+7S|{O35i5PR_|rETS~fZ(-wjk-@@1PS!^YN zKl#!&o&TSi-;48~lc3YUW#Bq+7Pt*W^#kAG^C6tE=AgONYgT$RtEGog@zmMP@xGV^LMmhTM-RtL_H(WO|vda?@@LKS&#J6n=~kSqt2tk zQspG|+7ftCoJkEMp#(hELQxr-F}XI+EA1O9WT({4Q}8Lip`4+D(T2cqBRRE#Drl{| zHw0s9OvlGuQL|n2;7V+T#{1z>9f!v;JEq_z$L&KVfhA97)7kjAa@I+cSFJo#VcIVf z*70oTv5{1$0hB9h9rO7|F+u%fUF=>ni^i(dl~9~Oe<^%2mm5nZnrPcN0?Pb9UEUqQ P{+hQGT;-6p2g%7Fj4gws literal 0 HcmV?d00001 diff --git a/filer/locale/bg/LC_MESSAGES/django.po b/filer/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 000000000..88b4a3899 --- /dev/null +++ b/filer/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,1224 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Angelo Dini \n" +"Language-Team: Bulgarian (http://app.transifex.com/divio/django-filer/" +"language/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/ca/LC_MESSAGES/django.mo b/filer/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..abddc619575884a06874ee0593f2be31f0a95d9d GIT binary patch literal 16627 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 literal 0 HcmV?d00001 diff --git a/filer/locale/ca/LC_MESSAGES/django.po b/filer/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 000000000..4ba43842f --- /dev/null +++ b/filer/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,1261 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Roger Pons , 2013-2014,2016 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Roger Pons , 2013-2014,2016\n" +"Language-Team: Catalan (http://app.transifex.com/divio/django-filer/language/" +"ca/)\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Avançat" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "URL canònica" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Cal seleccionar els elements en ordre per tal de realitzar accions sobre " +"ells. No s'ha modificat cap element." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s seleccionat" +msgstr[1] "Tots %(total_count)s seleccionats" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 de %(cnt)s seleccionats" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "No s'ha seleccionat cap acció." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "S'han mogut %(count)d fitxers al portapapers." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Moure els fitxers seleccionats al portapapers." + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "S'han desactivat els permisos de %(count)d fitxers." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "S'han activat els permisos de %(count)d fitxers." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Activar els permisos dels fitxers seleccionats" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Desactivaer els permisos dels fitxers seleccionats" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "S'han esborrat %(count)d fitxers i/o carpetes." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "No es poden esborrar els fitxers i/o carpetes" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Esteu segur?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Esborrar fitxers i/o carpetes" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Esborrar els fitxers i/o carpetes seleccionats" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Ja existeixen carpetes amb els noms %s a la destinació seleccionada" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"S'han mogut %(count)d fitxers i/o carpetes a la carpeta '%(destination)s'" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Moure fitxers i/o carpetes" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Moure els fitxers i/o carpetes seleccionats" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "S'ha canviat el nom de %(count)d fitxers." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Canviar el nom a fitxers" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"S'han copiat %(count)d fitxeres i/o carpetes a la carpeta '%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Copiar fitxers i/o carpetes" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Copiar els fitxers i/o carpetes seleccionats" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "S'han redimensionat %(count)d imatges." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Redimensionar imatges" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Redimensionar les imatges seleccionades" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Sufix que serà afegit als noms de fitxer dels fitxers copiats" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"El sufix ha de ser una part de nom de fitxer vàlida, simple i en minúscules, " +"com ara \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Format de renombrat amb valor de clau \"%(key)s\" desconegut." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Format de renombrat no vàlid: %(error)s" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "opció de miniatures" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "ample" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "alçada" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "retallar" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "ampliar" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Heu de triar una opció de miniatura o paràmetres de redimensionat." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Lloc del subjecte." + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Ubicació del subjecte principal de l'escena. Format: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Foirmat erroni de la ubicació del subjecte." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "La ubicació del subjecte està fora de la imatge." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "La teva entrada: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Ja existeix una carpeta amb aquest nom." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Biblioteca de medis." + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "text alternatiu per defecte" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "títol per defecte" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "lloc del subjecte" + +#: models/abstract.py:91 +msgid "image" +msgstr "imatge" + +#: models/abstract.py:92 +msgid "images" +msgstr "imatges" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "usuari" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "fitxers" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "portapapers" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "portapapers" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "fitxer" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "element del portapapers" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "elements del portapapers" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "carpeta" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "tamany del fitxer" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "té totes les dades obligatòries" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "nom de fitxer original" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "nom" + +#: models/filemodels.py:116 +msgid "description" +msgstr "descripció" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "propietari" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "pujat a" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "modificat a" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Permisos desactivats" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Desactiveu tots els permisos d'aquest fitxer. Aquest serà accessible de " +"forma pública per a tothom." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "creat a" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Carpeta" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Carpetes" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "tots els elements" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "només aquest element" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "aquest elements i els seus fills" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "permetre" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "denegar" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tipus" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "group" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "tothom" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "pot llegir" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "pot editar" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "pot afegir fills" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "permís de carpeta" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "permisos de carpeta" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "data agafada" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "cal publicar sempre crèdits d'autor" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "cal publicar sempre els drets d'autor" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "ample en píxels." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "alt en píxels" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "opcions de miniatura" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Pujades sense ordre" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "fitxer als que els falten metadades" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "arrel" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Executar l'acció seleccionada" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Anar" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" +"Cliqueu aquí per seleccionar els objectes a través de totes les pàgines" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Seleccionar tots els %(total_count)s fitixers i/o carpetes" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Netejar la selecció" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Tornar a la pàgina principal d'administració" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Inici" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Tornar a l'aplicació Filer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Tornar a la carpeta arrel" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Tornar a la carpeta '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicats" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Esborrar els fitxers seleccionats provocarà l'esborrar d'objectes " +"relacionats, però el teu compte no té permisos per esborrar els següents " +"tipus d'objectes:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Esborrer els fitxers i/o carpetes seleccionades provocarà l'esborrat dels " +"següents objectes protegits relacionats:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Segur que voleu esborrar els fitxers i/o carpetes seleccionades? Els " +"següents objectes i els seus elements relacionats seran esborrats:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "No, porta'm enrere." + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Sí, estic segur" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Història" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Veure al lloc" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Tornar a" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "pàgina principal d'administració" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Icona de la carpeta" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "Sense permisos per copiar tots els fitxers i/o carpetes seleccionats." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Porta'm enrere" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "No hi ha carpetes de destí disponibles." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "No hi ha fitxers i/o carpetes disponibles." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Els següents fitxers i/o carpetes seran copiats a una carpeta de destí " +"(mantenint la seva estructura d'arbre):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Carpeta de destí:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Copiar" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "No està permès copiar fitxers a la mateixa carpeta" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"El vostre compte no té permisos per redimensionar totes les imatges " +"seleccionades." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "No hi ha imatges disponibles per redimensionar." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Les següents imatges seran redimensionades:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Trieu una opció de miniatura existent o especifiqueu paràmetres de " +"redimensionat:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Avís: les imatges seran redimensionades al mateix lloc i les originals es " +"perdran. Considereu realitzar abans una còpia d'aquestes per mantenir els " +"originals." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Redimensionar" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"El vostre compte no té permisos per moure tots els fitxers i/o carpetes " +"seleccionats." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "No hi ha fitxers i/o carpetes disponibles per moure." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Els següents fitxers i/o carpetes seran moguts a una carpeta de destí " +"(mantenint la seva estructura d'arbre):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Moure" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "No està permès moure fitxers a la mateixa carpeta" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" +"El vostre compte no té permisos per canviar el nom de tots els fitxers " +"seleccionats." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "No hi ha fitxers per canviar el nom disponibles." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"En canviarà el nom dels següents fitxers (seguiran estant a les seves " +"carpetes i mantindran el seu nom de fitxers original, només serà modificat " +"el nom que es mostrarà):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Canviar el nom" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Tornar a la carpeta pare" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Modificar els detalls de la carpeta actual" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Modificar" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Cliqueu aquí per cercar la frase introduïda" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Cercar" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Tancar" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limitar" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Marqueu per limitar la cercar a la carpeta actual" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Limitar la cerca a la carpeta actual" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Esborrar" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Afegir una Carpeta nova" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Carpeta nova" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Pujar Arxius" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Cal que abans seleccioneu una carpeta" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Nom" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Propietari" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Mida" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Acció" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Modificar els detalls de la carpeta '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s fitxer" +msgstr[1] "%(counter)s fitxers" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s fitxer" +msgstr[1] "%(counter)s fitxers" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Modifcar detalls de carpeta" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Esborrar carpeta" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Seleccionar aquest fitxer" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Modificar els detalls de '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Permisos" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "desactivat" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "activat" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Moure els fitxers seleccionats al portapapers." + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Esborrar fitxer" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Deixeu anar fitxers aquí o utilitzeu el botó \"Pujar Fitxers\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Deixeu anar el fitxer a pujar a:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Pujar" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "cancel·lar" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Pujada correcta!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Pujada cancel·lada!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "anterior" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Pàgina %(number)s de %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "següent" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Seleccionar tots/es %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Afegir nou" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Corregiu el següent error." +msgstr[1] "Corregiu els següents errors." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Desar" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Portapapers" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Enganxar aquí tots els elements" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Moure tots els fitxer del portapapers a" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Buidar Porta-retalls" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "el portapapers és buït" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "ha fallat la pujada" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tipus" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "MIda de fitxer" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modificat" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Creat" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "trobat" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "i" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "cancel·lar la cerca" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Netejar" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "o deixar anar aquí el fitxer" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "no s'ha seleccionat cap fitxer" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Cercar" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Escollir Fitxer" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/cs/LC_MESSAGES/django.mo b/filer/locale/cs/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c73f2c7d9f66a1ae47f96ccc6cb4f2b9aa7cfdb9 GIT binary patch literal 16442 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

p3LqnJa^~1r{0fEc-kAS4^dI=g{f$?x;YbFRyEY zoag20Y}4(ohf}UN$zgV)#B142r+Gh|%vib1SlG6MmSR^&)!9Z23A{b|p2FvpluZp$ ziTG~`_3K2_H6lcFKX==6=7PCnD$SI!Pcm@qgzl<3W4likajQqECemX~S=1O-T{kVBNWq>rxDiBnBaJ3JX*|0sZE6Oje5he(cTibF zqRGW@RqfftcD#HcMo}h6XiOjGzxQ(fKSVyK6`y71OA#w-Agd72HGvl!+=ra1WPhX? z8so;DC>b?#?xXOe@I^M?wyGQLMT)#!wjHh7OK)a)r(W}&M@+0j0Ab5+=qClRvS zI%!R+jE^0t(OF{yH!gdZqrxX7dALSRr literal 0 HcmV?d00001 diff --git a/filer/locale/cs/LC_MESSAGES/django.po b/filer/locale/cs/LC_MESSAGES/django.po new file mode 100644 index 000000000..e56d59634 --- /dev/null +++ b/filer/locale/cs/LC_MESSAGES/django.po @@ -0,0 +1,1265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Jakub Dorňák , 2020 +# Mirek Simek , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Jakub Dorňák , 2020\n" +"Language-Team: Czech (http://app.transifex.com/divio/django-filer/language/" +"cs/)\n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n " +"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Pokročilé" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "kanonický odkaz" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "Nejdříve vyberte položku, která má být změněna." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Výpis složky %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "žádná položka z %(cnt)s není vybrána" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Nebyla vybrána žádná operace." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Soubory (%(count)d) byly přesunuty do schránky." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Přesunout vybrané soubory do schránky" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Pro vybrané soubory (%(count)d) byla deaktivována oprávnění." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Pro vybrané soubory (%(count)d) byla aktivována oprávnění." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Aktivovat oprávnění pro vybrané soubory" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Deaktivovat oprávnění pro vybrané soubory" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Vybrané soubory a/nebo složky (%(count)d) byly smazány." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Nemohu smazat soubory a/nebo složky" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Opravdu provést?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Smazat soubory a/nebo složky" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Smazat vybrané soubory a/nebo složky" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Složky pojmenované %s již v cílové složce existují" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Vybrané soubory a/nebo složky (%(count)d) byly přesunuty do složky " +"'%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Přesunout soubory a/nebo složky" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Přesunout vybrané soubory a/nebo složky" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Soubory (%(count)d) vyly přejmenovány." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Přejmenovat soubory" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Soubory a/nebo složky (%(count)d) byly zkopírovány do složky " +"'%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopírovat soubory a/nebo složky" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopírovat vybrané soubory a/nebo složky" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Velikost obrázků (%(count)d) byla změněna." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Změnit velikost obrázků" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Změnit velikost vybraných obrázků" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Koncovka, která bude přidána ke jménům kopírovaných souborů." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Koncovka by měla být jednoduchá součást názvu souboru malými písmeny, " +"například \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Neznámý formát klíče pro přejmenování \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Špatný formát přejmenování: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "volby náhledu" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "šířka" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "výška" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "oříznout" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "zvětšit" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" +"Musíte vybrat předdefinované volby náhledu nebo nastavit jednotlivé " +"parametry." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Pozice objektu" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Pozice hlavního předmětu fotografie. Formát \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Špatný formát pozice objektu. " + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Zadaná pozice objektu je mimo obrázek. " + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Vaše zadání: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Složka s tímto názvem již existuje." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Správce souborů" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Knihovna médií" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "výchozí alternativní text" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "výchozí popisek" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "poloha objektu" + +#: models/abstract.py:91 +msgid "image" +msgstr "obrázek" + +#: models/abstract.py:92 +msgid "images" +msgstr "obrázky" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "uživatel" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "soubory" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "schránka" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "schránky" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "soubor" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "položka schránky" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "položky schránky" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "složka" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "velikost souboru" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "má všechna povinná data" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "původní název souboru" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "název" + +#: models/filemodels.py:116 +msgid "description" +msgstr "popis" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "vlastník" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "nahráno" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "změněno" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Oprávnění neaktivní" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Deaktivovat veškerá oprávnění pro tento soubor. Soubor bude komukoli veřejně " +"dostupný." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "vytvořeno" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Složka" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Složky" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "všechny položky" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "pouze tato položka" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "tato položka včetně všech potomků" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "povolit" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "zakázat" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "typ" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "skupina" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "kdokoli" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "smí číst" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "smí upravit" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "smí přidávat potomky" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "oprávnění složky" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "oprávnění složky" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "datum pořízení" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "autor musí být vždy uveden" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "copyright musí být vždy uvedeno" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "šířka v pixelech." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "výška v pixelech." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "volby náhledu" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Nezařazené" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "soubory s chybějícími informacemi" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "kořenová složka" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Provést vybranou operaci" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Provést" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Klikněte sem pro výběr všechny položky na všech stránkách výpisu" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Vybrat všechny soubory a/nebo složky (%(total_count)s)" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Zrušit výběr" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Přejít zpět na hlavní stránku administrace" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Hlavní stránka" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Přejít zpět do Správce souborů" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Přejít zpět do kořenové složky" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Přejít zpět do složky '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicity" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Smazání vybraných souborů a/nebo složek bude mít za následek smazání všech " +"přidružených objektů, nicméně ke smazání následujících objektů nemáte " +"oprávnění:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Smazání vybraných souborů a/nebo složek bude mít za následek smazání " +"následujících přidružených objektů:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Opravdu chcete smazat vybrané soubory a složky? Všechny následující objekty " +"budou smazány:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Ne, chci zpátky" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Ano" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Historie" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Zobrazit na webu" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Vrátit se do" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "hlavní stránka administrace" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Ikona složky" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "Nemáte oprávnění kopírovat vybrané soubory a/nebo složky." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Zpět" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Nejsou k dispozici žádné cílové složky." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Žádné soubory ani složky není možno kopírovat." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Následující soubory a/nebo složky budou zkopírovány do cílové slžoky (jejich " +"stromová struktura bude zachována):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Cílová složka:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopírovat" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Není možné kopírovat soubory do stejné složky" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "Nemáte oprávnění k změně velikosti vybraných obrázků." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Žádné obrázky ke změně velikosti." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Následujícím obrázkům bude změněna velikost:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Vyberte existující volby náhledu nebo zadejte parametry změny velikosti:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Varování: Bude změněna velikost obrázků a původní obrázky budou přepsány. " +"Pokud chcete zachovat obrázky v původní velikosti, nejdříve vytvořte jejich " +"kopie." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Změnit velikost" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "Nemáte oprávnění k přesunu vybraných souborů nebo složek." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Žádné soubory k přesunutí." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Následující soubory a/nebo složky budou přesunyty do cílové složky (jejich " +"stromová struktura bude zachována)" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Přesunout" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Není možné přesouvat soubory do stejné složky" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Nemáte oprávnění přejmenovat všechny vybrané soubory." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Žádné soubory k přejmenování." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Následující soubory budou přejmenovány (změněno bude pouze zobrazované jméno)" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Přejmenovat" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Přejít zpět do nadřazené složky" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Upravit aktuální složku" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Upravit" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Klikněte sem pro vyhledání zadaného výrazu" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Hledat" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Zavřít" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Omezit" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Zaškrtněte pro omezení hledání na aktuální složku" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Omezit hledání na aktuální složku" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Smazat" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Přidá novou složku" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Nová složka" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Nahrát soubory" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Nejdříve musíte vybrat složku" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Název" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Vlastník" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Velikost" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Akce" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Upravit podrobnosti složky '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Upravit podrobnosti složky" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Smazat složku" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Vybrat tento soubor" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Upravit podrobnosti '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Oprávnění" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "neaktivní" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "aktivní" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Přesunout vybrané soubory do schránky" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "Kanonický odkaz '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Stáhnout '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Smazat soubor" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Přetáhněte soubory sem nebo klikněte na tlačítko \"Nahrát soubory\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Přetáhněte sem soubory, které chcete nahrát do:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Nahrát" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "zrušit" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Nahrávání se zdařilo!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Nahrávání bylo zrušeno!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "předchozí" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Stránka %(number)s z %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "následující" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Vybrat všechny (%(total_count)s)" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Přidat" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Hlavní stránka administrace" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Uložit" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Schtánka" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Vložit všechny položky sem" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Přesunout všechny soubory ve schránce do" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Vyprázdnit schránku" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "schránka je prázdná" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "nahrávání selhalo" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Typ" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Velikost souboru" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Změněno" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Vytvořeno" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "nalezeno" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "a" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "zrušit hledání" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Vyčistit" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "přetáhněte soubory sem" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "žádný soubor nebyl vybrán" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Vyhledat" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Vybrat soubor" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/de/LC_MESSAGES/django.mo b/filer/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0f9415701524ef6334539b54b4f404bfae420c68 GIT binary patch literal 21636 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 gr)x-$-N+Gk?Ik`%, 2016-2017 +# Fabian Braun , 2023 +# Jannik Vieten , 2016-2017 +# Mitja Martini , 2012 +# Mitja Martini , 2012 +# Peter Wischer , 2018 +# Stefan Foulis , 2016 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Fabian Braun , 2023\n" +"Language-Team: German (http://app.transifex.com/divio/django-filer/language/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +#| msgid "" +#| "ccount doesn't have permissions to rename all of the selected files." +msgid "You do not have permission to upload files." +msgstr "Du hast keine Berechtigungen, um Dateien hochzuladen." + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "Ich kann den Zielordner nicht finden. Bitter lade die Seite neu und versuche es noch einmal." + +#: admin/clipboardadmin.py:20 +msgid "" +"Can't use this folder, Permission Denied. Please select another folder." +msgstr "Zugriff auf diesen Ordner verweigert. Bitte wähle einen anderen Ordner." + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Fortgeschritten" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "Kanonische URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "Einträge müssen ausgewählt werden, um Aktionen darauf auszuführen. Keine Einträge wurden geändert." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s ausgewählt" +msgstr[1] "Alle %(total_count)s ausgewählt" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Verzeichnis Auflistung für %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 von %(cnt)s ausgewählt" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Keine Aktion ausgewählt." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d Dateien wurden erfolgreich in die Zwischenablage gelegt." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Ausgewählte Dateien in die Zwischenablage legen" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Berechtigungen für %(count)d Dateien erfolgreich deaktiviert." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Berechtigungen für %(count)d Dateien erfolgreich aktiviert." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Berechtigungen für ausgewählte Dateien aktivieren" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Berechtigungen für ausgewählte Dateien deaktivieren" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d Dateien und/oder Ordner wurden erfolgreich gelöscht." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Dateien und/oder Ordner können nicht gelöscht werden" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Bist Du sicher?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Lösche Dateien und/oder Ordner" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Lösche ausgewählte Dateien und/oder Ordner" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Die Ordner mit den Namen %s existieren bereits am ausgewählten Zielort" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "%(count)d Dateien und/oder Ordner wurden erfolgreich in den Ordner '%(destination)s' verschoben." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Verschiebe Dateien und/oder Ordner" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Ausgewählte Dateien und/oder Ordner verschieben" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d Dateien wurden erfolgreich umbenannt." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Dateien umbenennen" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "%(count)d Dateien und/oder Ordner wurden erfolgreich in den Ordner '%(destination)s' kopiert." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopiere Dateien und/oder Ordner" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Ausgewählte Dateien und/oder Ordner kopieren" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Die Bildgrösse von %(count)d Bildern wurde erfolgreich geändert." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Bildgrössen verändern" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Die Bildgrössen der ausgewählten Bilder verändern" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Die Dateiendung, welche an die Dateinamen der kopierten Dateien angehängt wird." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "Die Dateiendung sollte ein gültiger, einfacher und kleingeschriebener Teil eines Dateinamens sein, wie zum Beispiel \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Unbekannter Schlüssel für das Umbenennungs-Format: %(key)s." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Ungültiges Umbenennungs-Format: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "Vorschaubild Optionen" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "Breite" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "Höhe" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "Beschneiden" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "Vergrössern" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Vorschaubild Optionen oder Parameter zur Grössenänderung müssen ausgewählt werden." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Ort des Hauptinhalts" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Position des Hauptinhalts des Bildes. Format: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Ungültiges Format zur Positionsangabe." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Angegebene Position des Hauptinhalts liegt außerhalb des Bildes." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Deine Eingabe: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "Wer" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "Was" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Dieser Ordnername wird bereits verwendet." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Medienbibliothek" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "Standard Alt-Text" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "Standard Bildlegende" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "Ort des Hauptinhalts" + +#: models/abstract.py:91 +msgid "image" +msgstr "Bild" + +#: models/abstract.py:92 +msgid "images" +msgstr "Bilder" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "Bildformat nicht erkannt oder Bildgröße überschreitet den Grenzwert von %(max_pixels)d Millionen Pixeln um einen Faktor 2 oder mehr. Vor erneutem Hochladen prüfen Sie das Dateiformat oder verkleinern Sie das Bild auf %(width)d x %(height)d oder weniger." + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "Bildgröße (%(pixels)d Millionen Pixel) überschreitet den Grenzwert von %(max_pixels)d Millionen Pixeln. Vor erneutem Hochladen verkleinern Sie das Bild auf %(width)d x %(height)d oder weniger." + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "Benutzer" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "Dateien" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "Zwischenablage" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "Zwischenablagen" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "Datei" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "Eintrag der Zwischenablage" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "Einträge der Zwischenablage" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "Ordner" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "Dateigrösse" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "hat alle Pflichtinhalte" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "ursprünglicher Dateiname" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "Name" + +#: models/filemodels.py:116 +msgid "description" +msgstr "Beschreibung" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "Besitzer" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "Hochgeladen am" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "Verändert am" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Berechtigungen deaktiviert" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "Zugriffskontrolle für diese Datei deaktivieren. Die Datei wird für jeden öffentlich zugreifbar sein." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "Übergeordneter Ordner" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "Angelegt am" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Ordner" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Ordner" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "alle Einträge" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "nur dieser Eintrag" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "dieser Eintrag und alle darunter liegenden Einträge" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "vererben" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "erlauben" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "verbieten" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "Typ" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "Gruppe" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "Jeder" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "kann lesen" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "kann ändern" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "kann Kinder hinzufügen" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "Ordnerberechtigung" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "Ordnerberechtigungen" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "Für den Typ \"Alle Einträge\" kann kein Ordner ausgewählt werden. " + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "Für alle Typen außer \"Alle Einträge\" muss ein Ordner ausgewählt werden." + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "Zusammen mit \"Jeder\" kann kein Benutzer oder eine Gruppe ausgewählt werden." + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "Mindestens ein Eintrag muss gewählt werden: \"Benutzer\", \"Gruppe\" oder \"Jeder\"." + +#: models/foldermodels.py:360 +#| msgid "Folders" +msgid "All Folders" +msgstr "Alle Ordner" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "Logischer Pfad" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "Nutzer: {user}" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "Gruppe: {group}" + +#: models/foldermodels.py:375 +#| msgid "everybody" +msgid "Everybody" +msgstr "Jede(r)" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "Edit" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "Lesen" + +#: models/foldermodels.py:390 +#| msgid "can add children" +msgid "Add children" +msgstr "Unterordner hinzufügen" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "Aufgenommen am" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "Autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "Nennung des Autoren ist Pflicht" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "Veröffentlichung des Copyright ist Pflicht" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "Breite in Pixel." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "Höhe in Pixel." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "Vorschaubild-Optionen" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Nicht sortierte Uploads" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "Dateien mit fehlenden Metadaten" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "Start" + +#: settings.py:273 +msgid "Show table view" +msgstr "Tabellenansicht" + +#: settings.py:278 +#| msgid "thumbnail option" +msgid "Show thumbnail view" +msgstr "Vorschauansicht" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Die ausgewählte Aktion ausführen" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Los" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Hier klicken, um die Objekte über alle Seiten hinweg auszuwählen" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Alle %(total_count)s Dateien und/oder Ordner auswählen" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Auswahl aufheben" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Zur Admin Startseite zurück gehen" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Startseite" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Zur Filer App zurück gehen" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Zum Root Ordner zurück gehen" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Zum Ordner '%(folder_name)s' zurück gehen" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplikate" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "Beim Löschen der ausgewählten Dateien und/oder Ordner, würden verbundene Objekte mitgelöscht. Dein Benutzerkonto hat jedoch nicht die erforderlichen Berechtigungen, um die folgenden Objekttypen zu löschen:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "Das Löschen der folgenden ausgewählten Dateien und/oder Ordner würde das Löschen der folgenden geschützten verknüpften Objekte erfordern:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "Bist Du sicher, dass Du die ausgewählten Dateien und/oder Ordner löschen willst? Alle der folgenden Objekte und ihre verbundenen Einträge werden gelöscht:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Nein, zurück gehen" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Ja, ich bin sicher" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Historie" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Auf der Website ansehen" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Gehe zurück zu" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "Admin Startseite" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Ordner Icon" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files " +"and/or folders." +msgstr "Dein Benutzerkonto hat nicht die Berechtigungen, um alle der ausgewählten Dateien und/oder Ordner zu kopieren." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Zurück gehen" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Es gibt keine verwendbaren Zielordner." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Es gibt keine Dateien und/oder Ordner zum Kopieren." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "Die folgenden Dateien und/oder Ordner werden in einen Zielordner kopiert (unter Beibehaltung ihrer Ordnerstruktur):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Zielordner" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopieren" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Es ist nicht erlaubt Dateien in den selben Ordner zu kopieren" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "Dein Benutzerkonto hat nicht die erforderlichen Berechtigungen, um die Grösse jedes der ausgewählten Bilder zu verändern." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Es gibt keine Bilder auf denen die Größenänderung anwendbar ist." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Die Grösse der folgenden Bilder wird verändert:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "Wähle eine vorhandene Vorschaubild Option aus oder gib die Parameter für die Bildgrössenänderung an:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "Warnung: Die Bilder werden in-place verändert. Die Originale gehen dabei verloren. Lege bei Bedarf eine Kopie der Originale an." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Bildgrösse verändern" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files " +"and/or folders." +msgstr "Dein Benutzerkonto hat nicht die erforderlichen Berechtigungen, um alle ausgewählten Dateien und/oder Ordner zu verschieben." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Es gibt keine verschiebbaren Dateien und/oder Ordner." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "Die folgenden Dateien und/oder Ordner werden in ein Zielordner verschoben (unter Beibehaltung ihrer Ordnerstruktur):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Verschieben" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Es ist nicht erlaubt Dateien in den selben Ordner zu verschieben" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Dein Benutzerkonto hat nicht die erforderlichen Berechtigungen, um alle ausgewählten Dateien umzubenennen." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Es sind keine Dateien, die umbenannt werden können." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "Die folgenden Dateien werden umbenannt (sie bleiben in ihren Ordnern und behalten ihren originalen Dateinamen, nur dier angezeigte Dateiname wird geändert):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Umbenennen" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Gehe zurück zum übergeordneten Ordner" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Details des aktuellen Ordners ändern" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Ändern" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Hier klicken, um nach dem eingegebenen Text zu suchen" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Suchen" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Schliessen" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limit" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Aktivieren, um die Suche auf den aktuellen Ordner zu beschränken" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Suche auf aktuellen Ordner beschränken" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Löschen" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Fügt einen neuen Ordner hinzu" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Neuer Ordner" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Dateien hochladen" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Du musst zuerst einen Ordner auswählen" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Name" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Besitzer" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Grösse" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Aktion" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Ändere Details des Ordners '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s Ordner" +msgstr[1] "%(counter)s Ordner" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s Datei" +msgstr[1] "%(counter)s Dateien" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Ordner-Details ändern" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Ordner löschen" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Diese Datei auswählen" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Ändere Details von '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Berechtigungen" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "deaktiviert" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "aktiviert" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "URL in Zwischenablage kopiert" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Canonical url '%(item_label)s'" +msgstr "Kanonische URL '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Download '%(item_label)s'" +msgstr "'%(item_label)s' herunterladen" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Datei löschen" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Dateien hier ablegen oder den \"Datei hochladen\" Button benutzen." + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Dateien hier ablegen um sie in den folgenden Ordner abzulegen:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Hochladen" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "Abbrechen" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Upload erfolgreich!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Upload abgebrochen!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "vorige" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Seite %(number)s von %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "nächste" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Alle %(total_count)s auswählen" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +#| msgid "Select this file" +msgid "Select all" +msgstr "Alle auswählen" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +#| msgid "Filer" +msgid "Files" +msgstr "Dateien" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Hinzufügen" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Django Seiten-Administration" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Bitte korrigiere den unten genannten Fehler." +msgstr[1] "Bitte korrigiere die unten genannten Fehler." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Sichern" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "Dein Browser unterstützt kein Audio." + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "Dein Browser unterstützt kein Video." + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Zwischenablage" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Alle Einträge hier einfügen" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Bewege alle Dateien in der Zwischenablage nach" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Zwischenablage leeren" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "die Zwischenablage ist leer" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "das Hochladen schlug fehl" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "Herunterladen" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "Vergrößern" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +#| msgid "file missing" +msgid "File is missing" +msgstr "Datei fehlt" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Typ" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Dateigrösse" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Verändert am" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Erstellt am" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "gefunden" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "und" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "Suche abbrechen" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Zurücksetzen" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "oder die Datei hierhin ziehen" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "keine Datei ausgewählt" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Nachschlagen" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Datei auswählen" + +#: templates/admin/filer/widgets/admin_folder.html:16 +#| msgid "Choose File" +msgid "Choose Folder" +msgstr "Ordner auswählen" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "Datei \"{file_name}\": Die Sicherheitseinstellung der Seite haben die Datei zurückgewiesen." + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "Datei \"{file_name}\": Die Sicherheitseinstellung weisen {file_type}-Dateien zurück." + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "Datei \"{file_name}\": Die Sicherheitseinstellung weisen HTML-Dateien zurück." + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "Datei \"{file_name}\": Zurückgewiesen, da eine \"Cross Site Scripting\"-Attacke nicht ausgeschlossen werden kann." + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "Datei \"{file_name}\": SVG-Format nicht erkannt" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/en/LC_MESSAGES/django.mo b/filer/locale/en/LC_MESSAGES/django.mo index 11a1682b6234eda7558e71b08dc2e644d7167e7e..4f8792c0612b0ca8ac1345f94ed252f54afddbad 100644 GIT binary patch literal 15724 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 J`(XDc{{bkXdFucG diff --git a/filer/locale/en/LC_MESSAGES/django.po b/filer/locale/en/LC_MESSAGES/django.po index 449ccce4c..fbcc67bdc 100644 --- a/filer/locale/en/LC_MESSAGES/django.po +++ b/filer/locale/en/LC_MESSAGES/django.po @@ -1,483 +1,643 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. # +# Translators: +# Translators: msgid "" msgstr "" -"Project-Id-Version: django-filer 0.9\n" +"Project-Id-Version: django Filer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 19:10+0200\n" -"PO-Revision-Date: 2012-09-03 20:10+0100\n" -"Last-Translator: Stefan Foulis \n" -"Language-Team: en \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2016-06-17 14:16+0000\n" +"Last-Translator: Angelo Dini \n" +"Language-Team: English (http://www.transifex.com/divio/django-filer/language/" +"en/)\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: views.py:103 -msgid "Folder with this name already exists." +#: admin/clipboardadmin.py:17 +#, fuzzy +#| msgid "" +#| "Your account doesn't have permissions to rename all of the selected files." +msgid "You do not have permission to upload files." msgstr "" +"Your account doesn't have permissions to rename all of the selected files." -#: admin/fileadmin.py:41 -msgid "Advanced" +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" msgstr "" -#: admin/folderadmin.py:324 admin/folderadmin.py:427 +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Advanced" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "canonical URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." -#: admin/folderadmin.py:344 +#: admin/folderadmin.py:434 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(total_count)s selected" +msgstr[1] "All %(total_count)s selected" -#: admin/folderadmin.py:377 +#: admin/folderadmin.py:460 #, python-format -msgid "0 of %(cnt)s selected" +msgid "Directory listing for %(folder_name)s" msgstr "" -#: admin/folderadmin.py:456 +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 of %(cnt)s selected" + +#: admin/folderadmin.py:612 msgid "No action selected." -msgstr "" +msgstr "No action selected." -#: admin/folderadmin.py:497 +#: admin/folderadmin.py:664 #, python-format msgid "Successfully moved %(count)d files to clipboard." -msgstr "" +msgstr "Successfully moved %(count)d files to clipboard." -#: admin/folderadmin.py:503 +#: admin/folderadmin.py:669 msgid "Move selected files to clipboard" -msgstr "" +msgstr "Move selected files to clipboard" -#: admin/folderadmin.py:537 +#: admin/folderadmin.py:709 #, python-format msgid "Successfully disabled permissions for %(count)d files." -msgstr "" +msgstr "Successfully disabled permissions for %(count)d files." -#: admin/folderadmin.py:541 +#: admin/folderadmin.py:711 #, python-format msgid "Successfully enabled permissions for %(count)d files." -msgstr "" +msgstr "Successfully enabled permissions for %(count)d files." -#: admin/folderadmin.py:550 +#: admin/folderadmin.py:719 msgid "Enable permissions for selected files" -msgstr "" +msgstr "Enable permissions for selected files" -#: admin/folderadmin.py:555 +#: admin/folderadmin.py:725 msgid "Disable permissions for selected files" -msgstr "" +msgstr "Disable permissions for selected files" -#: admin/folderadmin.py:623 +#: admin/folderadmin.py:789 #, python-format msgid "Successfully deleted %(count)d files and/or folders." -msgstr "" +msgstr "Successfully deleted %(count)d files and/or folders." -#: admin/folderadmin.py:630 +#: admin/folderadmin.py:794 msgid "Cannot delete files and/or folders" -msgstr "" +msgstr "Cannot delete files and/or folders" -#: admin/folderadmin.py:632 +#: admin/folderadmin.py:796 msgid "Are you sure?" -msgstr "" +msgstr "Are you sure?" -#: admin/folderadmin.py:637 +#: admin/folderadmin.py:802 msgid "Delete files and/or folders" -msgstr "" +msgstr "Delete files and/or folders" -#: admin/folderadmin.py:656 +#: admin/folderadmin.py:823 msgid "Delete selected files and/or folders" -msgstr "" +msgstr "Delete selected files and/or folders" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Folders with names %s already exist at the selected destination" -#: admin/folderadmin.py:771 +#: admin/folderadmin.py:934 #, python-format msgid "" "Successfully moved %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." -#: admin/folderadmin.py:778 admin/folderadmin.py:780 +#: admin/folderadmin.py:942 admin/folderadmin.py:944 msgid "Move files and/or folders" -msgstr "" +msgstr "Move files and/or folders" -#: admin/folderadmin.py:797 +#: admin/folderadmin.py:959 msgid "Move selected files and/or folders" -msgstr "" +msgstr "Move selected files and/or folders" -#: admin/folderadmin.py:854 +#: admin/folderadmin.py:1016 #, python-format msgid "Successfully renamed %(count)d files." -msgstr "" +msgstr "Successfully renamed %(count)d files." -#: admin/folderadmin.py:862 admin/folderadmin.py:864 admin/folderadmin.py:881 +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 msgid "Rename files" -msgstr "" +msgstr "Rename files" -#: admin/folderadmin.py:975 +#: admin/folderadmin.py:1137 #, python-format msgid "" "Successfully copied %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." -#: admin/folderadmin.py:989 admin/folderadmin.py:991 +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 msgid "Copy files and/or folders" -msgstr "" +msgstr "Copy files and/or folders" -#: admin/folderadmin.py:1010 +#: admin/folderadmin.py:1174 msgid "Copy selected files and/or folders" -msgstr "" +msgstr "Copy selected files and/or folders" -#: admin/folderadmin.py:1105 +#: admin/folderadmin.py:1279 #, python-format msgid "Successfully resized %(count)d images." -msgstr "" +msgstr "Successfully resized %(count)d images." -#: admin/folderadmin.py:1113 admin/folderadmin.py:1115 +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 msgid "Resize images" -msgstr "" +msgstr "Resize images" -#: admin/folderadmin.py:1133 +#: admin/folderadmin.py:1303 msgid "Resize selected images" -msgstr "" +msgstr "Resize selected images" -#: admin/forms.py:26 +#: admin/forms.py:24 msgid "Suffix which will be appended to filenames of copied files." -msgstr "" +msgstr "Suffix which will be appended to filenames of copied files." -#: admin/forms.py:33 +#: admin/forms.py:31 #, python-format msgid "" "Suffix should be a valid, simple and lowercase filename part, like " "\"%(valid)s\"." msgstr "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." -#: admin/forms.py:54 +#: admin/forms.py:52 #, python-format msgid "Unknown rename format value key \"%(key)s\"." -msgstr "" +msgstr "Unknown rename format value key \"%(key)s\"." -#: admin/forms.py:56 +#: admin/forms.py:54 #, python-format msgid "Invalid rename format: %(error)s." -msgstr "" +msgstr "Invalid rename format: %(error)s." -#: admin/forms.py:62 +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 msgid "thumbnail option" -msgstr "" +msgstr "thumbnail option" -#: admin/forms.py:63 +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 msgid "width" -msgstr "" +msgstr "width" -#: admin/forms.py:64 +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 msgid "height" -msgstr "" +msgstr "height" -#: admin/forms.py:65 +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 msgid "crop" -msgstr "" +msgstr "crop" -#: admin/forms.py:66 +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 msgid "upscale" -msgstr "" +msgstr "upscale" -#: admin/forms.py:71 +#: admin/forms.py:79 msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Thumbnail option or resize parameters must be choosen." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Subject location" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Location of the main subject of the scene. Format: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Invalid subject location format. " + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Subject location is outside of the image. " + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Your input: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" msgstr "" -#: admin/forms.py:73 -msgid "Resize parameters must be choosen." +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" msgstr "" -#: admin/imageadmin.py:12 -msgid "Subject location" +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Folder with this name already exists." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" msgstr "" -#: admin/imageadmin.py:13 -msgid "Location of the main subject of the scene." +#: models/abstract.py:62 +msgid "default alt text" +msgstr "default alt text" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "default caption" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "subject location" + +#: models/abstract.py:91 +msgid "image" +msgstr "image" + +#: models/abstract.py:92 +msgid "images" +msgstr "images" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." msgstr "" -#: models/clipboardmodels.py:9 models/foldermodels.py:236 -msgid "user" +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." msgstr "" -#: models/clipboardmodels.py:11 models/filemodels.py:287 +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "user" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 msgid "files" -msgstr "" +msgstr "files" -#: models/clipboardmodels.py:34 models/clipboardmodels.py:40 +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 msgid "clipboard" -msgstr "" +msgstr "clipboard" -#: models/clipboardmodels.py:35 +#: models/clipboardmodels.py:25 msgid "clipboards" -msgstr "" +msgstr "clipboards" -#: models/clipboardmodels.py:39 models/filemodels.py:35 -#: models/filemodels.py:286 +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 msgid "file" -msgstr "" +msgstr "file" -#: models/clipboardmodels.py:44 +#: models/clipboardmodels.py:56 msgid "clipboard item" -msgstr "" +msgstr "clipboard item" -#: models/clipboardmodels.py:45 +#: models/clipboardmodels.py:57 msgid "clipboard items" -msgstr "" +msgstr "clipboard items" -#: models/filemodels.py:33 templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 #: templates/admin/filer/folder/new_folder_form.html:4 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 msgid "folder" -msgstr "" +msgstr "folder" -#: models/filemodels.py:36 +#: models/filemodels.py:81 msgid "file size" -msgstr "" +msgstr "file size" -#: models/filemodels.py:38 +#: models/filemodels.py:87 msgid "sha1" -msgstr "" +msgstr "sha1" -#: models/filemodels.py:40 +#: models/filemodels.py:94 msgid "has all mandatory data" -msgstr "" +msgstr "has all mandatory data" -#: models/filemodels.py:42 +#: models/filemodels.py:100 msgid "original filename" -msgstr "" +msgstr "original filename" -#: models/filemodels.py:44 models/foldermodels.py:99 +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 msgid "name" -msgstr "" +msgstr "name" -#: models/filemodels.py:46 +#: models/filemodels.py:116 msgid "description" -msgstr "" +msgstr "description" -#: models/filemodels.py:50 +#: models/filemodels.py:125 models/foldermodels.py:108 msgid "owner" -msgstr "uploaded by" +msgstr "owner" -#: models/filemodels.py:52 models/foldermodels.py:105 +#: models/filemodels.py:129 models/foldermodels.py:116 msgid "uploaded at" -msgstr "" +msgstr "uploaded at" -#: models/filemodels.py:53 models/foldermodels.py:108 +#: models/filemodels.py:134 models/foldermodels.py:126 msgid "modified at" -msgstr "" +msgstr "modified at" -#: models/filemodels.py:57 +#: models/filemodels.py:140 msgid "Permissions disabled" +msgstr "Permissions disabled" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." msgstr "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." -#: models/filemodels.py:58 -msgid "Disable any permission checking for this " +#: models/foldermodels.py:94 +msgid "parent" msgstr "" -#: models/foldermodels.py:107 +#: models/foldermodels.py:121 msgid "created at" -msgstr "" +msgstr "created at" -#: models/foldermodels.py:211 -#: templates/admin/filer/widgets/admin_folder.html:3 -#: templates/admin/filer/widgets/admin_folder.html:5 +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Folder" -msgstr "" +msgstr "Folder" -#: models/foldermodels.py:212 +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 msgid "Folders" -msgstr "" +msgstr "Folders" -#: models/foldermodels.py:227 +#: models/foldermodels.py:260 msgid "all items" -msgstr "" +msgstr "all items" -#: models/foldermodels.py:228 +#: models/foldermodels.py:261 msgid "this item only" -msgstr "" +msgstr "this item only" -#: models/foldermodels.py:229 +#: models/foldermodels.py:262 msgid "this item and all children" +msgstr "this item and all children" + +#: models/foldermodels.py:266 +msgid "inherit" msgstr "" -#: models/foldermodels.py:233 +#: models/foldermodels.py:267 +msgid "allow" +msgstr "allow" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "deny" + +#: models/foldermodels.py:280 msgid "type" -msgstr "" +msgstr "type" -#: models/foldermodels.py:239 +#: models/foldermodels.py:297 msgid "group" -msgstr "" +msgstr "group" -#: models/foldermodels.py:240 +#: models/foldermodels.py:304 msgid "everybody" -msgstr "" - -#: models/foldermodels.py:242 -msgid "can edit" -msgstr "" +msgstr "everybody" -#: models/foldermodels.py:243 +#: models/foldermodels.py:309 msgid "can read" -msgstr "" +msgstr "can read" -#: models/foldermodels.py:244 +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "can edit" + +#: models/foldermodels.py:325 msgid "can add children" -msgstr "" +msgstr "can add children" -#: models/foldermodels.py:273 +#: models/foldermodels.py:333 msgid "folder permission" -msgstr "" +msgstr "folder permission" -#: models/foldermodels.py:274 +#: models/foldermodels.py:334 msgid "folder permissions" -msgstr "" +msgstr "folder permissions" -#: models/imagemodels.py:39 -msgid "date taken" +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." msgstr "" -#: models/imagemodels.py:42 -msgid "default alt text" +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." msgstr "" -#: models/imagemodels.py:43 -msgid "default caption" +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." msgstr "" -#: models/imagemodels.py:45 templates/image_filer/image.html:6 -msgid "author" +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." msgstr "" -#: models/imagemodels.py:47 -msgid "must always publish author credit" -msgstr "" +#: models/foldermodels.py:360 +#, fuzzy +#| msgid "Folders" +msgid "All Folders" +msgstr "Folders" -#: models/imagemodels.py:48 -msgid "must always publish copyright" +#: models/foldermodels.py:362 +msgid "Logical Path" msgstr "" -#: models/imagemodels.py:50 -msgid "subject location" +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" msgstr "" -#: models/imagemodels.py:200 -msgid "image" +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" msgstr "" -#: models/imagemodels.py:201 -msgid "images" +#: models/foldermodels.py:375 +#, fuzzy +#| msgid "everybody" +msgid "Everybody" +msgstr "everybody" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" msgstr "" -#: models/virtualitems.py:45 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "unfiled files" +#: models/foldermodels.py:389 +msgid "Read" msgstr "" -#: models/virtualitems.py:59 +#: models/foldermodels.py:390 +#, fuzzy +#| msgid "can add children" +msgid "Add children" +msgstr "can add children" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "date taken" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "author" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "must always publish author credit" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "must always publish copyright" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "width in pixel." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "height in pixel." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "thumbnail options" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Unsorted Uploads" + +#: models/virtualitems.py:73 msgid "files with missing metadata" -msgstr "" +msgstr "files with missing metadata" -#: models/virtualitems.py:73 templates/admin/filer/breadcrumbs.html:6 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:10 +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 msgid "root" +msgstr "root" + +#: settings.py:273 +msgid "Show table view" msgstr "" -#: templates/admin/filer/actions.html:4 +#: settings.py:278 +#, fuzzy +#| msgid "thumbnail option" +msgid "Show thumbnail view" +msgstr "thumbnail option" + +#: templates/admin/filer/actions.html:5 msgid "Run the selected action" -msgstr "" +msgstr "Run the selected action" -#: templates/admin/filer/actions.html:4 +#: templates/admin/filer/actions.html:5 msgid "Go" -msgstr "" +msgstr "Go" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 msgid "Click here to select the objects across all pages" -msgstr "" +msgstr "Click here to select the objects across all pages" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 #, python-format msgid "Select all %(total_count)s files and/or folders" -msgstr "" +msgstr "Select all %(total_count)s files and/or folders" -#: templates/admin/filer/actions.html:13 +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 msgid "Clear selection" -msgstr "" +msgstr "Clear selection" #: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 msgid "Go back to admin homepage" -msgstr "" +msgstr "Go back to admin homepage" #: templates/admin/filer/breadcrumbs.html:4 -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 msgid "Home" -msgstr "" +msgstr "Home" #: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 msgid "Go back to Filer app" -msgstr "" - -#: templates/admin/filer/breadcrumbs.html:5 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/image_filer/image_export_form.html:8 -msgid "Filer" -msgstr "" +msgstr "Go back to Filer app" #: templates/admin/filer/breadcrumbs.html:6 -#: templates/image_filer/image_export_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Go back to root folder" -msgstr "" +msgstr "Go back to root folder" #: templates/admin/filer/breadcrumbs.html:8 -#: templates/admin/filer/breadcrumbs.html:11 -#: templates/admin/filer/folder/change_form.html:11 -#: templates/image_filer/image_export_form.html:12 -#: templates/image_filer/image_export_form.html:14 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 #, python-format msgid "Go back to '%(folder_name)s' folder" -msgstr "" +msgstr "Go back to '%(folder_name)s' folder" -#: templates/admin/filer/change_form.html:28 -msgid "duplicates" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:13 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:21 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " -"following protected related objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:29 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:34 -#: templates/admin/filer/delete_selected_files_confirmation.html:45 -msgid "Yes, I'm sure" -msgstr "" +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicates" #: templates/admin/filer/delete_selected_files_confirmation.html:11 msgid "" @@ -485,399 +645,636 @@ msgid "" "objects, but your account doesn't have permission to delete the following " "types of objects:" msgstr "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" #: templates/admin/filer/delete_selected_files_confirmation.html:19 msgid "" "Deleting the selected files and/or folders would require deleting the " "following protected related objects:" msgstr "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" #: templates/admin/filer/delete_selected_files_confirmation.html:27 msgid "" "Are you sure you want to delete the selected files and/or folders? All of " "the following objects and their related items will be deleted:" msgstr "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:7 -#: templates/image_filer/image_export_form.html:8 -#: templates/image_filer/image_export_form.html:16 -msgid "Go back to" -msgstr "" +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "No, take me back" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 -msgid "admin homepage" -msgstr "" +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Yes, I'm sure" -#: templates/admin/filer/folder/change_form.html:22 -#: templates/admin/filer/image/change_form.html:9 +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 msgid "History" -msgstr "" +msgstr "History" +#: templates/admin/filer/file/change_form.html:37 #: templates/admin/filer/folder/change_form.html:23 -#: templates/admin/filer/image/change_form.html:10 +#: templates/admin/filer/image/change_form.html:37 msgid "View on site" -msgstr "" +msgstr "View on site" -#: templates/admin/filer/folder/change_form.html:35 -#: templates/admin/filer/folder/directory_listing.html:75 -#: templates/admin/filer/folder/directory_listing.html:85 -#: templates/admin/filer/folder/directory_table.html:23 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Go back to" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "admin homepage" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 msgid "Folder Icon" -msgstr "" +msgstr "Folder Icon" -#: templates/admin/filer/folder/choose_copy_destination.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:23 msgid "" "Your account doesn't have permissions to copy all of the selected files and/" "or folders." msgstr "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." -#: templates/admin/filer/folder/choose_copy_destination.html:15 -#: templates/admin/filer/folder/choose_move_destination.html:15 +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Take me back" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 msgid "There are no destination folders available." -msgstr "" +msgstr "There are no destination folders available." -#: templates/admin/filer/folder/choose_copy_destination.html:18 +#: templates/admin/filer/folder/choose_copy_destination.html:35 msgid "There are no files and/or folders available to copy." -msgstr "" +msgstr "There are no files and/or folders available to copy." -#: templates/admin/filer/folder/choose_copy_destination.html:20 +#: templates/admin/filer/folder/choose_copy_destination.html:40 msgid "" "The following files and/or folders will be copied to a destination folder " "(retaining their tree structure):" msgstr "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" -#: templates/admin/filer/folder/choose_copy_destination.html:32 -#: templates/admin/filer/folder/choose_move_destination.html:32 +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 msgid "Destination folder:" -msgstr "" +msgstr "Destination folder:" -#: templates/admin/filer/folder/choose_copy_destination.html:39 +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 msgid "Copy" -msgstr "" +msgstr "Copy" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "It is not allowed to copy files into same folder" -#: templates/admin/filer/folder/choose_images_resize_options.html:12 +#: templates/admin/filer/folder/choose_images_resize_options.html:15 msgid "" "Your account doesn't have permissions to resize all of the selected images." msgstr "" +"Your account doesn't have permissions to resize all of the selected images." -#: templates/admin/filer/folder/choose_images_resize_options.html:15 +#: templates/admin/filer/folder/choose_images_resize_options.html:18 msgid "There are no images available to resize." -msgstr "" +msgstr "There are no images available to resize." -#: templates/admin/filer/folder/choose_images_resize_options.html:17 +#: templates/admin/filer/folder/choose_images_resize_options.html:20 msgid "The following images will be resized:" -msgstr "" - -#: templates/admin/filer/folder/choose_images_resize_options.html:30 -msgid "Choose an existing thumbnail option or enter resize parameters:" -msgstr "" +msgstr "The following images will be resized:" #: templates/admin/filer/folder/choose_images_resize_options.html:32 -msgid "Choose resize parameters:" -msgstr "" +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "Choose an existing thumbnail option or enter resize parameters:" -#: templates/admin/filer/folder/choose_images_resize_options.html:35 +#: templates/admin/filer/folder/choose_images_resize_options.html:36 msgid "" "Warning: Images will be resized in-place and originals will be lost. Maybe " "first make a copy of them to retain the originals." msgstr "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." -#: templates/admin/filer/folder/choose_images_resize_options.html:36 +#: templates/admin/filer/folder/choose_images_resize_options.html:39 msgid "Resize" -msgstr "" +msgstr "Resize" -#: templates/admin/filer/folder/choose_move_destination.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:35 msgid "" "Your account doesn't have permissions to move all of the selected files and/" "or folders." msgstr "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." -#: templates/admin/filer/folder/choose_move_destination.html:18 +#: templates/admin/filer/folder/choose_move_destination.html:47 msgid "There are no files and/or folders available to move." -msgstr "" +msgstr "There are no files and/or folders available to move." -#: templates/admin/filer/folder/choose_move_destination.html:20 +#: templates/admin/filer/folder/choose_move_destination.html:52 msgid "" "The following files and/or folders will be moved to a destination folder " "(retaining their tree structure):" msgstr "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" -#: templates/admin/filer/folder/choose_move_destination.html:38 +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 msgid "Move" -msgstr "" +msgstr "Move" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "It is not allowed to move files into same folder" -#: templates/admin/filer/folder/choose_rename_format.html:12 +#: templates/admin/filer/folder/choose_rename_format.html:15 msgid "" "Your account doesn't have permissions to rename all of the selected files." msgstr "" +"Your account doesn't have permissions to rename all of the selected files." -#: templates/admin/filer/folder/choose_rename_format.html:15 +#: templates/admin/filer/folder/choose_rename_format.html:18 msgid "There are no files available to rename." -msgstr "" +msgstr "There are no files available to rename." -#: templates/admin/filer/folder/choose_rename_format.html:17 +#: templates/admin/filer/folder/choose_rename_format.html:20 msgid "" "The following files will be renamed (they will stay in their folders and " "keep original filename, only displayed filename will be changed):" msgstr "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" -#: templates/admin/filer/folder/choose_rename_format.html:54 +#: templates/admin/filer/folder/choose_rename_format.html:59 msgid "Rename" -msgstr "" +msgstr "Rename" -#: templates/admin/filer/folder/directory_listing.html:66 -msgid "Adds a new Folder" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Go back to the parent folder" -#: templates/admin/filer/folder/directory_listing.html:66 -#: templates/image_filer/include/export_dialog.html:34 -msgid "New Folder" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Change current folder details" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "upload files" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Change" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "Upload" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Click here to run search for entered phrase" -#: templates/admin/filer/folder/directory_listing.html:74 -msgid "Go back to the parent folder" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Search" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:18 -#, python-format -msgid "1 folder" -msgid_plural "%(counter)s folders" -msgstr[0] "" -msgstr[1] "" +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Close" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:19 -#, python-format -msgid "1 file" -msgid_plural "%(counter)s files" -msgstr[0] "" -msgstr[1] "" +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limit" -#: templates/admin/filer/folder/directory_listing.html:80 -msgid "Change current folder details" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Check it to limit the search to current folder" -#: templates/admin/filer/folder/directory_listing.html:80 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:43 -msgid "Change" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Limit the search to current folder" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Delete" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Adds a new Folder" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "New Folder" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Upload Files" -#: templates/admin/filer/folder/directory_table.html:13 +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "You have to select a folder first" + +#: templates/admin/filer/folder/directory_table_list.html:16 msgid "Name" -msgstr "" +msgstr "Name" -#: templates/admin/filer/folder/directory_table.html:23 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:29 +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Owner" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Size" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Action" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 #, python-format msgid "Change '%(item_label)s' folder details" -msgstr "" +msgstr "Change '%(item_label)s' folder details" -#: templates/admin/filer/folder/directory_table.html:30 -#: templates/admin/filer/folder/directory_table.html:45 -msgid "Owner" -msgstr "Uploaded by" +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s folder" +msgstr[1] "%(counter)s folders" -#: templates/admin/filer/folder/directory_table.html:37 +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s file" +msgstr[1] "%(counter)s files" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Change folder details" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Remove folder" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 msgid "Select this file" -msgstr "" +msgstr "Select this file" -#: templates/admin/filer/folder/directory_table.html:39 -#: templates/admin/filer/folder/directory_table.html:43 -#: templates/admin/filer/folder/directory_table.html:44 +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 #, python-format msgid "Change '%(item_label)s' details" -msgstr "" +msgstr "Change '%(item_label)s' details" -#: templates/admin/filer/folder/directory_table.html:42 -#, python-format -msgid "Delete '%(item_label)s'" -msgstr "" - -#: templates/admin/filer/folder/directory_table.html:42 -msgid "Delete" -msgstr "" - -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "Permissions" -msgstr "" +msgstr "Permissions" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "disabled" -msgstr "" +msgstr "disabled" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "enabled" -msgstr "" +msgstr "enabled" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Move selected files to clipboard" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, fuzzy, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Canonical url '%(item_label)s'" +msgstr "Change '%(item_label)s' details" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, fuzzy, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Download '%(item_label)s'" +msgstr "Change '%(item_label)s' details" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Remove file" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Drop files here or use the \"Upload Files\" button" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Drop your file to upload into:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Upload" -#: templates/admin/filer/folder/directory_table.html:50 -msgid "Move to clipboard" -msgstr "" +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "cancel" -#: templates/admin/filer/folder/directory_table.html:58 -msgid "there are no files or subfolders" -msgstr "" +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Upload success!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Upload canceled!" -#: templates/admin/filer/folder/directory_table.html:65 +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 msgid "previous" -msgstr "" +msgstr "previous" -#: templates/admin/filer/folder/directory_table.html:69 +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 #, python-format -msgid "" -"\n" -" Page %(number)s of %(num_pages)s.\n" -" " -msgstr "" +msgid "Page %(number)s of %(num_pages)s." +msgstr "Page %(number)s of %(num_pages)s." -#: templates/admin/filer/folder/directory_table.html:75 +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 msgid "next" -msgstr "" +msgstr "next" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Select all %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +#, fuzzy +#| msgid "Select this file" +msgid "Select all" +msgstr "Select this file" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +#, fuzzy +#| msgid "Filer" +msgid "Files" +msgstr "Filer" #: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 msgid "Add new" +msgstr "Add new" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" msgstr "" -#: templates/admin/filer/folder/new_folder_form.html:13 +#: templates/admin/filer/folder/new_folder_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Please correct the error below." +msgstr[1] "Please correct the errors below." -#: templates/admin/filer/folder/new_folder_form.html:28 +#: templates/admin/filer/folder/new_folder_form.html:30 msgid "Save" -msgstr "" +msgstr "Save" -#: templates/admin/filer/image/change_form.html:21 -msgid "Full size preview" +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." msgstr "" -#: templates/admin/filer/tools/search_form.html:8 -#: templates/admin/filer/tools/search_form.html:14 -msgid "Search" +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." msgstr "" -#: templates/admin/filer/tools/search_form.html:13 -msgid "Enter your search phrase here" -msgstr "" +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Clipboard" -#: templates/admin/filer/tools/search_form.html:14 -msgid "Click here to" -msgstr "" +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Paste all items here" -#: templates/admin/filer/tools/search_form.html:14 -msgid "run search for entered phrase" -msgstr "" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Move all clipboard files to" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Empty Clipboard" -#: templates/admin/filer/tools/search_form.html:15 -msgid "Check it to" +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "the clipboard is empty" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "upload failed" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" msgstr "" -#: templates/admin/filer/tools/search_form.html:15 -#: templates/admin/filer/tools/search_form.html:16 -msgid "limit the search to current folder" +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" msgstr "" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +#, fuzzy +#| msgid "file missing" +msgid "File is missing" +msgstr "file missing" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Type" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "File-size" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modified" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Created" + +#: templates/admin/filer/tools/search_form.html:5 msgid "found" -msgstr "" +msgstr "found" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/search_form.html:5 msgid "and" -msgstr "" +msgstr "and" -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/tools/search_form.html:7 msgid "cancel search" -msgstr "" +msgstr "cancel search" -#: templates/admin/filer/tools/upload_button_js.html:24 -#: templates/admin/filer/widgets/admin_file.html:7 -#: templates/admin/filer/widgets/admin_file.html:8 -msgid "file missing" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Clear" -#: templates/admin/filer/tools/clipboard/clipboard.html:7 -msgid "Clipboard" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "or drop your file here" -#: templates/admin/filer/tools/clipboard/clipboard.html:19 -msgid "Paste all items here" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "no file selected" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "discard" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Lookup" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "Move all clipboard files to" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Choose File" -#: templates/admin/filer/tools/clipboard/clipboard.html:43 -msgid "the clipboard is empty" -msgstr "" +#: templates/admin/filer/widgets/admin_folder.html:16 +#, fuzzy +#| msgid "Choose File" +msgid "Choose Folder" +msgstr "Choose File" -#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:11 -msgid "upload failed" +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:11 -msgid "no file selected" +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:14 -#: templates/admin/filer/widgets/admin_file.html:15 -#: templates/admin/filer/widgets/admin_folder.html:7 -#: templates/admin/filer/widgets/admin_folder.html:8 -msgid "Lookup" +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:17 -#: templates/admin/filer/widgets/admin_folder.html:10 -msgid "Clear" +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" msgstr "" -#: templates/admin/filer/widgets/admin_folder.html:5 -msgid "none selected" +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" msgstr "" -#: templates/image_filer/folder.html:3 -#, python-format -msgid "Folder '%(folder_label)s' files" -msgstr "" +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." -#: templates/image_filer/folder.html:6 -msgid "File name" -msgstr "" +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" -#: templates/image_filer/image_export_form.html:17 -msgid "export" -msgstr "" +#~ msgid "Open file" +#~ msgstr "Open file" -#: templates/image_filer/image_export_form.html:27 -msgid "download image" -msgstr "" +#~ msgid "Full size preview" +#~ msgstr "Full size preview" -#: templates/image_filer/include/export_dialog.html:13 -msgid "Folder name already taken." -msgstr "" +#~ msgid "Add Description" +#~ msgstr "Add Description" -#: templates/image_filer/include/export_dialog.html:15 -msgid "Submit" -msgstr "" +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#, fuzzy +#~| msgid "Subject location" +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/es/LC_MESSAGES/django.mo b/filer/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..f11285aee5c1ce06cf160d9784a5ba98c27c6add GIT binary patch literal 20427 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ϝ(g`JOBYYt|bE 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, 2016 +# David , 2015 +# Jason Gass Martinez , 2016 +# Luis Zárate , 2019 +# Manuel E. Gutierrez , 2013,2015 +# Manuel E. Gutierrez , 2013 +# Pablo, 2015 +# Pablo, 2015 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Biel Frontera, 2023\n" +"Language-Team: Spanish (http://app.transifex.com/divio/django-filer/language/" +"es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "No tienes autorización para subir ficheros. " + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" +"No se ha encontrado la carpeta donde guardar el fichero. Por favor, refresca " +"la página y vuelve a probar." + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" +"No se puede utilizar esta carpeta: permiso denegado. Por favor, selecciona " +"otra carpeta." + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Avanzado" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "URL canónica" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Los elementos deben estar seleccionados para efectuar acciones sobre ellos. " +"Ningún elemento ha sido modificado." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] " %(total_count)s seleccionado" +msgstr[1] "Todos los %(total_count)s seleccionados" +msgstr[2] "Todos los %(total_count)s seleccionados" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Listado de directorio para %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 de %(cnt)s seleccionados" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Ninguna acción seleccionada." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d archivos movidos con éxito al clipboard." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Mover archivos selecionados al clipboard." + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Permisos para %(count)d ficheros deshabilitados con éxito." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Permisos para %(count)d ficheros habilitados con éxito." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Habilitar permisos para los archivos seleccionados." + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Deshabilitar permisos para los archivos seleccionados." + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Eliminados %(count)d ficheros y/o directorios con éxito." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "No es posible eliminar ficheros y/o directorios" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "¿Estás seguro?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Eliminar ficheros y/o directorios" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Eliminar ficheros y/o directorios seleccionados" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Las carpetas con los nombres %s ya existen en el destino seleccionado" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Movidos con éxito %(count)d ficheros y/o directorios al directorio " +"'%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Mover ficheros y/o directorios" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Mover ficheros y/o directorios seleccionados" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Cambiado el nombre de %(count)d archivos con éxito." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Cambiar el nombre de los archivos" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Copiados con éxito %(count)d ficheros y/o directorios al directorio " +"'%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Copiar ficheros y/o directorios" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Copiar ficheros y/o directorios seleccionados" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Cambiado correctamente el tamaño de %(count)d imágenes." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Cambiar el tamaño de imágenes." + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Cambiar el tamaño de imágenes seleccionadas." + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" +"Sufijo que se añadirá al nombre de los archivos de los archivos copiados." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"El sufijo debe ser una parte válida de un nombre de fichero, simple y en " +"minúsculas, como \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" +"Formato de cambio de nombre con valor de clave \"%(key)s\" desconocido." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Formato de cambio de nombre no válido: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "opción de miniatura" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "ancho" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "alto" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "recortar" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "ampliar" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" +"Se debe elegir una opción de miniatura o unos parámetros para el cambio de " +"tamaño." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Localización del sujeto." + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Ubicación del tema principal en la escena. Formato \"x,y\"" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Formato de la ubicación del tema inválido" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "La ubicación del tema está fuera de la imagen" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Tu entrada: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "Quién" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "Qué" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Ya existe un directorio con este nombre." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Biblioteca multimedia" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "texto alternativo por defecto" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "leyenda por defecto" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "localización del sujeto" + +#: models/abstract.py:91 +msgid "image" +msgstr "imagen" + +#: models/abstract.py:92 +msgid "images" +msgstr "imágenes" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "usuario" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "archivos" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "portapapeles" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "portapapeles" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "archivo" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "elemento del portapapeles" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "elementos del portapapeles" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "carpeta" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "tamaño del archivo" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "tiene todos los datos obligatorios" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "nombre del archivo original" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "nombre" + +#: models/filemodels.py:116 +msgid "description" +msgstr "descripción" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "propietario" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "subido a" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "modificado el" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Permisos desactivados" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Desactiva cualquier comprobación de permiso para este archivo. El archivo " +"será accesible públicamente para todos." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "Padre" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "creado el" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Carpeta" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Carpetas" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "todos los elementos" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "sólo este elemento" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "este elemento y todos los hijos" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "hereda" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "permitir" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "denegar" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tipo" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "grupo" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "todos" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "puede leer" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "puede editar" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "puede añadir hijos" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "permiso de la carpeta" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "permisos de la carpeta" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" +"La carpeta no se puede seleccionar con el tipo \"todos los elementos\"." + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" +"La carpeta se tiene que seleccionar cuando el tipo no es \"todos los " +"elementos\"." + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "Usuario y grupo no se pueden seleccionar a la vez con \"todos\"." + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "Al menos se debe seleccionar un usuario, un grupo o \"todos\"." + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "Todas las carpetas" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "Path lógico" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "Usuario: {user}" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "Grupo: {group}" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "Todos" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "Editar" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "Leer" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "Añadir hijos" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "fecha" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "siempre debes dar crédito al autor" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "siempre debes publicar los derechos de autor" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "Ancho en pixel." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "Alto en pixel." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "Opciones de miniatura" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Subidas desordenadas" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "archivos con metadatos perdidos" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "raíz" + +#: settings.py:273 +msgid "Show table view" +msgstr "Muestra la vista de tabla" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "Muestra la vista de miniaturas" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Ejecutar la acción seleccionada" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Continuar" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" +"Haz clic aquí para seleccionar los objetos a través de todas las páginas" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Seleccionar los %(total_count)s archivos y/o carpetas" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Limpiar la selección" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Volver a la página de inicio de admin" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Inicio" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Volver a la app Filer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Volver a la carpeta raíz" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Volver a la carpeta '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicados" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Borrar los archivos y/o carpetas seleccionados borraría los objetos " +"seleccionados, pero tu cuenta no tiene permiso para borrar los siguientes " +"tipos de objetos:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Borrar los archivos y/o carpetas requeriría borrar los siguientes objetos " +"relacionados protegidos:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"¿Estás seguro de que quieres borrar los archivos y/o carpetas seleccionados? " +"Los siguientes objetos y sus elementos relacionados serán borrados:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "No, ir atrás" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Sí, estoy seguro" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Histórico" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Ver en la página" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Volver a" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "página de inicio de la administración" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Icono de la Carpeta" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Tu cuenta no tiene permisos para copiar todos los archivos y/o carpetas " +"seleccionados." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Volver atrás" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "No hay carpetas de destino disponibles." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "No hay archivos y/o carpetas disponibles para copiar." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Los siguientes archivos y/o carpetas serán copiados a una carpeta de destino " +"(manteniendo su estructura en árbol):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Carpeta de destino:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Copiar" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "No está permitido copiar los archivos dentro de la misma carpeta" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"Tu cuenta no tiene permisos para cambiar el tamaño de todas las imágenes " +"seleccionadas." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "No hay imágenes disponibles a las que cambiarles el tamaño." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Se les cambiará el tamaño a las siguientes imágenes:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Elige una opción de miniatura existente o introduce parámetros para el " +"cambio de tamaño:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Aviso: se cambiará el tamaño de las imágenes en el mismo sitio y los " +"originales se perderán. Considera realizar una copia de aquellas para " +"conservar los originales." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Cambiar de tamaño" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Tu cuenta no tiene permisos para mover todos los archivos y/o carpetas " +"seleccionados." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "No hay archivos y/o carpetas disponibles para mover." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Los siguientes archivos y/o directorios serán movidos a una carpeta de " +"destino (manteniendo su estructura de árbol):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Mover" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "No está permitido mover los archivos dentro de la misma carpeta" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" +"Tu cuenta no tiene permisos para renombrar todos los objetos seleccionados." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "No hay archivos disponibles a los que cambiar el nombre." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Los siguientes archivos serán renombrados (se quedarán en sus carpetas y " +"mantendrán su nombre original, solo los nombres mostrados serán cambiados):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Cambiar el nombre" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Volver a la carpeta padre" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Cambiar los detalles de la carpeta actual" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Cambiar" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Haz clic para correr la búsqueda del texto ingresado" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Buscar" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Cerrar" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limite" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Comprueba el límite de búsqueda en la carpeta actual" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Limitar busqueda a la carpeta actual" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Borrar" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Añade una nueva Carpeta" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Carpeta Nueva" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Subir archivos." + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Tiene que seleccionar primero una carpeta" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Nombre" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Propietario" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Tamaño" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Acción" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Cambiar los detalles de la carpeta '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s carpeta" +msgstr[1] "%(counter)s carpetas" +msgstr[2] "%(counter)s carpetas" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s archivo" +msgstr[1] "%(counter)s archivos" +msgstr[2] "%(counter)s archivos" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Cambiar los detalles de la carpeta" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Eliminar carpeta" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Seleccionar este archivo" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Cambiar los detalles de '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Permisos" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "desactivado" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "activado" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Mover archivos selecionados al clipboard." + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "Url canónica '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Descargar '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Eliminar archivo" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Suelta los archivos aquí o usa el botón \"Subir archivos\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Suelta el archivo a subir dentro:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Subir" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "cancelar" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Subida exitosa!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Subida cancelada!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "anterior" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Página %(number)s de %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "siguiente" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Seleccionar todo %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "Selecciona todas" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "Ficheros" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Añadir nuevo" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Sitio administrativo de Django" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Por favor, corrige el error indicado abajo." +msgstr[1] "Por favor, corrige los errores indicados abajo." +msgstr[2] "Por favor, corrige los errores indicados abajo." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Guardar" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "El navegador no soporta audio." + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "El navegador no soporta vídeo." + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Portapapeles" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Pegar aquí todos los elementos" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Mover todos los archivos del portapapeles a" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Portapapeles vacío" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "el portapapeles está vacío" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "fallo en la subida" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "Descarga" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "Expande" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "Fichero no encontrado" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tipo" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Tamaño del archivo" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modificado" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Creado" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "encontrado" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "y" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "cancelar la búsqueda" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Limpiar" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "o suelta aquí tu archivo" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "ningún archivo seleccionado" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Buscar" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Selecciona el archivo" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "Escoge una carpeta" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" +"Fichero \"{file_name}\": carga denegada por políticas de seguridad del sitio " +"web" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" +"Fichero \"{file_name}\": carga del tipo {file_type} denegada por políticas " +"de seguridad del sitio web" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" +"Fichero \"{file_name}\": carga de HTML denegada por políticas de seguridad " +"del sitio web" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" +"Fichero \"{file_name}\": rechazado por posible vulnerabilidad XSS (Cross-" +"site scripting)" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/et/LC_MESSAGES/django.mo b/filer/locale/et/LC_MESSAGES/django.mo index 982b54f44df7a47882b40525cabfad812d0d56e1..6f688e0c099224139a935521e87e2e96d92f75de 100644 GIT binary patch literal 5456 zcmZ{mYm8l06~{NWii}02f{23b(&xb3d9*yrlv?_j(lVWPXr~1fTld_v=iW2-+;gty zG3_X*2~neg7$PJ@iN=UAAs9Xo_+n#BhQyG7UkD@yLe%&OF%W_YejpNm|8vefYT@Lr z^V_ep_S$Q$z4v{6?dnGiPlQ~F+`GycHN5sQUOdAW8FLLBft%nIybyj9UIOoj7sE%O zKKUj51bhO16g~?-1hH@C)#5xB;%|Gv*370{NM7Ueb30 zGQ`Y4&C`SWehzB>`=Ipx0Dc5M1o@eVd3_fC9BRGKLXCR~%AQx@$Kjvr`WrRhg8a?5L3)kQ2Kuh<>%+1^t}Kz{*}7^DwKVHhqCKmQ0sUH zu7#^HM*Wx9yb5aEdMH0#Tet71+jm3Fe*kKpshW2~jXw#M2MN?X--FWsD3rZFgZl2* zP~)D2ipv6&A6|#j^Cr}|_aQ&CicZaY3DkP8g6iK0rTNVl8{r?I^t=gW$GfofJ4qs50%iZzb^Us%@q3`=8HbAFWZmC^ z(m!AGJ5cNRKGZq%V<`VT1vTIEQ0sdIDlY%5+y4Wle>FzyytxR39vKC73RZ#Zy zLw&!s?%xBYcLK5`a}sKN56ZrKYu;b;hfw}{2x|OKp}zkO)V#lgvgbJ{J<45eoPY8~6^_FJIr*$w62aj1PW1Ev2ysP7(x z()%!!zQ-U_n_ocX%QH~xcnNCWzd?QXE>t}J3zhFzTvpA$rRE5f-J?+R-3r-WrituD zlvAe=J-1abmqU%!b3+9)3KefX*CX1Si_akn1IPhHw&)o_%%MBRlEh!eXOU2C>ORN$_?d#Lv|tSkXsQwhdByh3k+F$UVqi$Ok>Q)2O^O8@Du*BF=rV=e8tK;L{Ii%FON{ zu(3ZaX4a`__gABLr{2ydh0Ti8?=pMaE^c{{B$>DSHRs;QyR>@S%tyYNhe=F5>`f;w z4Ja|x>`i*}W^d|U?gO)rVY#nSTF#_#FqEWrrkpif?5h;|;6nx_r{gGbf!(}uOPKra zsmM+Hs6X3m_7%M-Y%*D9#=5_8oc&YP1nB_@2Zw@3~Zzhr;oC#U~L^9{iVMo*9Wk(-QtSfz2 zd(j7j=5R7#bJy{<>q|4tk<&3IPr8=38@I$oce;#yGE>z~_2|g@vq3ZI({7k$L?Sas zeV6&F1X(Osu|4Wz8Bw8fF_qFc#~daeBeKmlP*kmpBBsfc+(oC#yz9>vyYhBeXW%h8 zc51%o&GDW>Q^Pi0+(b>VZm}UNnoXZ&>&%G|A0)BOh@iRKX9M=&ruExy-q9^n&bXi( z#A$g+gpm( z`7Ih-u*g=L6g|`SVXK|jusEg{p7GJ33A=Jm`OZwY&NG=?1~~R-C?#ctm$J*S+X5D& z-Oav}fo-39n!{EYyQpj`KWCSbbiLHig-MZ_tnEgOQhkNPGV8U?XeJR9AMNKdW18(S z3fK}Wx{^53NU}F}VPuoag}IW3ZL9q}Lp#o_YV3X%QuMN>B8H#J7K*^wJYZy3IAn5XZM%ksul>f$VN?CMc_d%|&OPlREbbO!in>sH3Z zt%6uIro8Kp+A+3&95QH2JI{NgLqo3D8_cC5obhJ{n@M*l2yyFBWoJWSNQa_Y$&k;7 z`j=FWTA%k#9Gn9``x&u?+&5ZlHU&yU}xRX9ADPc zFAXb|=0%l}A295Y^U8AfAvaLRxgZRdjkVFTb^GyK$Qf6ptbf1aZpKSLm2YRmPQq1G zRk$+3m{!M$3MsGl0SFPx~OOscq1qx&k-VrdRB((!3AOn zg(*LzkeRuK$D>(C`kp2JPHB_z_rkAiD3@VMf0iMtGrJ0xsRCN1s%2hcU$qh5vZl3r zrSv$~5}94mWg7amVr3X~yEW%ib{pOd;Qg>4=s z)tRAw?&T1NM=b(ejxTj3RWjpr z)`PG+3rpLp#ioslmG%!~$Il~U9 zBQL!)F+Ei`BsDSDO2M_bBtI_`s6!*8Wb%DJR+;kha=j9efthKk6?)0}x%ve~`B|yS bCB^y$lYjHcOjhBK;)WSwrI0$ghF=c=%Xvs< diff --git a/filer/locale/et/LC_MESSAGES/django.po b/filer/locale/et/LC_MESSAGES/django.po index ba48e6a20..44b47474a 100644 --- a/filer/locale/et/LC_MESSAGES/django.po +++ b/filer/locale/et/LC_MESSAGES/django.po @@ -3,483 +3,623 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Translators: +# Translators: +# Johan Viirok, 2022 +# Martin , 2016 +# Rivo Zängov , 2013 msgid "" msgstr "" -"Project-Id-Version: django-filer\n" +"Project-Id-Version: django Filer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 19:10+0200\n" -"PO-Revision-Date: 2012-09-03 20:11+0100\n" -"Last-Translator: Stefan Foulis \n" -"Language-Team: Estonian (http://www.transifex.com/projects/p/django-filer/" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Johan Viirok, 2022\n" +"Language-Team: Estonian (http://app.transifex.com/divio/django-filer/" "language/et/)\n" +"Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: views.py:103 -msgid "Folder with this name already exists." +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." msgstr "" -#: admin/fileadmin.py:41 +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 msgid "Advanced" msgstr "" -#: admin/folderadmin.py:324 admin/folderadmin.py:427 +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" -#: admin/folderadmin.py:344 +#: admin/folderadmin.py:434 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "" msgstr[1] "" -#: admin/folderadmin.py:377 +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 #, python-format msgid "0 of %(cnt)s selected" msgstr "" -#: admin/folderadmin.py:456 +#: admin/folderadmin.py:612 msgid "No action selected." -msgstr "" +msgstr "Ühtegi tegevust pole valitud." -#: admin/folderadmin.py:497 +#: admin/folderadmin.py:664 #, python-format msgid "Successfully moved %(count)d files to clipboard." msgstr "" -#: admin/folderadmin.py:503 +#: admin/folderadmin.py:669 msgid "Move selected files to clipboard" msgstr "" -#: admin/folderadmin.py:537 +#: admin/folderadmin.py:709 #, python-format msgid "Successfully disabled permissions for %(count)d files." msgstr "" -#: admin/folderadmin.py:541 +#: admin/folderadmin.py:711 #, python-format msgid "Successfully enabled permissions for %(count)d files." msgstr "" -#: admin/folderadmin.py:550 +#: admin/folderadmin.py:719 msgid "Enable permissions for selected files" msgstr "" -#: admin/folderadmin.py:555 +#: admin/folderadmin.py:725 msgid "Disable permissions for selected files" msgstr "" -#: admin/folderadmin.py:623 +#: admin/folderadmin.py:789 #, python-format msgid "Successfully deleted %(count)d files and/or folders." msgstr "" -#: admin/folderadmin.py:630 +#: admin/folderadmin.py:794 msgid "Cannot delete files and/or folders" msgstr "" -#: admin/folderadmin.py:632 +#: admin/folderadmin.py:796 msgid "Are you sure?" -msgstr "" +msgstr "Oled sa kindel?" -#: admin/folderadmin.py:637 +#: admin/folderadmin.py:802 msgid "Delete files and/or folders" -msgstr "" +msgstr "Kustuta failid ja/või kaustad" -#: admin/folderadmin.py:656 +#: admin/folderadmin.py:823 msgid "Delete selected files and/or folders" +msgstr "Kustuta valitud failid ja/või kaustad" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" msgstr "" -#: admin/folderadmin.py:771 +#: admin/folderadmin.py:934 #, python-format msgid "" "Successfully moved %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" -#: admin/folderadmin.py:778 admin/folderadmin.py:780 +#: admin/folderadmin.py:942 admin/folderadmin.py:944 msgid "Move files and/or folders" msgstr "" -#: admin/folderadmin.py:797 +#: admin/folderadmin.py:959 msgid "Move selected files and/or folders" msgstr "" -#: admin/folderadmin.py:854 +#: admin/folderadmin.py:1016 #, python-format msgid "Successfully renamed %(count)d files." msgstr "" -#: admin/folderadmin.py:862 admin/folderadmin.py:864 admin/folderadmin.py:881 +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 msgid "Rename files" -msgstr "" +msgstr "Nimeta failid ümber" -#: admin/folderadmin.py:975 +#: admin/folderadmin.py:1137 #, python-format msgid "" "Successfully copied %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" -#: admin/folderadmin.py:989 admin/folderadmin.py:991 +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 msgid "Copy files and/or folders" msgstr "" -#: admin/folderadmin.py:1010 +#: admin/folderadmin.py:1174 msgid "Copy selected files and/or folders" msgstr "" -#: admin/folderadmin.py:1105 +#: admin/folderadmin.py:1279 #, python-format msgid "Successfully resized %(count)d images." msgstr "" -#: admin/folderadmin.py:1113 admin/folderadmin.py:1115 +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 msgid "Resize images" msgstr "" -#: admin/folderadmin.py:1133 +#: admin/folderadmin.py:1303 msgid "Resize selected images" msgstr "" -#: admin/forms.py:26 +#: admin/forms.py:24 msgid "Suffix which will be appended to filenames of copied files." msgstr "" -#: admin/forms.py:33 +#: admin/forms.py:31 #, python-format msgid "" "Suffix should be a valid, simple and lowercase filename part, like " "\"%(valid)s\"." msgstr "" -#: admin/forms.py:54 +#: admin/forms.py:52 #, python-format msgid "Unknown rename format value key \"%(key)s\"." msgstr "" -#: admin/forms.py:56 +#: admin/forms.py:54 #, python-format msgid "Invalid rename format: %(error)s." msgstr "" -#: admin/forms.py:62 +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 msgid "thumbnail option" -msgstr "" +msgstr "pisipildi valikud" -#: admin/forms.py:63 +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 msgid "width" -msgstr "" +msgstr "laius" -#: admin/forms.py:64 +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 msgid "height" -msgstr "" +msgstr "kõrgus" -#: admin/forms.py:65 +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 msgid "crop" -msgstr "" +msgstr "lõika" -#: admin/forms.py:66 +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 msgid "upscale" -msgstr "" +msgstr "suurenda" -#: admin/forms.py:71 +#: admin/forms.py:79 msgid "Thumbnail option or resize parameters must be choosen." msgstr "" -#: admin/forms.py:73 -msgid "Resize parameters must be choosen." +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" msgstr "" -#: admin/imageadmin.py:12 -msgid "Subject location" +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." msgstr "" -#: admin/imageadmin.py:13 -msgid "Location of the main subject of the scene." +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " msgstr "" -#: models/clipboardmodels.py:9 models/foldermodels.py:236 -msgid "user" +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " msgstr "" -#: models/clipboardmodels.py:11 models/filemodels.py:287 -msgid "files" +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " msgstr "" -#: models/clipboardmodels.py:34 models/clipboardmodels.py:40 -msgid "clipboard" +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" msgstr "" -#: models/clipboardmodels.py:35 -msgid "clipboards" +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" msgstr "" -#: models/clipboardmodels.py:39 models/filemodels.py:35 -#: models/filemodels.py:286 -msgid "file" +#: admin/views.py:55 +msgid "Folder with this name already exists." msgstr "" -#: models/clipboardmodels.py:44 -msgid "clipboard item" +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" msgstr "" -#: models/clipboardmodels.py:45 -msgid "clipboard items" +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "pilt" + +#: models/abstract.py:92 +msgid "images" +msgstr "pildid" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." msgstr "" -#: models/filemodels.py:33 templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "kasutaja" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "failid" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "lõikalaud" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "lõikelauad" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "fail" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "lõikelaua kirje" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "lõikelaua kirjed" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 #: templates/admin/filer/folder/new_folder_form.html:4 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 msgid "folder" -msgstr "" +msgstr "kaust" -#: models/filemodels.py:36 +#: models/filemodels.py:81 msgid "file size" -msgstr "" +msgstr "failisuurus" -#: models/filemodels.py:38 +#: models/filemodels.py:87 msgid "sha1" -msgstr "" +msgstr "sha1" -#: models/filemodels.py:40 +#: models/filemodels.py:94 msgid "has all mandatory data" msgstr "" -#: models/filemodels.py:42 +#: models/filemodels.py:100 msgid "original filename" -msgstr "" +msgstr "algne failinimi" -#: models/filemodels.py:44 models/foldermodels.py:99 +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 msgid "name" -msgstr "" +msgstr "nimi" -#: models/filemodels.py:46 +#: models/filemodels.py:116 msgid "description" -msgstr "" +msgstr "kirjeldus" -#: models/filemodels.py:50 +#: models/filemodels.py:125 models/foldermodels.py:108 msgid "owner" -msgstr "" +msgstr "omanik" -#: models/filemodels.py:52 models/foldermodels.py:105 +#: models/filemodels.py:129 models/foldermodels.py:116 msgid "uploaded at" -msgstr "" +msgstr "üles laaditud" -#: models/filemodels.py:53 models/foldermodels.py:108 +#: models/filemodels.py:134 models/foldermodels.py:126 msgid "modified at" -msgstr "" +msgstr "muudetud" -#: models/filemodels.py:57 +#: models/filemodels.py:140 msgid "Permissions disabled" msgstr "" -#: models/filemodels.py:58 -msgid "Disable any permission checking for this " +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" msgstr "" -#: models/foldermodels.py:107 +#: models/foldermodels.py:121 msgid "created at" -msgstr "" +msgstr "loodud" -#: models/foldermodels.py:211 -#: templates/admin/filer/widgets/admin_folder.html:3 -#: templates/admin/filer/widgets/admin_folder.html:5 +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Folder" -msgstr "" +msgstr "Kaust" -#: models/foldermodels.py:212 +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 msgid "Folders" -msgstr "" +msgstr "Kaustad" -#: models/foldermodels.py:227 +#: models/foldermodels.py:260 msgid "all items" -msgstr "" +msgstr "kõik kirjed" -#: models/foldermodels.py:228 +#: models/foldermodels.py:261 msgid "this item only" -msgstr "" +msgstr "ainult see kirje" -#: models/foldermodels.py:229 +#: models/foldermodels.py:262 msgid "this item and all children" +msgstr "see kirje ja kõik alamkirjed" + +#: models/foldermodels.py:266 +msgid "inherit" msgstr "" -#: models/foldermodels.py:233 +#: models/foldermodels.py:267 +msgid "allow" +msgstr "luba" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "keeldu" + +#: models/foldermodels.py:280 msgid "type" -msgstr "" +msgstr "tüüp" -#: models/foldermodels.py:239 +#: models/foldermodels.py:297 msgid "group" -msgstr "" +msgstr "grupp" -#: models/foldermodels.py:240 +#: models/foldermodels.py:304 msgid "everybody" -msgstr "" +msgstr "kõik" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "saab lugeda" -#: models/foldermodels.py:242 +#: models/foldermodels.py:317 msgid "can edit" +msgstr "saab mutua" + +#: models/foldermodels.py:325 +msgid "can add children" msgstr "" -#: models/foldermodels.py:243 -msgid "can read" +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "kausta õigus" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "kausta õigused" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." msgstr "" -#: models/foldermodels.py:244 -msgid "can add children" +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." msgstr "" -#: models/foldermodels.py:273 -msgid "folder permission" +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." msgstr "" -#: models/foldermodels.py:274 -msgid "folder permissions" +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." msgstr "" -#: models/imagemodels.py:39 -msgid "date taken" +#: models/foldermodels.py:360 +msgid "All Folders" msgstr "" -#: models/imagemodels.py:42 -msgid "default alt text" +#: models/foldermodels.py:362 +msgid "Logical Path" msgstr "" -#: models/imagemodels.py:43 -msgid "default caption" +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" msgstr "" -#: models/imagemodels.py:45 templates/image_filer/image.html:6 -msgid "author" +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" msgstr "" -#: models/imagemodels.py:47 -msgid "must always publish author credit" +#: models/foldermodels.py:375 +msgid "Everybody" msgstr "" -#: models/imagemodels.py:48 -msgid "must always publish copyright" +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" msgstr "" -#: models/imagemodels.py:50 -msgid "subject location" +#: models/foldermodels.py:389 +msgid "Read" msgstr "" -#: models/imagemodels.py:200 -msgid "image" +#: models/foldermodels.py:390 +msgid "Add children" msgstr "" -#: models/imagemodels.py:201 -msgid "images" +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" msgstr "" -#: models/virtualitems.py:45 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "unfiled files" +#: models/imagemodels.py:37 +msgid "must always publish copyright" msgstr "" -#: models/virtualitems.py:59 +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "laius pikslites" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "kõrgus pikslites" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 msgid "files with missing metadata" msgstr "" -#: models/virtualitems.py:73 templates/admin/filer/breadcrumbs.html:6 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:10 +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 msgid "root" msgstr "" -#: templates/admin/filer/actions.html:4 +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 msgid "Run the selected action" msgstr "" -#: templates/admin/filer/actions.html:4 +#: templates/admin/filer/actions.html:5 msgid "Go" -msgstr "" +msgstr "Mine" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 msgid "Click here to select the objects across all pages" msgstr "" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 #, python-format msgid "Select all %(total_count)s files and/or folders" msgstr "" -#: templates/admin/filer/actions.html:13 +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 msgid "Clear selection" -msgstr "" +msgstr "Tühista valik" #: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 msgid "Go back to admin homepage" msgstr "" #: templates/admin/filer/breadcrumbs.html:4 -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 msgid "Home" -msgstr "" +msgstr "Koduleht" #: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 msgid "Go back to Filer app" msgstr "" -#: templates/admin/filer/breadcrumbs.html:5 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/image_filer/image_export_form.html:8 -msgid "Filer" -msgstr "" - #: templates/admin/filer/breadcrumbs.html:6 -#: templates/image_filer/image_export_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Go back to root folder" -msgstr "" +msgstr "Tagasi peakausta" #: templates/admin/filer/breadcrumbs.html:8 -#: templates/admin/filer/breadcrumbs.html:11 -#: templates/admin/filer/folder/change_form.html:11 -#: templates/image_filer/image_export_form.html:12 -#: templates/image_filer/image_export_form.html:14 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 #, python-format msgid "Go back to '%(folder_name)s' folder" msgstr "" -#: templates/admin/filer/change_form.html:28 -msgid "duplicates" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:13 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:21 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " -"following protected related objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:29 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:34 -#: templates/admin/filer/delete_selected_files_confirmation.html:45 -msgid "Yes, I'm sure" -msgstr "" +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplikaadid" #: templates/admin/filer/delete_selected_files_confirmation.html:11 msgid "" @@ -500,386 +640,588 @@ msgid "" "the following objects and their related items will be deleted:" msgstr "" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:7 -#: templates/image_filer/image_export_form.html:8 -#: templates/image_filer/image_export_form.html:16 -msgid "Go back to" -msgstr "" +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Ei, vii mind tagasi" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 -msgid "admin homepage" -msgstr "" +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Jah, olen kindel" -#: templates/admin/filer/folder/change_form.html:22 -#: templates/admin/filer/image/change_form.html:9 +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 msgid "History" -msgstr "" +msgstr "Ajalugu" +#: templates/admin/filer/file/change_form.html:37 #: templates/admin/filer/folder/change_form.html:23 -#: templates/admin/filer/image/change_form.html:10 +#: templates/admin/filer/image/change_form.html:37 msgid "View on site" -msgstr "" +msgstr "Vaata saidil" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Mine tagasi" -#: templates/admin/filer/folder/change_form.html:35 -#: templates/admin/filer/folder/directory_listing.html:75 -#: templates/admin/filer/folder/directory_listing.html:85 -#: templates/admin/filer/folder/directory_table.html:23 +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "admini koduleht" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 msgid "Folder Icon" -msgstr "" +msgstr "Kausta ikoon" -#: templates/admin/filer/folder/choose_copy_destination.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:23 msgid "" "Your account doesn't have permissions to copy all of the selected files and/" "or folders." msgstr "" -#: templates/admin/filer/folder/choose_copy_destination.html:15 -#: templates/admin/filer/folder/choose_move_destination.html:15 +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 msgid "There are no destination folders available." msgstr "" -#: templates/admin/filer/folder/choose_copy_destination.html:18 +#: templates/admin/filer/folder/choose_copy_destination.html:35 msgid "There are no files and/or folders available to copy." msgstr "" -#: templates/admin/filer/folder/choose_copy_destination.html:20 +#: templates/admin/filer/folder/choose_copy_destination.html:40 msgid "" "The following files and/or folders will be copied to a destination folder " "(retaining their tree structure):" msgstr "" -#: templates/admin/filer/folder/choose_copy_destination.html:32 -#: templates/admin/filer/folder/choose_move_destination.html:32 +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 msgid "Destination folder:" msgstr "" -#: templates/admin/filer/folder/choose_copy_destination.html:39 +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 msgid "Copy" +msgstr "Kopeeri" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" msgstr "" -#: templates/admin/filer/folder/choose_images_resize_options.html:12 +#: templates/admin/filer/folder/choose_images_resize_options.html:15 msgid "" "Your account doesn't have permissions to resize all of the selected images." msgstr "" -#: templates/admin/filer/folder/choose_images_resize_options.html:15 +#: templates/admin/filer/folder/choose_images_resize_options.html:18 msgid "There are no images available to resize." msgstr "" -#: templates/admin/filer/folder/choose_images_resize_options.html:17 +#: templates/admin/filer/folder/choose_images_resize_options.html:20 msgid "The following images will be resized:" msgstr "" -#: templates/admin/filer/folder/choose_images_resize_options.html:30 -msgid "Choose an existing thumbnail option or enter resize parameters:" -msgstr "" - #: templates/admin/filer/folder/choose_images_resize_options.html:32 -msgid "Choose resize parameters:" +msgid "Choose an existing thumbnail option or enter resize parameters:" msgstr "" -#: templates/admin/filer/folder/choose_images_resize_options.html:35 +#: templates/admin/filer/folder/choose_images_resize_options.html:36 msgid "" "Warning: Images will be resized in-place and originals will be lost. Maybe " "first make a copy of them to retain the originals." msgstr "" -#: templates/admin/filer/folder/choose_images_resize_options.html:36 +#: templates/admin/filer/folder/choose_images_resize_options.html:39 msgid "Resize" -msgstr "" +msgstr "Muuda suurust" -#: templates/admin/filer/folder/choose_move_destination.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:35 msgid "" "Your account doesn't have permissions to move all of the selected files and/" "or folders." msgstr "" -#: templates/admin/filer/folder/choose_move_destination.html:18 +#: templates/admin/filer/folder/choose_move_destination.html:47 msgid "There are no files and/or folders available to move." msgstr "" -#: templates/admin/filer/folder/choose_move_destination.html:20 +#: templates/admin/filer/folder/choose_move_destination.html:52 msgid "" "The following files and/or folders will be moved to a destination folder " "(retaining their tree structure):" msgstr "" -#: templates/admin/filer/folder/choose_move_destination.html:38 +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 msgid "Move" +msgstr "Liiguta" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" msgstr "" -#: templates/admin/filer/folder/choose_rename_format.html:12 +#: templates/admin/filer/folder/choose_rename_format.html:15 msgid "" "Your account doesn't have permissions to rename all of the selected files." msgstr "" -#: templates/admin/filer/folder/choose_rename_format.html:15 +#: templates/admin/filer/folder/choose_rename_format.html:18 msgid "There are no files available to rename." msgstr "" -#: templates/admin/filer/folder/choose_rename_format.html:17 +#: templates/admin/filer/folder/choose_rename_format.html:20 msgid "" "The following files will be renamed (they will stay in their folders and " "keep original filename, only displayed filename will be changed):" msgstr "" -#: templates/admin/filer/folder/choose_rename_format.html:54 +#: templates/admin/filer/folder/choose_rename_format.html:59 msgid "Rename" -msgstr "" +msgstr "Nimeta ümber" -#: templates/admin/filer/folder/directory_listing.html:66 -msgid "Adds a new Folder" +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Mine tagasi peamisesse kausta" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" msgstr "" -#: templates/admin/filer/folder/directory_listing.html:66 -#: templates/image_filer/include/export_dialog.html:34 -msgid "New Folder" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Muuda" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" msgstr "" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "upload files" +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Otsi" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Sulge" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" msgstr "" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "Upload" +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" msgstr "" -#: templates/admin/filer/folder/directory_listing.html:74 -msgid "Go back to the parent folder" +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" msgstr "" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:18 -#, python-format -msgid "1 folder" -msgid_plural "%(counter)s folders" -msgstr[0] "" -msgstr[1] "" +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Kustuta" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:19 -#, python-format -msgid "1 file" -msgid_plural "%(counter)s files" -msgstr[0] "" -msgstr[1] "" +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Lisab uue kausta" -#: templates/admin/filer/folder/directory_listing.html:80 -msgid "Change current folder details" +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Uus kaust" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" msgstr "" -#: templates/admin/filer/folder/directory_listing.html:80 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:43 -msgid "Change" +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" msgstr "" -#: templates/admin/filer/folder/directory_table.html:13 +#: templates/admin/filer/folder/directory_table_list.html:16 msgid "Name" +msgstr "Nimi" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Omanik" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Suurus" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" msgstr "" -#: templates/admin/filer/folder/directory_table.html:23 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:29 +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 #, python-format msgid "Change '%(item_label)s' folder details" msgstr "" -#: templates/admin/filer/folder/directory_table.html:30 -#: templates/admin/filer/folder/directory_table.html:45 -msgid "Owner" +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s kaust" +msgstr[1] "%(counter)s kausta" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s fail" +msgstr[1] "%(counter)s faili" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" msgstr "" -#: templates/admin/filer/folder/directory_table.html:37 +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Eemalda kaust" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 msgid "Select this file" -msgstr "" +msgstr "Vali see fail" -#: templates/admin/filer/folder/directory_table.html:39 -#: templates/admin/filer/folder/directory_table.html:43 -#: templates/admin/filer/folder/directory_table.html:44 +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 #, python-format msgid "Change '%(item_label)s' details" msgstr "" -#: templates/admin/filer/folder/directory_table.html:42 -#, python-format -msgid "Delete '%(item_label)s'" -msgstr "" - -#: templates/admin/filer/folder/directory_table.html:42 -msgid "Delete" -msgstr "" - -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "Permissions" -msgstr "" +msgstr "Õigused" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "disabled" -msgstr "" +msgstr "välja lülitatud" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "enabled" +msgstr "sisse lülitatud" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" msgstr "" -#: templates/admin/filer/folder/directory_table.html:50 -msgid "Move to clipboard" +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Lae alla '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Eemalda fail" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" msgstr "" -#: templates/admin/filer/folder/directory_table.html:58 -msgid "there are no files or subfolders" +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" msgstr "" -#: templates/admin/filer/folder/directory_table.html:65 +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Laadi üles" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "tühista" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Üleslaadimine õnnestus!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Üleslaadimine tühistatud!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 msgid "previous" -msgstr "" +msgstr "eelmine" -#: templates/admin/filer/folder/directory_table.html:69 +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 #, python-format -msgid "" -"\n" -" Page %(number)s of %(num_pages)s.\n" -" " -msgstr "" +msgid "Page %(number)s of %(num_pages)s." +msgstr "Lehekülg %(number)s / %(num_pages)s." -#: templates/admin/filer/folder/directory_table.html:75 +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 msgid "next" +msgstr "järgmine" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Vali kõik %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" msgstr "" #: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 msgid "Add new" +msgstr "Lisa uus" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" msgstr "" -#: templates/admin/filer/folder/new_folder_form.html:13 +#: templates/admin/filer/folder/new_folder_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "" msgstr[1] "" -#: templates/admin/filer/folder/new_folder_form.html:28 +#: templates/admin/filer/folder/new_folder_form.html:30 msgid "Save" -msgstr "" +msgstr "Salvesta" -#: templates/admin/filer/image/change_form.html:21 -msgid "Full size preview" +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." msgstr "" -#: templates/admin/filer/tools/search_form.html:8 -#: templates/admin/filer/tools/search_form.html:14 -msgid "Search" +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." msgstr "" -#: templates/admin/filer/tools/search_form.html:13 -msgid "Enter your search phrase here" +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Lõikelaud" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" msgstr "" -#: templates/admin/filer/tools/search_form.html:14 -msgid "Click here to" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" msgstr "" -#: templates/admin/filer/tools/search_form.html:14 -msgid "run search for entered phrase" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Tühjenda lõikelaud" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "lõikelaud on tühi" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "üleslaadimine ebaõnnestus" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" msgstr "" -#: templates/admin/filer/tools/search_form.html:15 -msgid "Check it to" +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" msgstr "" -#: templates/admin/filer/tools/search_form.html:15 -#: templates/admin/filer/tools/search_form.html:16 -msgid "limit the search to current folder" +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" msgstr "" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tüüp" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Faili suurus" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Muudetud" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Loodud" + +#: templates/admin/filer/tools/search_form.html:5 msgid "found" -msgstr "" +msgstr "leitud" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/search_form.html:5 msgid "and" -msgstr "" +msgstr "ja" -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/tools/search_form.html:7 msgid "cancel search" -msgstr "" +msgstr "tühista otsing" -#: templates/admin/filer/tools/upload_button_js.html:24 -#: templates/admin/filer/widgets/admin_file.html:7 -#: templates/admin/filer/widgets/admin_file.html:8 -msgid "file missing" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Tühjenda" -#: templates/admin/filer/tools/clipboard/clipboard.html:7 -msgid "Clipboard" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "või lohista fail siia" -#: templates/admin/filer/tools/clipboard/clipboard.html:19 -msgid "Paste all items here" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "ühtegi faili pole valitud" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "discard" +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" msgstr "" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "Move all clipboard files to" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Vali fail" -#: templates/admin/filer/tools/clipboard/clipboard.html:43 -msgid "the clipboard is empty" +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" msgstr "" -#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:11 -msgid "upload failed" +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:11 -msgid "no file selected" +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:14 -#: templates/admin/filer/widgets/admin_file.html:15 -#: templates/admin/filer/widgets/admin_folder.html:7 -#: templates/admin/filer/widgets/admin_folder.html:8 -msgid "Lookup" +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:17 -#: templates/admin/filer/widgets/admin_folder.html:10 -msgid "Clear" +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" msgstr "" -#: templates/admin/filer/widgets/admin_folder.html:5 -msgid "none selected" +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" msgstr "" -#: templates/image_filer/folder.html:3 -#, python-format -msgid "Folder '%(folder_label)s' files" -msgstr "" +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." -#: templates/image_filer/folder.html:6 -msgid "File name" -msgstr "" +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" -#: templates/image_filer/image_export_form.html:17 -msgid "export" -msgstr "" +#~ msgid "Open file" +#~ msgstr "Open file" -#: templates/image_filer/image_export_form.html:27 -msgid "download image" -msgstr "" +#~ msgid "Full size preview" +#~ msgstr "Full size preview" -#: templates/image_filer/include/export_dialog.html:13 -msgid "Folder name already taken." -msgstr "" +#~ msgid "Add Description" +#~ msgstr "Add Description" -#: templates/image_filer/include/export_dialog.html:15 -msgid "Submit" -msgstr "" +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/eu/LC_MESSAGES/django.mo b/filer/locale/eu/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0c1dfafb69c392d5872efea85a89c95bca4fca89 GIT binary patch literal 11064 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, 2013 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Ales Zabala Alava , 2013\n" +"Language-Team: Basque (http://app.transifex.com/divio/django-filer/language/" +"eu/)\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Aurreratua" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Elementuak hautatu behar dira beraiekin zeozer egiteko. Ez da elementurik " +"aldatu." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "bat haututa" +msgstr[1] "%(total_count)s hautatuta" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "%(cnt)s-(e)tik 0 hautatuta" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Ez da ekintzarik hautatu" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d fitxategi arbelera mugituta." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Hautatutako fitxategiak arbelara mugitu" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "%(count)d fitxategientzako baimenak ezgaituta." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "%(count)d fitxategientzako baimenak gaituta." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Hautatutako fitxategientzako baimenak gaitu" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Hautatutako fitxategientzako baimenak ezgaitu" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d fitxategi eta/edo karpeta ezabatuta." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Ezin dira fitxategia eta/edo karpetak ezabatu" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Ziur zaude?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Ezabatu fitxategi eta/edo karpetak" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Ezabatu hautatutako fitxategi eta/edo karpetak" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d fitxategi eta/edo karpeta '%(destination)s' karpetara mugituta." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Fitxategi eta/edo karpetak mugitu" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Hautatutako fitxategi eta/edo karpetak mugitu" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d fitxategi berrizendatuta." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Fitxategiak berrizendatu" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d fitxategi eta/edo karpeta %(destination)s karpetara kopiatuta." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Fitxategi eta/edo karpetak kopiatu" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Hautatutako fitxategi eta/edo karpetak kopiatu" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "%(count)d irudien tamaina aldatuta." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Irudien tamaina aldatu" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Hautatutako irudien tamaina aldatu" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Kopiatutako fitxategiei gehituko zaien atzizkia." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Atzizkia baliozko, sinple eta letra xehetan dagoen fitxategi izen zatia izan " +"beharko luke, \"%(valid)s\" bezala." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Berrizendatze formatuko gako balio ezezaguna \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Berrizendatze formatu okerra: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "argazkitxoaren aukerak" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "zabalera" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "altuera" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "moztu" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "handitu" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" +"Argazkitxo aukerak edo tamaina aldatzeko parametroak zehaztu behar dira." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Subjektuaren kokapena" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Izen honetako karpeta badago." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "defektuzko testu alternatiboa" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "defektuzko epigrafea" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "subjektuaren kokapena" + +#: models/abstract.py:91 +msgid "image" +msgstr "irudia" + +#: models/abstract.py:92 +msgid "images" +msgstr "irudiak" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "erabiltzailea" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "fitxategiak" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "arbela" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "arbelak" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "fitxategia" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "arbeleko elementua" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "arbeleko elementuak" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "karpeta" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "fitxategi tamaina" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "beharrezko datu guztiak ditu" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "jatorrizko fitxategi izena" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "izena" + +#: models/filemodels.py:116 +msgid "description" +msgstr "deskribapena" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "jaea" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "noiz igota" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "noiz aldatua" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Baimenak ezgaituta" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "noiz sortua" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Karpeta" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Karpetak" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "elementu guztiak" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "elementu hau bakarrik" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "elementu hau eta bere semeak" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "mota" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "taldea" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "edonor" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "irakurri dezake" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "editatu dezake" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "semeak gehitu ditzake" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "karpeta baimena" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "karpeta baimenak" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "sortze data" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "egilea" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "egilearen kredituak beti argitaratu behar dira" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "copyright-a beti argitaratu behar da" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "metadatuak faltan dituzten fitxategiak" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "erroa" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Hautatutako ekintza abiarazi" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Joan" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Hemen klikatu orri guztietako objektuak hautatzeko" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Hautatu %(total_count)s fitxategi eta/edo karpeta guztiak" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Hautapena hustu" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Kudeaketa hasierara itzuli" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Etxea" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Filer aplikaziora itzuli" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Erro karpetara itzuli" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "'%(folder_name)s karpetara itzuli'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Ziur hautatutako fitxategi eta/edo karpetak ezabatu nahi dituzula? Ondoko " +"objektu eta erlazionatutako elementu guztiak ezabatuko lirateke:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Aurrekoak" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Webgunean ikusi" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Itzuli hona:" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "kudeaketa hasiera" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Karpeta ikonoa" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Ez dago helburuko karpetarik eskuragarri." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Ez dago kopiatu daitekeen fitxategi eta/edo karpetarik." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Helburuko karpeta:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopiatu" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Ez dago tamaina aldatu dezakeen irudirik." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Ondoko irudien tamaina aldatuko da:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Argazkitxo aukera bat hautatu edo tamaina aldatzeko parametroak ezarri:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Kontuz: Irudien tamaina aldatzean jatorrizkoak galduko dira. Lehenbizi " +"jatorrizkoen kopia egin zenezake." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Tamaina aldatu" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Zure kontuak ez du hautatutako fitxategi eta/edo karpeta guztiak mugitzeko " +"baimenik." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Ez dago mugitu daitekeen fitxategi edo/eta karpetarik." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Mugitu" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Zure kontuak ez du hautatutako fitxategiak berrizendatzeko baimenik." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Ez dago berrizendatu daitekeen fitxategirik." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Berrizendatu" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Karpeta gurasora joan" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Uneko karpetaren xehetasunak aldatu" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Aldatu" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Bilatu" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Ezabatu" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Karpeta berri bat sortzen du" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Karpeta berria" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Izena" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Jabea" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "'%(item_label)s' karpetaren xehetasunak aldatu" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Fitxategi hau aukeratu" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "'%(item_label)s'(r)en xehetasunak aldatu" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Baimenak" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "ezgaituta" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "gaituta" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Hautatutako fitxategiak arbelara mugitu" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Igo" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "aurrekoa" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "hurrengoa" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Berria gehitu" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Zuzendu azpiko errorea mesedez." +msgstr[1] "Zuzendu azpiko erroreak mesedez." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Gorde" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Arbela" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Elementu guztiak hemen itsatsi" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Arbeleko fitxategi guztiak hona mugitu:" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "arbela hutsik dago" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "igotzean errorea" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "topatuta" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "eta" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "bilaketa ezeztatu" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Garbitu" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "hautatutako fitxategirik ez" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Bilatu" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/fa/LC_MESSAGES/django.mo b/filer/locale/fa/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..aed0b0b267f59ef030245e5a122d304da5a31add GIT binary patch literal 21668 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, 2025 +# Translators: +# Translators: +# Fariman Ghaedi , 2019 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Fariman Ghaedi , 2019\n" +"Language-Team: Persian (http://app.transifex.com/divio/django-filer/language/" +"fa/)\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "شما مجوز آپلود فایل ها را ندارید." + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "پوشه ای برای آپلود یافت نشد. لطفاً صفحه را رفرش کرده و دوباره تلاش کنید" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "استفاده از این پوشه امکان پذیر نیست، دسترسی رد شد. لطفاً پوشه دیگری انتخاب کنید." + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "پیشرفته" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "آدرس کانونی" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"برای اینکه بتوانید روی آیتم ها اقداماتی انجام دهید ابتدا باید آیتم ها را " +"انتخاب کنید. هیچ آیتمی تغییر نکرد." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s انتخاب شده" +msgstr[1] "همه %(total_count)s انتخاب شده" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "لیست دایرکتوری برای %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 از %(cnt)s انتخاب شده" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "هیچ اقدامی انتخاب نشده است." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d فایل با موفقیت به کلیپ برد منتقل شد." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "انتقال فایل های انتخاب شده به کلیپ برد" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "مجوزهای %(count)d فایل با موفقیت غیرفعال شد." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "مجوزهای %(count)d فایل با موفقیت فعال شد." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "فعال کردن مجوزها برای فایل های انتخاب شده" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "غیرفعال کردن مجوزها برای فایل های انتخاب شده" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d فایل و/یا پوشه با موفقیت حذف شد." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "امکان حذف فایل ها و/یا پوشه ها وجود ندارد" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "آیا مطمئن هستید؟" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "حذف فایل ها و/یا پوشه ها" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "حذف فایل ها و/یا پوشه های انتخاب شده" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "پوشه هایی با نام %s در مقصد انتخاب شده از قبل وجود دارند" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "%(count)d فایل و/یا پوشه با موفقیت به پوشه '%(destination)s' منتقل شد." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "انتقال فایل ها و/یا پوشه ها" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "انتقال فایل ها و/یا پوشه های انتخاب شده" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d فایل با موفقیت تغییر نام داده شد." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "تغییر نام فایل ها" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "%(count)d فایل و/یا پوشه با موفقیت به پوشه '%(destination)s' کپی شد." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "کپی فایل ها و/یا پوشه ها" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "کپی فایل ها و/یا پوشه های انتخاب شده" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "%(count)d تصویر با موفقیت تغییر اندازه داده شد." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "تغییر اندازه تصاویر" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "تغییر اندازه تصاویر انتخاب شده" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "پسوندی که به نام فایل های کپی شده اضافه خواهد شد." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "پسوند باید بخشی معتبر، ساده و با حروف کوچک از نام فایل باشد، مانند \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "کلید مقدار فرمت تغییر نام ناشناخته \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "فرمت تغییر نام نامعتبر: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "گزینه تصویر بندانگشتی" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "عرض" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "ارتفاع" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "برش" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "بزرگنمایی" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "باید گزینه تصویر بندانگشتی یا پارامترهای تغییر اندازه انتخاب شود." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "موقعیت موضوع" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "موقعیت موضوع اصلی صحنه. فرمت: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "فرمت موقعیت موضوع نامعتبر است. " + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "موقعیت موضوع خارج از تصویر است. " + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "ورودی شما: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "چه کسی" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "چه چیزی" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "پوشه با این نام از قبل وجود دارد." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "فایلر" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "کتابخانه رسانه" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "متن جایگزین پیش‌فرض" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "عنوان پیش‌فرض" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "موقعیت موضوع" + +#: models/abstract.py:91 +msgid "image" +msgstr "تصویر" + +#: models/abstract.py:92 +msgid "images" +msgstr "تصاویر" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" +"فرمت تصویر تشخیص داده نشد یا اندازه تصویر از حد مجاز %(max_pixels)d میلیون پیکسل " +"دو برابر یا بیشتر است. قبل از آپلود مجدد، فرمت فایل را بررسی کنید یا تصویر را " +"به اندازه %(width)d x %(height)d پیکسل یا کمتر تغییر اندازه دهید." + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" +"اندازه تصویر (%(pixels)d میلیون پیکسل) از حد مجاز %(max_pixels)d میلیون پیکسل " +"فراتر رفته است. قبل از آپلود مجدد، تصویر را به اندازه %(width)d x %(height)d " +"پیکسل یا کمتر تغییر اندازه دهید." + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "کاربر" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "فایل ها" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "کلیپ برد" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "کلیپ بردها" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "فایل" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "آیتم کلیپ برد" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "آیتم های کلیپ برد" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "پوشه" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "اندازه فایل" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "دارای تمام داده های اجباری است" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "نام فایل اصلی" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "نام" + +#: models/filemodels.py:116 +msgid "description" +msgstr "توضیحات" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "مالک" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "آپلود شده در" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "تغییر یافته در" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "مجوزها غیرفعال شده" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "بررسی هرگونه مجوز برای این فایل را غیرفعال کنید. فایل برای همه به صورت عمومی قابل دسترسی خواهد بود." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "والد" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "ایجاد شده در" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "پوشه" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "پوشه ها" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "همه آیتم ها" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "فقط این آیتم" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "این آیتم و تمام فرزندان" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "به ارث بردن" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "اجازه دادن" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "رد کردن" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "نوع" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "گروه" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "همه" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "می تواند بخواند" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "می تواند ویرایش کند" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "می تواند فرزند اضافه کند" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "مجوز پوشه" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "مجوزهای پوشه" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "پوشه نمی تواند با نوع \"همه آیتم ها\" انتخاب شود." + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "هنگامی که نوع \"همه آیتم ها\" نیست، باید پوشه انتخاب شود." + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "کاربر یا گروه نمی تواند همراه با \"همه\" انتخاب شود." + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "حداقل یکی از کاربر، گروه یا \"همه\" باید انتخاب شود." + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "همه پوشه ها" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "مسیر منطقی" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "کاربر: {user}" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "گروه: {group}" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "همه" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "ویرایش" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "خواندن" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "افزودن فرزند" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "تاریخ گرفته شده" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "نویسنده" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "همیشه باید اعتبار نویسنده منتشر شود" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "همیشه باید حق چاپ منتشر شود" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "عرض بر حسب پیکسل." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "ارتفاع بر حسب پیکسل." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "گزینه های تصویر بندانگشتی" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "آپلودهای مرتب نشده" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "فایل های با متادیتای از دست رفته" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "ریشه" + +#: settings.py:273 +msgid "Show table view" +msgstr "نمایش نمای جدولی" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "نمایش نمای بندانگشتی" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "اجرای عمل انتخاب شده" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "برو" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "برای انتخاب اشیاء در تمام صفحات اینجا کلیک کنید" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "انتخاب همه %(total_count)s فایل ها و/یا پوشه ها" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "پاک کردن انتخاب" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "بازگشت به صفحه اصلی مدیریت" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "خانه" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "بازگشت به برنامه فایلر" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "بازگشت به پوشه ریشه" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "بازگشت به پوشه '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "تکرارها" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"حذف فایل ها و/یا پوشه های انتخاب شده منجر به حذف اشیاء مرتبط می شود، اما حساب " +"شما مجوز حذف انواع زیر از اشیاء را ندارد:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"حذف فایل ها و/یا پوشه های انتخاب شده مستلزم حذف اشیاء محافظت شده مرتبط زیر است:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"آیا مطمئن هستید که می خواهید فایل ها و/یا پوشه های انتخاب شده را حذف کنید؟ همه " +"اشیاء زیر و آیتم های مرتبط با آنها حذف خواهند شد:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "خیر، مرا برگردان" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "بله، مطمئنم" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "تاریخچه" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "مشاهده در سایت" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "بازگشت به" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "صفحه اصلی مدیریت" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "آیکون پوشه" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "حساب شما مجوز کپی کردن همه فایل ها و/یا پوشه های انتخاب شده را ندارد." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "مرا برگردان" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "هیچ پوشه مقصدی در دسترس نیست." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "هیچ فایل و/یا پوشه ای برای کپی کردن در دسترس نیست." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "فایل ها و/یا پوشه های زیر به یک پوشه مقصد کپی خواهند شد (ساختار درختی آنها حفظ می شود):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "پوشه مقصد:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "کپی" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "کپی کردن فایل ها به همان پوشه مجاز نیست" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "حساب شما مجوز تغییر اندازه همه تصاویر انتخاب شده را ندارد." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "هیچ تصویری برای تغییر اندازه در دسترس نیست." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "تصاویر زیر تغییر اندازه داده خواهند شد:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "یک گزینه تصویر بندانگشتی موجود را انتخاب کنید یا پارامترهای تغییر اندازه را وارد کنید:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"هشدار: تصاویر در جای خود تغییر اندازه داده می شوند و نسخه های اصلی از بین می " +"روند. شاید بهتر است ابتدا یک کپی از آنها تهیه کنید تا نسخه های اصلی حفظ شوند." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "تغییر اندازه" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "حساب شما مجوز جابجایی همه فایل ها و/یا پوشه های انتخاب شده را ندارد." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "هیچ فایل و/یا پوشه ای برای جابجایی در دسترس نیست." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "فایل ها و/یا پوشه های زیر به یک پوشه مقصد منتقل خواهند شد (ساختار درختی آنها حفظ می شود):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "انتقال" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "انتقال فایل ها به همان پوشه مجاز نیست" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "حساب شما مجوز تغییر نام همه فایل های انتخاب شده را ندارد." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "هیچ فایلی برای تغییر نام در دسترس نیست." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "فایل های زیر تغییر نام داده خواهند شد (در پوشه های خود باقی می مانند و نام فایل اصلی حفظ می شود، فقط نام نمایش داده شده تغییر می کند):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "تغییر نام" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "بازگشت به پوشه والد" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "تغییر جزئیات پوشه فعلی" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "تغییر" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "برای جستجوی عبارت وارد شده اینجا کلیک کنید" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "جستجو" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "بستن" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "محدودیت" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "برای محدود کردن جستجو به پوشه فعلی آن را بررسی کنید" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "محدود کردن جستجو به پوشه فعلی" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "حذف" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "افزودن یک پوشه جدید" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "پوشه جدید" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "بارگذاری فایل‌ها" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "ابتدا باید یک پوشه انتخاب کنید" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "نام" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "مالک" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "اندازه" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "عملیات" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "تغییر جزئیات پوشه '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s پوشه" +msgstr[1] "%(counter)s پوشه" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s فایل" +msgstr[1] "%(counter)s فایل" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "تغییر جزئیات پوشه" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "حذف پوشه" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "انتخاب این فایل" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "تغییر جزئیات '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "مجوزها" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "غیرفعال" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "فعال" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "آدرس URL به کلیپ‌بورد کپی شد" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "آدرس اصلی '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "دانلود '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "حذف فایل" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "فایل‌ها را اینجا رها کنید یا از دکمه «بارگذاری فایل‌ها» استفاده کنید" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "فایل خود را برای بارگذاری اینجا رها کنید:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "بارگذاری" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "لغو" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "بارگذاری موفقیت‌آمیز بود!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "بارگذاری لغو شد!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "قبلی" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "صفحه %(number)s از %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "بعدی" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "انتخاب همه %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "انتخاب همه" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "فایل‌ها" diff --git a/filer/locale/fi/LC_MESSAGES/django.mo b/filer/locale/fi/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..984dc53b70094ec1014d135eb418f18b5af8d8f2 GIT binary patch literal 16713 zcmcJV36v#OdB-oxh>pmnh-_L649q|;Gs9}LJIpWxGt4*}qQtTKy_$K|?{(F)mTsPe zsL_bv7R7}{gG(DwF+>cgh*8su#s!a3KL!s1{}trV{DPmSgHJ!gm^XrlgU(A8*nwa@;Syl1AG~%dJ%Xa*aVLT+o1Tl z5fuL)2gT35;IZHX;7Q>3!71=J;2mHCrWnE;_FQ9@gC~J61up}||A#@z;TxdFc?4Vq z{u0!@R~}`|Qg8z(zPE$wrv{4O8$j`U6DWRe0X6UUgQ|BID1ILXC5OKQp8_89JlF5> z;E6o10Abl|0>wuN!h*RL)Ox=IR6lovlFO&S6Tk;NJ_3qwH5RT0uLLJS@pnHc`F#O= zA^0Ou{2qUdTkn%V>A@OM{htd;t`~t+HCKabKLZBfEuiY%4@y3t2PNmPfro*QfExE_ zp!j?Y)clU3Q^{up)blyuMc`&%{#MZHA1MCr1f}A4`{xJz`*~3E`8J41%}+q_BVnoC z5|AOy!QeP}3Mjs=1XZu$pQpi7dHw@%3-}T64DeUrS>PDTEjx<9E5O@8$@fuE>w7Fp zax!=^sP+x;T=3JN`2J6@2_AsaNH3?s8^P~`YF`VS9oztF+s+jvh>C4}HJOib? zjORClmxJE}d1X#K$(TdH^`P{BC#ZGa4L%i&K=BcS;;RixuU_l%M*sdM(5|z`J3;k# zAE^Gn0E+K#flI+3czhH*kmtwz^M8XHX9>bo{pW&ue=;aNI}OzMXM?hzi$IOD0aU$h z{`pF93C|&jDw(~Y=J7gEa=H=3<(c<_OTfE5-U~_(KMSh1fU_fqis1JD&v`u78rlUuWNrPI$f zp!`4#iqGpn>D?QA`Awkg{tobZ@BvWcUqWXi;5Jb5c{QkUKLEnAxx?c_ASPuV0~K$c zbDE1cr-GXQRp6!I6!;AA9#Hdr09*||1j4c%Onj|mP>pjI_%!f55YsekLCve?-@nPf zf4hHwvw#0-u%zBUf*%8Sjk@_hWz5OvQ1EKXCqVgy_ki-J-vPBwKLyu<2aY@a+5l=E zF9RjV7I+T$8t`E7Gobi=5EQ@P01pAb1D*u_5IhJxXqEFThk|-O7gWD%!2sL=s$B_6 zPhJmdyxT$X_eoIe_f1gkzYFqb9^q#>cqqb@Upx~$9c+Tz!P`OU&3}NB<1ay$$~D3ŝ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 Yt~rT`-DY@Qn3KV=ON~0YhryNmKY;j@A^-pY literal 0 HcmV?d00001 diff --git a/filer/locale/fi/LC_MESSAGES/django.po b/filer/locale/fi/LC_MESSAGES/django.po new file mode 100644 index 000000000..35fc907e0 --- /dev/null +++ b/filer/locale/fi/LC_MESSAGES/django.po @@ -0,0 +1,1259 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Niklas Jerva , 2016 +# Teemu Gratschev , 2022 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Teemu Gratschev , 2022\n" +"Language-Team: Finnish (http://app.transifex.com/divio/django-filer/language/" +"fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Edistyneet asetukset" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "sääntöjenmukainen URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Toiminnon suorittamiseksi pitää valita kohteita. Yhtäänkohdetta ei ole " +"valittu." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s valittu" +msgstr[1] "Kaikki %(total_count)s valittu" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Hakemistolistaus kansiolle %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 / %(cnt)s valittu" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Toimintoa ei ole valittu." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d tiedostoa siirretty leikepöydälle." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Siirrä valitut tiedostot leikepöydälle" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "%(count)d tiedoston käyttöoikeudet poistettu käytöstä." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Käyttöoikeudet otettu käyttöön %(count)d tiedostolle." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Ota käyttöoikeudet käyttöön valituille tiedostoille" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Poista käyttöoikeudet käytöstä valituista tiedostoista" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d tiedostoa ja/tai kansiota poistettu." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Kansioita ja/tai tiedostoja ei voida poistaa" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Oletko varma?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Poista tiedostot ja/tai kansiot" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Poista valitut tiedostot ja/tai kansiot" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "%s niminen kansio on jo valitussa kohteessa" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d tiedostoa ja/tai kansiota siirretty kansioon '%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Siirrä tiedostot ja/tai kansiot" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Siirrä valitut tiedostot ja/tai kansiot" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d tiedostoa nimetty uudelleen." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Nimeä tiedostot uudelleen" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d tiedostoa ja/tai kansiota kopioitu kansioon '%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopioi tiedostot ja/tai kansiot" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopioi valitut tiedostot ja/tai kansiot" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "%(count)d kuvan kokoa muutettu." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Muuta kuvien kokoa" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Muuta valittujen kuvien kokoa" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Pääte, joka lisätään kopioitujen tiedostojen nimiin." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Päätteen tulee olla käypä, yksinkertainen ja pienellä kirjoitettu osa " +"tiedostonimeä, esim. \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Tuntematon uudelleennimeämisarvo \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Virheellinen uudelleennimeämismuoto: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "pikkukuvan asetus" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "leveys" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "korkeus" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "rajaus" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "suurenna" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Pikkukuvan asetus tai koon muuttamisen parametrit tulee valita." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Kohteen sijainti" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Kuvan pääkohteen sijainti. Muoto: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Virheellinen kohteen sijainnin muoto." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Kohteen sijainti kuvan ulkopuolella." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Syöttösi: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Saman niminen kansio on jo olemassa." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Mediakirjasto" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "oletus alt-teksti" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "oletuskuvateksti" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "kohteen sijainti" + +#: models/abstract.py:91 +msgid "image" +msgstr "kuva" + +#: models/abstract.py:92 +msgid "images" +msgstr "kuvat" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "käyttäjä" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "tiedostot" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "leikepöytä" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "leikepöydät" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "tiedosto" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "leikepöydän kohde" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "leikepöydän kohteet" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "kansio" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "tiedostokoko" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "sisältää kaikki pakolliset tiedot" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "alkuperäinen tiedostonimi" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "nimi" + +#: models/filemodels.py:116 +msgid "description" +msgstr "kuvaus" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "omistaja" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "ladattu" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "muokattu" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Käyttöoikeudet pois käytöstä" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Poista käyttöoikeuksien tarkistus tältä tiedostolta. Tiedosto näkyy " +"julkisena kaikille." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "luotu" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Kansio" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Kansiot" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "kaikki kohteet" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "vain tämä kohde" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "tämä kohde ja kaikki lapset" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "salli" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "kiellä" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tyyppi" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "ryhmä" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "kaikki" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "saa lukea" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "saa muokata" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "saa lisätä lapsia" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "kansion käyttöoikeus" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "kansion käyttöoikeudet" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "päivämäärä" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "tekijä" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "tekijän tiedot on aina julkaistava" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "tekijänoikeustiedot on aina julkaistava" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "leveys pikseleinä." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "korkeus pikseleinä." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "pikkukuvan asetukset" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Järjestelemättömät lataukset" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "tiedostot ilman metadataa" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "juuri" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Suorita valittu toiminto" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Suorita" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Valitse kaikki kohteet kaikilta sivuilta" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Valitse kaikki %(total_count)s tiedostoa ja/tai kansiota" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Tyhjennä valinta" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Palaa hallinnan etusivulle" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Etusivu" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Palaa Fileriin" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Palaa juurikansioon" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Palaa kansioon '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Kaksoiskappaleet" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Valittujen tiedostojen ja/tai kansioiden poistaminen vaatii liittyvien " +"objektien poistamista, mutta käyttöoikeutesi eivät riitäseuraavien " +"objektityyppien poistamiseen:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Valittujen tiedostojen ja/tai kansioiden poistaminen vaatisi seuraavien " +"suojattujen liittyvien objektien poistamista:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Oletko varma, että haluat poistaa valitut tiedostot ja/tai kansiot? Kaikki " +"seuraavat objektit ja niihin liittyvät kohteet poistetaan:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Ei, vie minut takaisin" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Kyllä, olen varma" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Historia" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Näytä sivustolla" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Palaa kohteeseen" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "hallinnan etusivu" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Kansion kuvake" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Käyttöoikeutesi eivät riitä kaikkien valittujen tiedostojen ja/tai " +"kansioidenkopioimiseen." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Vie minut takaisin" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Kohdekansioita ei ole saatavilla." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Kopioitavia tiedostoja ja/tai kansioita ei ole saatavilla." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Seuraavat tiedostot ja/tai kansiot kopioidaan kohdekansioon (säilyttäen " +"puurakenteen):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Kohdekansio:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopioi" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Tiedostojen kopiointi samaan kansioon ei ole sallittu" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"Käyttöoikeutesi eivät riitä kaikkien valittujen kuvien koon muuttamiseen." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Kuvia, joiden kokoa voisi muuttaa ei ole saatavilla." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Seuraavien kuvien kokoa muutetaan:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "Valitse olemassaolevat pikkukuvan asetukset tai syötä kokoparametrit:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Varoitus: Kuvien kokoa muuttaessa alkuperäiset versiot menetetään. On hyvä " +"idea tehdä kuvista ensin kopiot alkuperäisten säilyttämiseksi." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Muuta kokoa" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Käyttöoikeutesi eivät riitä kaikkien valittujen tiedostojen ja/tai " +"kansioidensiirtämiseen." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Siirrettäviä tiedostoja ja/tai kansioita ei ole saatavilla." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Seuraavat tiedostot ja/tai kansiot siirretään kohdekansioon (säilyttäen " +"niiden puurakenne):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Siirrä" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Tiedostojen siirto samaan kansioon ei ole sallittua" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" +"Käyttöoikeutesi eivät riitä kaikkien valittujen tiedostojen " +"uudelleennimeämiseen." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Uudelleennimettäviä tiedostoja ei ole saatavilla." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Seuraavat tiedostot uudelleennimetään (ne pysyvät kansioissaan ja " +"alkuperäiset tiedostonimet säilytetään, vain näytettävä tiedostonimi " +"muutetaan):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Uudelleennimeä" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Palaa ylempään kansioon" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Muuta nykyisen kansion tietoja" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Muuta" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Valitse suorittaaksesi haun annetulla hakusanalla" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Hae" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Sulje" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Raja" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Valitse rajoittaaksesi haun nykyiseen kansioon" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Rajoita haku nykyiseen kansioon" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Poista" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Lisää uusi kansio" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Uusi kansio" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Lataa tiedostoja" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Sinun tulee valita kansio ensin" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Nimi" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Omistaja" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Koko" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Toiminto" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Muuta kansion '%(item_label)s' tietoja" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s kansio" +msgstr[1] "%(counter)s kansiota" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s tiedosto" +msgstr[1] "%(counter)s tiedostoa" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Muuta kansion tietoja" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Poista kansio" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Valitse tämä tiedosto" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Muuta kohteen '%(item_label)s' tietoja" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Käyttöoikeudet" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "pois käytöstä" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "käytössä" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Siirrä valitut tiedostot leikepöydälle" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "Canonical-osoite '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Lataa '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Poista tiedosto" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Pudota tiedostoja tähän tai käytä \"Lataa tiedostoja\" painiketta" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Pudota tiedostosi:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Siirrä palvelimelle" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "peruuta" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Lataus onnistui!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Lataus peruttu!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "edellinen" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Sivu %(number)s/%(num_pages)s" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "seuraava" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Valitse kaikki %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Lisää uusi" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Django-sivuston ylläpito" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ole hyvä ja korjaa allaoleva virhe." +msgstr[1] "Ole hyvä ja korjaa allaolevat virheet." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Tallenna" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Leikepöytä" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Liitä kaikki kohteet tähän" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Siirrä kaikki leikepöydällä olevat tiedostot" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Tyhjä leikepöytä" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "leikepöytä on tyhjä" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "siirto epäonnistui" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tyyppi" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Tiedostokoko" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Muokattu" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Luotu" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "löytyi" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "ja" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "peruuta haku" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Tyhjennä" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "tai pudota tiedostosi tähän" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "yhtään tiedostoa ei ole valittu" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Haku" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Valitse tiedosto" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/fr/LC_MESSAGES/django.mo b/filer/locale/fr/LC_MESSAGES/django.mo index 6028106124c2a1411a9ace12210c8e01be849c3a..9936407bf826a204d11fe1b7e8854ffd290853c3 100644 GIT binary patch literal 22139 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 YzHpFcK^iak^IU30u?vkf&c&j diff --git a/filer/locale/fr/LC_MESSAGES/django.po b/filer/locale/fr/LC_MESSAGES/django.po index 662e7b320..5e56554c3 100644 --- a/filer/locale/fr/LC_MESSAGES/django.po +++ b/filer/locale/fr/LC_MESSAGES/django.po @@ -1,935 +1,1249 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Bertrand Bordage , 2012. -# Marion Balensi , 2012. +# Translators: +# Translators: +# Assma Buifruri , 2017 +# Bertrand Bordage , 2012-2013 +# Sylvain Chiron , 2016 +# Corentin Bettiol, 2023 +# Jason Gass Martinez , 2016 +# Marion Balensi , 2012 +# Nicolas PASCAL , 2019 msgid "" msgstr "" -"Project-Id-Version: django-filer\n" +"Project-Id-Version: django Filer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 19:10+0200\n" -"PO-Revision-Date: 2012-09-03 20:11+0100\n" -"Last-Translator: Stefan Foulis \n" -"Language-Team: French (http://www.transifex.com/projects/p/django-filer/" -"language/fr/)\n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Corentin Bettiol, 2023\n" +"Language-Team: French (http://app.transifex.com/divio/django-filer/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: views.py:103 -msgid "Folder with this name already exists." -msgstr "Il existe déjà un dossier avec ce nom." +#: admin/clipboardadmin.py:17 +#| msgid "" +#| "ccount doesn't have permissions to rename all of the selected files." +msgid "You do not have permission to upload files." +msgstr "Vous n'avez pas la permission d'héberger des fichiers." + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "Dossier d'hébergement introuvable, rafraîchissez la page et réessayez." -#: admin/fileadmin.py:41 +#: admin/clipboardadmin.py:20 +msgid "" +"Can't use this folder, Permission Denied. Please select another folder." +msgstr "Utilisation du dossier impossible : Permissions insuffisantes. Sélectionnez un autre dossier." + +#: admin/fileadmin.py:73 msgid "Advanced" msgstr "Avancé" -#: admin/folderadmin.py:324 admin/folderadmin.py:427 +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "URL canonique" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." -msgstr "" -"Des éléments doivent être selectionnés pour effectuer des actions sur eux. " -"Aucun élément n'a été modifié." +msgstr "Des éléments doivent être sélectionnés pour effectuer les actions. Aucun élément n'a été modifié." -#: admin/folderadmin.py:344 +#: admin/folderadmin.py:434 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" msgstr[0] "%(total_count)s sélectionné" msgstr[1] "Tous les %(total_count)s sélectionnés" +msgstr[2] "Tous les %(total_count)s sélectionnés" -#: admin/folderadmin.py:377 +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Liste du répertoire pour %(folder_name)s" + +#: admin/folderadmin.py:475 #, python-format msgid "0 of %(cnt)s selected" msgstr "0 sur %(cnt)s sélectionné" -#: admin/folderadmin.py:456 +#: admin/folderadmin.py:612 msgid "No action selected." msgstr "Pas d'action sélectionnée." -#: admin/folderadmin.py:497 +#: admin/folderadmin.py:664 #, python-format msgid "Successfully moved %(count)d files to clipboard." msgstr "%(count)d fichiers déplacés avec succès vers le presse-papiers." -#: admin/folderadmin.py:503 +#: admin/folderadmin.py:669 msgid "Move selected files to clipboard" -msgstr "Déplacer les fichiers sélectionnés vers le presse-papiers." +msgstr "Déplacer les fichiers sélectionnés vers le presse-papiers" -#: admin/folderadmin.py:537 +#: admin/folderadmin.py:709 #, python-format msgid "Successfully disabled permissions for %(count)d files." msgstr "Permissions désactivées avec succès pour %(count)d fichiers." -#: admin/folderadmin.py:541 +#: admin/folderadmin.py:711 #, python-format msgid "Successfully enabled permissions for %(count)d files." msgstr "Permissions activées avec succès pour %(count)d fichiers." -#: admin/folderadmin.py:550 +#: admin/folderadmin.py:719 msgid "Enable permissions for selected files" msgstr "Activer les permissions pour les fichiers sélectionnés." -#: admin/folderadmin.py:555 +#: admin/folderadmin.py:725 msgid "Disable permissions for selected files" msgstr "Désactiver les permissions pour les fichiers sélectionnés." -#: admin/folderadmin.py:623 +#: admin/folderadmin.py:789 #, python-format msgid "Successfully deleted %(count)d files and/or folders." msgstr "%(count)d fichiers et/ou dossiers supprimés avec succès." -#: admin/folderadmin.py:630 +#: admin/folderadmin.py:794 msgid "Cannot delete files and/or folders" msgstr "Impossible de supprimer les fichiers et/ou dossiers." -#: admin/folderadmin.py:632 +#: admin/folderadmin.py:796 msgid "Are you sure?" msgstr "Êtes-vous sûr(e) ?" -#: admin/folderadmin.py:637 +#: admin/folderadmin.py:802 msgid "Delete files and/or folders" -msgstr "Supprimer les fichiers et/ou dossiers." +msgstr "Supprimer les fichiers et/ou dossiers" -#: admin/folderadmin.py:656 +#: admin/folderadmin.py:823 msgid "Delete selected files and/or folders" -msgstr "Supprimer les fichiers et/ou dossiers sélectionnés." +msgstr "Supprimer les fichiers et/ou dossiers sélectionnés" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Des dossiers nommés %s existent déjà dans la destination sélectionnée" -#: admin/folderadmin.py:771 +#: admin/folderadmin.py:934 #, python-format msgid "" "Successfully moved %(count)d files and/or folders to folder " "'%(destination)s'." -msgstr "" -"%(count)d fichiers et/ou dossiers déplacés avec succès vers le dossier « " -"%(destination)s »." +msgstr "%(count)d fichiers et/ou dossiers déplacés avec succès vers le dossier « %(destination)s »." -#: admin/folderadmin.py:778 admin/folderadmin.py:780 +#: admin/folderadmin.py:942 admin/folderadmin.py:944 msgid "Move files and/or folders" -msgstr "Déplacer les fichers et/ou dossiers." +msgstr "Déplacer les fichiers et/ou dossiers" -#: admin/folderadmin.py:797 +#: admin/folderadmin.py:959 msgid "Move selected files and/or folders" -msgstr "Déplacer les fichiers et/ou dossiers sélectionnés." +msgstr "Déplacer les fichiers et/ou dossiers sélectionnés" -#: admin/folderadmin.py:854 +#: admin/folderadmin.py:1016 #, python-format msgid "Successfully renamed %(count)d files." msgstr "%(count)d fichiers renommés avec succès." -#: admin/folderadmin.py:862 admin/folderadmin.py:864 admin/folderadmin.py:881 +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 msgid "Rename files" -msgstr "Renommer les fichiers." +msgstr "Renommer les fichiers" -#: admin/folderadmin.py:975 +#: admin/folderadmin.py:1137 #, python-format msgid "" "Successfully copied %(count)d files and/or folders to folder " "'%(destination)s'." -msgstr "" -"%(count)d fichiers et/dossiers copiés avec succès dans le dossier « " -"%(destination)s »." +msgstr "%(count)d fichiers et/dossiers copiés avec succès dans le dossier « %(destination)s »." -#: admin/folderadmin.py:989 admin/folderadmin.py:991 +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 msgid "Copy files and/or folders" -msgstr "Copier les fichiers et/ou dossiers." +msgstr "Copier les fichiers et/ou dossiers" -#: admin/folderadmin.py:1010 +#: admin/folderadmin.py:1174 msgid "Copy selected files and/or folders" -msgstr "Copier les fichiers et/ou dossiers sélectionnés." +msgstr "Copier les fichiers et/ou dossiers sélectionnés" -#: admin/folderadmin.py:1105 +#: admin/folderadmin.py:1279 #, python-format msgid "Successfully resized %(count)d images." msgstr "%(count)d images redimensionnées avec succès." -#: admin/folderadmin.py:1113 admin/folderadmin.py:1115 +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 msgid "Resize images" -msgstr "Redimensionner les images." +msgstr "Redimensionner les images" -#: admin/folderadmin.py:1133 +#: admin/folderadmin.py:1303 msgid "Resize selected images" -msgstr "Redimensionner les images sélectionnées." +msgstr "Redimensionner les images sélectionnées" -#: admin/forms.py:26 +#: admin/forms.py:24 msgid "Suffix which will be appended to filenames of copied files." -msgstr "Suffixe qui sera ajouté aux noms des fichiers copiés." +msgstr "Suffixe qui sera ajouté au nom des fichiers copiés." -#: admin/forms.py:33 +#: admin/forms.py:31 #, python-format msgid "" "Suffix should be a valid, simple and lowercase filename part, like " "\"%(valid)s\"." -msgstr "" -"Le suffixe doit être une partie de nom de fichier simple et en minuscules, " -"comme \"%(valid)s\"." +msgstr "Le suffixe doit être une partie de nom de fichier valide, simple et en minuscules, comme « %(valid)s »." -#: admin/forms.py:54 +#: admin/forms.py:52 #, python-format msgid "Unknown rename format value key \"%(key)s\"." -msgstr "La valeur de la clé de formatage \"%(key)s\" est inconnue." +msgstr "La clé de formatage « %(key)s » est inconnue." -#: admin/forms.py:56 +#: admin/forms.py:54 #, python-format msgid "Invalid rename format: %(error)s." msgstr "Format de renommage non valide : %(error)s." -#: admin/forms.py:62 +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 msgid "thumbnail option" msgstr "option de miniature" -#: admin/forms.py:63 +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 msgid "width" msgstr "largeur" -#: admin/forms.py:64 +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 msgid "height" msgstr "hauteur" -#: admin/forms.py:65 +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 msgid "crop" msgstr "rogner" -#: admin/forms.py:66 +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 msgid "upscale" -msgstr "élargir" +msgstr "agrandir" -#: admin/forms.py:71 +#: admin/forms.py:79 msgid "Thumbnail option or resize parameters must be choosen." -msgstr "" -"Une option de miniature ou des paramètres de redimensionnement doivent être " -"choisis." - -#: admin/forms.py:73 -msgid "Resize parameters must be choosen." -msgstr "Des paramètres de redimensionnement doivent être choisis." +msgstr "Une option de miniature ou des paramètres de dimensionnement doivent être choisis." -#: admin/imageadmin.py:12 +#: admin/imageadmin.py:20 admin/imageadmin.py:112 msgid "Subject location" msgstr "Emplacement du sujet" -#: admin/imageadmin.py:13 -msgid "Location of the main subject of the scene." -msgstr "Emplacement du sujet principal de la scène." +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Emplacement du sujet principal de la scène. Format : « x,y »." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Format d'emplacement de sujet invalide." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "L'emplacement du sujet est en dehors de l'image." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Votre entrée : « {subject_location} »." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "Qui" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "Quoi" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Il existe déjà un dossier avec ce nom." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Bibliotèque multimedia" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "texte alternatif par défaut" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "légende par défaut" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "emplacement du sujet" + +#: models/abstract.py:91 +msgid "image" +msgstr "image" + +#: models/abstract.py:92 +msgid "images" +msgstr "images" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "Le format de l'image n'est pas reconnu, ou la taille de l'image dépasse la limite de%(max_pixels)d millions pixels deux fois ou plus. Avant d'envoyer l'image à nouveau, vérifiez le format de l'image, ou redimensionnez l'image afin qu'elle aie une résolution de %(width)d x %(height)d pixels ou moins." -#: models/clipboardmodels.py:9 models/foldermodels.py:236 +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "La taille de l'image (%(pixels)d millions de pixels) dépasse la limite de %(max_pixels)d millions de pixels. Avant d'envoyer l'image à nouveau, redimensionnez la pour qu'elle aie une résolution de %(width)d x %(height)d pixels ou moins." + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 msgid "user" msgstr "utilisateur" -#: models/clipboardmodels.py:11 models/filemodels.py:287 +#: models/clipboardmodels.py:17 models/filemodels.py:157 msgid "files" msgstr "fichiers" -#: models/clipboardmodels.py:34 models/clipboardmodels.py:40 +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 msgid "clipboard" msgstr "presse-papiers" -#: models/clipboardmodels.py:35 +#: models/clipboardmodels.py:25 msgid "clipboards" -msgstr "presses-papiers" +msgstr "presse-papiers" -#: models/clipboardmodels.py:39 models/filemodels.py:35 -#: models/filemodels.py:286 +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 msgid "file" -msgstr "fichiers" +msgstr "fichier" -#: models/clipboardmodels.py:44 +#: models/clipboardmodels.py:56 msgid "clipboard item" msgstr "élément du presse-papiers" -#: models/clipboardmodels.py:45 +#: models/clipboardmodels.py:57 msgid "clipboard items" msgstr "éléments du presse-papiers" -#: models/filemodels.py:33 templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 #: templates/admin/filer/folder/new_folder_form.html:4 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 msgid "folder" msgstr "dossier" -#: models/filemodels.py:36 +#: models/filemodels.py:81 msgid "file size" msgstr "taille du fichier" -#: models/filemodels.py:38 +#: models/filemodels.py:87 msgid "sha1" msgstr "sha1" -#: models/filemodels.py:40 +#: models/filemodels.py:94 msgid "has all mandatory data" msgstr "possède toutes les données nécessaires" -#: models/filemodels.py:42 +#: models/filemodels.py:100 msgid "original filename" msgstr "nom de fichier originel" -#: models/filemodels.py:44 models/foldermodels.py:99 +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 msgid "name" msgstr "nom" -#: models/filemodels.py:46 +#: models/filemodels.py:116 msgid "description" msgstr "description" -#: models/filemodels.py:50 +#: models/filemodels.py:125 models/foldermodels.py:108 msgid "owner" msgstr "propriétaire" -#: models/filemodels.py:52 models/foldermodels.py:105 +#: models/filemodels.py:129 models/foldermodels.py:116 msgid "uploaded at" -msgstr "transféré le" +msgstr "téléversé le" -#: models/filemodels.py:53 models/foldermodels.py:108 +#: models/filemodels.py:134 models/foldermodels.py:126 msgid "modified at" msgstr "modifié le" -#: models/filemodels.py:57 +#: models/filemodels.py:140 msgid "Permissions disabled" msgstr "Permissions désactivées" -#: models/filemodels.py:58 -msgid "Disable any permission checking for this " -msgstr "" +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "Désactiver la vérification des permissions pour ce fichier. Le fichier sera publiquement accessible à tout le monde." -#: models/foldermodels.py:107 +#: models/foldermodels.py:94 +msgid "parent" +msgstr "parent" + +#: models/foldermodels.py:121 msgid "created at" msgstr "créé le" -#: models/foldermodels.py:211 -#: templates/admin/filer/widgets/admin_folder.html:3 -#: templates/admin/filer/widgets/admin_folder.html:5 +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Folder" msgstr "Dossier" -#: models/foldermodels.py:212 +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 msgid "Folders" msgstr "Dossiers" -#: models/foldermodels.py:227 +#: models/foldermodels.py:260 msgid "all items" msgstr "tous les éléments" -#: models/foldermodels.py:228 +#: models/foldermodels.py:261 msgid "this item only" msgstr "cet élément seulement" -#: models/foldermodels.py:229 +#: models/foldermodels.py:262 msgid "this item and all children" msgstr "cet élément et ses enfants" -#: models/foldermodels.py:233 +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "hériter" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "autoriser" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "refuser" + +#: models/foldermodels.py:280 msgid "type" msgstr "type" -#: models/foldermodels.py:239 +#: models/foldermodels.py:297 msgid "group" msgstr "groupe" -#: models/foldermodels.py:240 +#: models/foldermodels.py:304 msgid "everybody" msgstr "tous" -#: models/foldermodels.py:242 -msgid "can edit" -msgstr "peut éditer" - -#: models/foldermodels.py:243 +#: models/foldermodels.py:309 msgid "can read" msgstr "peut lire" -#: models/foldermodels.py:244 +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "peut éditer" + +#: models/foldermodels.py:325 msgid "can add children" msgstr "peut ajouter un enfant" -#: models/foldermodels.py:273 +#: models/foldermodels.py:333 msgid "folder permission" msgstr "permission du dossier" -#: models/foldermodels.py:274 +#: models/foldermodels.py:334 msgid "folder permissions" msgstr "permissions du dossier" -#: models/imagemodels.py:39 -msgid "date taken" -msgstr "date de prise de vue" +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "Le dossier ne peut pas être sélectionné avec le type \"tous les éléments\"." -#: models/imagemodels.py:42 -msgid "default alt text" -msgstr "texte alternatif par défaut" +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "Un dossier doit être sélectionné lorsque le type n'est pas \"tous les éléments\"." -#: models/imagemodels.py:43 -msgid "default caption" -msgstr "légende par défaut" +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "Un utilisateur ou un groupe ne peuvent être sélectionnés lorsque \"tout le monde\" est également sélectionné." -#: models/imagemodels.py:45 templates/image_filer/image.html:6 -msgid "author" -msgstr "auteur" +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "Au moins une option parmi un utilisateur, un groupe, ou \"tout le monde\" doit être sélectionnée." -#: models/imagemodels.py:47 -msgid "must always publish author credit" -msgstr "attribution à l'auteur toujours publiée" +#: models/foldermodels.py:360 +#| msgid "Folders" +msgid "All Folders" +msgstr "Tous les dossiers" -#: models/imagemodels.py:48 -msgid "must always publish copyright" -msgstr "copyright toujours publié" +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "Chemin logique" -#: models/imagemodels.py:50 -msgid "subject location" -msgstr "emplacement du sujet" +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "Utilisateur : {user}" -#: models/imagemodels.py:200 -msgid "image" -msgstr "image" +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "Groupe : {group}" -#: models/imagemodels.py:201 -msgid "images" -msgstr "images" +#: models/foldermodels.py:375 +#| msgid "everybody" +msgid "Everybody" +msgstr "Tout le monde" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "Modifier" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "Lire" + +#: models/foldermodels.py:390 +#| msgid "can add children" +msgid "Add children" +msgstr "Ajouter un sous-dossier" -#: models/virtualitems.py:45 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "unfiled files" -msgstr "Fichiers non classés" +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "date de prise de vue" -#: models/virtualitems.py:59 +#: models/imagemodels.py:25 +msgid "author" +msgstr "auteur" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "doit toujours publier l'attribution à l'auteur" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "doit toujours publier le droit d'auteur" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "largeur en pixels." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "hauteur en pixels." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "options de miniature" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Téléversements non triés" + +#: models/virtualitems.py:73 msgid "files with missing metadata" -msgstr "fichiers aux métadonnées manquantes" +msgstr "fichiers avec des métadonnées manquantes" -#: models/virtualitems.py:73 templates/admin/filer/breadcrumbs.html:6 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:10 +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 msgid "root" -msgstr "Dossier racine" +msgstr "racine" + +#: settings.py:273 +msgid "Show table view" +msgstr "Voir la vue en liste" + +#: settings.py:278 +#| msgid "thumbnail option" +msgid "Show thumbnail view" +msgstr "Voir la vue avec des miniatures" -#: templates/admin/filer/actions.html:4 +#: templates/admin/filer/actions.html:5 msgid "Run the selected action" msgstr "Exécuter l'action sélectionnée" -#: templates/admin/filer/actions.html:4 +#: templates/admin/filer/actions.html:5 msgid "Go" msgstr "Envoyer" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 msgid "Click here to select the objects across all pages" msgstr "Cliquez ici pour sélectionner tous les objets sur l'ensemble des pages" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 #, python-format msgid "Select all %(total_count)s files and/or folders" msgstr "Sélectionner tous les %(total_count)s fichiers et/ou dossiers" -#: templates/admin/filer/actions.html:13 +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 msgid "Clear selection" msgstr "Effacer la sélection" #: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 msgid "Go back to admin homepage" -msgstr "Retourner à la page d'accueil de l'administrateur." +msgstr "Retourner à la page d'accueil de l'administration" #: templates/admin/filer/breadcrumbs.html:4 -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 msgid "Home" msgstr "Accueil" #: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 msgid "Go back to Filer app" msgstr "Revenir à l'application Filer" -#: templates/admin/filer/breadcrumbs.html:5 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/image_filer/image_export_form.html:8 -msgid "Filer" -msgstr "Filer" - #: templates/admin/filer/breadcrumbs.html:6 -#: templates/image_filer/image_export_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Go back to root folder" -msgstr "Retourner au dossier racine" +msgstr "Revenir au dossier racine" #: templates/admin/filer/breadcrumbs.html:8 -#: templates/admin/filer/breadcrumbs.html:11 -#: templates/admin/filer/folder/change_form.html:11 -#: templates/image_filer/image_export_form.html:12 -#: templates/image_filer/image_export_form.html:14 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 #, python-format msgid "Go back to '%(folder_name)s' folder" -msgstr "Retourner au dossier « %(folder_name)s »" +msgstr "Revenir au dossier « %(folder_name)s »" -#: templates/admin/filer/change_form.html:28 -msgid "duplicates" -msgstr "doublons" - -#: templates/admin/filer/delete_confirmation.html:13 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquerait la " -"suppression d'objets liés, mais votre compte ne possède pas la permission de " -"supprimer les types d'objets suivants :" - -#: templates/admin/filer/delete_confirmation.html:21 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " -"following protected related objects:" -msgstr "" -"Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquerait la " -"suppression des objets qui lui sont liés, mais votre compte ne possède pas " -"la permission de supprimer les types d'objets suivants :" - -#: templates/admin/filer/delete_confirmation.html:29 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"Voulez vous vraiment supprimer l'objet %(object_name)s « %(escaped_object)s " -"» ? Les éléments suivants sont liés à celui-ci et seront aussi supprimés :" - -#: templates/admin/filer/delete_confirmation.html:34 -#: templates/admin/filer/delete_selected_files_confirmation.html:45 -msgid "Yes, I'm sure" -msgstr "Oui, je suis sûr(e)." +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicatas" #: templates/admin/filer/delete_selected_files_confirmation.html:11 msgid "" "Deleting the selected files and/or folders would result in deleting related " "objects, but your account doesn't have permission to delete the following " "types of objects:" -msgstr "" -"Supprimer les fichier et/ou dossiers sélectionnés provoquerait la " -"suppression d'objets liés, mais votre compte ne possède pas la permission de " -"supprimer les types d'objets suivants :" +msgstr "Supprimer les fichiers et/ou dossiers sélectionnés devrait provoquer la suppression des objets liés, mais votre compte n'a pas les permissions nécessaires pour supprimer les types d'objets suivants :" #: templates/admin/filer/delete_selected_files_confirmation.html:19 msgid "" "Deleting the selected files and/or folders would require deleting the " "following protected related objects:" -msgstr "" -"Supprimer les fichiers et/ou dossiers provoquerait la suppression des " -"objetsliés protégés suivants :" +msgstr "Supprimer les fichiers et/ou dossiers provoquera la suppression des objets liés protégés suivants :" #: templates/admin/filer/delete_selected_files_confirmation.html:27 msgid "" "Are you sure you want to delete the selected files and/or folders? All of " "the following objects and their related items will be deleted:" -msgstr "" -"Voulez vous vraiment supprimer l'objet les fichiers et/ou dossiers " -"sélectionnés ? Les éléments suivants sont liés à celui-ci et seront aussi " -"supprimés :" +msgstr "Voulez-vous vraiment supprimer les fichiers et/ou dossiers sélectionnés ? Tous les objets suivants et leurs éléments liés seront supprimés :" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:7 -#: templates/image_filer/image_export_form.html:8 -#: templates/image_filer/image_export_form.html:16 -msgid "Go back to" -msgstr "Retourner à" +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Non, faites-moi revenir" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 -msgid "admin homepage" -msgstr "page d'accueil de l'administrateur" +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Oui, je suis sûr" -#: templates/admin/filer/folder/change_form.html:22 -#: templates/admin/filer/image/change_form.html:9 +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 msgid "History" msgstr "Historique" +#: templates/admin/filer/file/change_form.html:37 #: templates/admin/filer/folder/change_form.html:23 -#: templates/admin/filer/image/change_form.html:10 +#: templates/admin/filer/image/change_form.html:37 msgid "View on site" msgstr "Voir sur le site" -#: templates/admin/filer/folder/change_form.html:35 -#: templates/admin/filer/folder/directory_listing.html:75 -#: templates/admin/filer/folder/directory_listing.html:85 -#: templates/admin/filer/folder/directory_table.html:23 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Retourner à" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "page d'accueil de l'administrateur" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 msgid "Folder Icon" msgstr "Icône du dossier" -#: templates/admin/filer/folder/choose_copy_destination.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:23 msgid "" -"Your account doesn't have permissions to copy all of the selected files and/" -"or folders." -msgstr "" -"Votre compte n'a pas les permissions nécessaires pour copier tous lesfichers " -"et/ou dossiers sélectionnés." - -#: templates/admin/filer/folder/choose_copy_destination.html:15 -#: templates/admin/filer/folder/choose_move_destination.html:15 +"Your account doesn't have permissions to copy all of the selected files " +"and/or folders." +msgstr "Votre compte n'a pas les permissions nécessaires pour copier tous les fichiers et/ou dossiers sélectionnés." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Retour" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 msgid "There are no destination folders available." msgstr "Aucun dossier de destination disponible." -#: templates/admin/filer/folder/choose_copy_destination.html:18 +#: templates/admin/filer/folder/choose_copy_destination.html:35 msgid "There are no files and/or folders available to copy." -msgstr "Aucun fichier ou dossier n'estss disponible à copier." +msgstr "Aucun fichier ou dossier n'est disponible à copier." -#: templates/admin/filer/folder/choose_copy_destination.html:20 +#: templates/admin/filer/folder/choose_copy_destination.html:40 msgid "" "The following files and/or folders will be copied to a destination folder " "(retaining their tree structure):" -msgstr "" -"Les fichiers et/ou dossiers suivants seront copiés vers un dossier de " -"destination (en conservant leur arborescence) :" +msgstr "Les fichiers et/ou dossiers suivants seront copiés vers un dossier de destination (en conservant leur arborescence) :" -#: templates/admin/filer/folder/choose_copy_destination.html:32 -#: templates/admin/filer/folder/choose_move_destination.html:32 +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 msgid "Destination folder:" msgstr "Dossier de destination :" -#: templates/admin/filer/folder/choose_copy_destination.html:39 +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 msgid "Copy" msgstr "Copier" -#: templates/admin/filer/folder/choose_images_resize_options.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Il est impossible de copier des fichiers dans le même dossier" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 msgid "" "Your account doesn't have permissions to resize all of the selected images." -msgstr "" -"Votre compte na pas les permissions necessaires pour redimensionner toutes " -"les images sélectionnées." +msgstr "Votre compte na pas les permissions nécessaires pour redimensionner toutes les images sélectionnées." -#: templates/admin/filer/folder/choose_images_resize_options.html:15 +#: templates/admin/filer/folder/choose_images_resize_options.html:18 msgid "There are no images available to resize." msgstr "Il n'y a aucune image disponible à redimensionner." -#: templates/admin/filer/folder/choose_images_resize_options.html:17 +#: templates/admin/filer/folder/choose_images_resize_options.html:20 msgid "The following images will be resized:" msgstr "Les images suivantes seront redimensionnées :" -#: templates/admin/filer/folder/choose_images_resize_options.html:30 -msgid "Choose an existing thumbnail option or enter resize parameters:" -msgstr "" -"Choisissez une option de miniature ou entrez des paramètres de " -"redimensionnement :" - #: templates/admin/filer/folder/choose_images_resize_options.html:32 -msgid "Choose resize parameters:" -msgstr "Choisissez des paramètres de redimensionnement :" +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "Choisissez une option de miniature existante ou entrez des paramètres de redimensionnement :" -#: templates/admin/filer/folder/choose_images_resize_options.html:35 +#: templates/admin/filer/folder/choose_images_resize_options.html:36 msgid "" "Warning: Images will be resized in-place and originals will be lost. Maybe " "first make a copy of them to retain the originals." -msgstr "" -"Avertissement : Le redimensionnement des images écrasera les originaux. " -"Faites en éventuellement une copie afin de conserver les originaux." +msgstr "Avertissement : Les images seront redimensionnées en place et les originales seront perdues. Faites-en éventuellement une copie préalable afin de les conserver." -#: templates/admin/filer/folder/choose_images_resize_options.html:36 +#: templates/admin/filer/folder/choose_images_resize_options.html:39 msgid "Resize" msgstr "Redimensionner" -#: templates/admin/filer/folder/choose_move_destination.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:35 msgid "" -"Your account doesn't have permissions to move all of the selected files and/" -"or folders." -msgstr "" -"Votre compte n'a pas les permissions nécessaires pour déplacer tous les " -"fichiers et/ou dossiers sélectionnés." +"Your account doesn't have permissions to move all of the selected files " +"and/or folders." +msgstr "Votre compte n'a pas les permissions nécessaires pour déplacer tous les fichiers et/ou dossiers sélectionnés." -#: templates/admin/filer/folder/choose_move_destination.html:18 +#: templates/admin/filer/folder/choose_move_destination.html:47 msgid "There are no files and/or folders available to move." -msgstr "Il n'y a pas de fichiers et/ou de dossiers disponibles à déplacer." +msgstr "Il n'y a pas de fichiers et/ou dossiers disponibles à déplacer." -#: templates/admin/filer/folder/choose_move_destination.html:20 +#: templates/admin/filer/folder/choose_move_destination.html:52 msgid "" "The following files and/or folders will be moved to a destination folder " "(retaining their tree structure):" -msgstr "" -"Les fichiers et/ou dossiers suivants seront déplacés vers un dossier de " -"destination (en conservant leur arborescence) :" +msgstr "Les fichiers et/ou dossiers suivants seront déplacés vers un dossier de destination (en conservant leur arborescence) :" -#: templates/admin/filer/folder/choose_move_destination.html:38 +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 msgid "Move" msgstr "Déplacer" -#: templates/admin/filer/folder/choose_rename_format.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Il est impossible de déplacer des fichiers dans le même dossier" + +#: templates/admin/filer/folder/choose_rename_format.html:15 msgid "" "Your account doesn't have permissions to rename all of the selected files." -msgstr "" -"Votre compte n'a pas les permissions nécessaires pour renommer tous les " -"fichiers sélectionnés." +msgstr "Votre compte n'a pas les permissions nécessaires pour renommer tous les fichiers sélectionnés." -#: templates/admin/filer/folder/choose_rename_format.html:15 +#: templates/admin/filer/folder/choose_rename_format.html:18 msgid "There are no files available to rename." msgstr "Il n'y a pas de fichiers disponibles à renommer." -#: templates/admin/filer/folder/choose_rename_format.html:17 +#: templates/admin/filer/folder/choose_rename_format.html:20 msgid "" "The following files will be renamed (they will stay in their folders and " "keep original filename, only displayed filename will be changed):" -msgstr "" -"Les fichiers suivants seront renommés (ils resteront dans leurs dossiers et " -"conserveront leur nom de fichier d'origine ; seul le nom affiché sera " -"changé) :" +msgstr "Les fichiers suivants seront renommés (ils resteront dans leurs dossiers et conserveront leur nom de fichier d'origine ; seul le nom affiché sera changé) :" -#: templates/admin/filer/folder/choose_rename_format.html:54 +#: templates/admin/filer/folder/choose_rename_format.html:59 msgid "Rename" msgstr "Renommer" -#: templates/admin/filer/folder/directory_listing.html:66 -msgid "Adds a new Folder" -msgstr "Ajoute un nouveau Dossier" +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Retourner au dossier parent" -#: templates/admin/filer/folder/directory_listing.html:66 -#: templates/image_filer/include/export_dialog.html:34 -msgid "New Folder" -msgstr "Nouveau Dossier" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Modifier les détails du dossier actuel" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "upload files" -msgstr "transférer des fichiers" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Modifier" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "Upload" -msgstr "Transférer" +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Cliquez ici pour lancer la recherche pour la phrase saisie" -#: templates/admin/filer/folder/directory_listing.html:74 -msgid "Go back to the parent folder" -msgstr "Retourner au dossier parent" +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Rechercher" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:18 -#, python-format -msgid "1 folder" -msgid_plural "%(counter)s folders" -msgstr[0] "1 dossier" -msgstr[1] "%(counter)s dossiers" +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Fermer" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:19 -#, python-format -msgid "1 file" -msgid_plural "%(counter)s files" -msgstr[0] "1 fichier" -msgstr[1] "%(counter)s fichiers" +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limite" -#: templates/admin/filer/folder/directory_listing.html:80 -msgid "Change current folder details" -msgstr "Modifie les détails du dossier courant" +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Cochez pour limiter la recherche au dossier actuel" -#: templates/admin/filer/folder/directory_listing.html:80 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:43 -msgid "Change" -msgstr "Modifier" +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Limiter la recherche au dossier actuel" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Supprimer" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Ajoute un nouveau dossier" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Nouveau dossier" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Téléverser des fichiers" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Vous devez d'abord sélectionner un dossier" -#: templates/admin/filer/folder/directory_table.html:13 +#: templates/admin/filer/folder/directory_table_list.html:16 msgid "Name" msgstr "Nom" -#: templates/admin/filer/folder/directory_table.html:23 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:29 +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Propriétaire" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Taille" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Action" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 #, python-format msgid "Change '%(item_label)s' folder details" msgstr "Modifier les détails du dossier « %(item_label)s »" -#: templates/admin/filer/folder/directory_table.html:30 -#: templates/admin/filer/folder/directory_table.html:45 -msgid "Owner" -msgstr "Propriétaire" +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s folder" +msgstr[1] "%(counter)s folders" +msgstr[2] "%(counter)s folders" -#: templates/admin/filer/folder/directory_table.html:37 +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s fichier" +msgstr[1] "%(counter)s fichiers" +msgstr[2] "%(counter)s fichiers" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Changer les détails du dossier" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Supprimer le dossier" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 msgid "Select this file" msgstr "Sélectionner ce fichier" -#: templates/admin/filer/folder/directory_table.html:39 -#: templates/admin/filer/folder/directory_table.html:43 -#: templates/admin/filer/folder/directory_table.html:44 +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 #, python-format msgid "Change '%(item_label)s' details" msgstr "Change les détails de « %(item_label)s »" -#: templates/admin/filer/folder/directory_table.html:42 -#, python-format -msgid "Delete '%(item_label)s'" -msgstr "Supprimer « %(item_label)s »" - -#: templates/admin/filer/folder/directory_table.html:42 -msgid "Delete" -msgstr "Supprimer" - -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "Permissions" msgstr "Permissions" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "disabled" msgstr "désactivé" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "enabled" msgstr "activé" -#: templates/admin/filer/folder/directory_table.html:50 -msgid "Move to clipboard" -msgstr "Déplacer vers le presse-papiers" +#: templates/admin/filer/folder/directory_table_list.html:144 +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "L'URL a été copiée dans le presse-papier" -#: templates/admin/filer/folder/directory_table.html:58 -msgid "there are no files or subfolders" -msgstr "il n'y a pas de fichiers ou de sous-dossiers" +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Canonical url '%(item_label)s'" +msgstr "url canonique '%(item_label)s' " -#: templates/admin/filer/folder/directory_table.html:65 +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Download '%(item_label)s'" +msgstr "Télécharger '%(item_label)s' " + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Supprimer le fichier" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Déposez des fichiers ici ou utilisez le bouton « Téléverser des fichiers »" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Déposez votre fichier à téléverser dans :" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Téléverser" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "annuler" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Téléversement réussi !" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Téléversement annulé !" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 msgid "previous" msgstr "précédent" -#: templates/admin/filer/folder/directory_table.html:69 +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 #, python-format -msgid "" -"\n" -" Page %(number)s of %(num_pages)s.\n" -" " -msgstr "" -"\n" -" Page %(number)s de %(num_pages)s.\n" -" " +msgid "Page %(number)s of %(num_pages)s." +msgstr "Page %(number)s sur %(num_pages)s." -#: templates/admin/filer/folder/directory_table.html:75 +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 msgid "next" msgstr "suivant" +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Sélectionner les %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +#| msgid "Select this file" +msgid "Select all" +msgstr "Tout sélectionner" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +#| msgid "Filer" +msgid "Files" +msgstr "Fichiers" + #: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 msgid "Add new" -msgstr "Ajouter nouveau" +msgstr "Ajouter un nouveau" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Django site admin" -#: templates/admin/filer/folder/new_folder_form.html:13 +#: templates/admin/filer/folder/new_folder_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Veuillez corriger l'erreur suivante." msgstr[1] "Veuillez corriger les erreurs suivantes." +msgstr[2] "Veuillez corriger les erreurs suivantes." -#: templates/admin/filer/folder/new_folder_form.html:28 +#: templates/admin/filer/folder/new_folder_form.html:30 msgid "Save" msgstr "Sauvegarder" -#: templates/admin/filer/image/change_form.html:21 -msgid "Full size preview" -msgstr "Afficher en pleine taille" +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "Votre navigateur ne supporte pas l'audio." -#: templates/admin/filer/tools/search_form.html:8 -#: templates/admin/filer/tools/search_form.html:14 -msgid "Search" -msgstr "Rechercher" +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "Votre navigateur ne supporte pas la vidéo." + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Presse-papiers" -#: templates/admin/filer/tools/search_form.html:13 -msgid "Enter your search phrase here" -msgstr "Entrez votre phrase de recherche ici" +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Coller tous les éléments ici" -#: templates/admin/filer/tools/search_form.html:14 -msgid "Click here to" -msgstr "Cliquez ici pour" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Déplacer tous les fichiers du presse-papiers vers" -#: templates/admin/filer/tools/search_form.html:14 -msgid "run search for entered phrase" -msgstr "lancer votre recherche" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Vider le presse-papiers" -#: templates/admin/filer/tools/search_form.html:15 -msgid "Check it to" -msgstr "Cochez pour" +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "Le presse-papiers est vide" -#: templates/admin/filer/tools/search_form.html:15 -#: templates/admin/filer/tools/search_form.html:16 -msgid "limit the search to current folder" -msgstr "Limiter la recherche au dossier courant" +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "transfert échoué" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "Télécharger" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "Agrandir" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +#| msgid "file missing" +msgid "File is missing" +msgstr "Le fichier est manquant" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Type" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Taille de fichier" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modifié" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Créé" + +#: templates/admin/filer/tools/search_form.html:5 msgid "found" msgstr "trouvé :" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/search_form.html:5 msgid "and" msgstr "et" -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/tools/search_form.html:7 msgid "cancel search" msgstr "annuler la recherche" -#: templates/admin/filer/tools/upload_button_js.html:24 -#: templates/admin/filer/widgets/admin_file.html:7 -#: templates/admin/filer/widgets/admin_file.html:8 -msgid "file missing" -msgstr "fichier manquant" +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Effacer" -#: templates/admin/filer/tools/clipboard/clipboard.html:7 -msgid "Clipboard" -msgstr "Presse-papiers" +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "ou déposez votre fichier ici" -#: templates/admin/filer/tools/clipboard/clipboard.html:19 -msgid "Paste all items here" -msgstr "Coller tous les éléments ici" +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "pas de fichier sélectionné" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "discard" -msgstr "Vider" +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Recherche" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "Move all clipboard files to" -msgstr "Déplacer tous les fichiers du presse-papiers vers" +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Sélectionner un fichier" -#: templates/admin/filer/tools/clipboard/clipboard.html:43 -msgid "the clipboard is empty" -msgstr "Le presse-papiers est vide" +#: templates/admin/filer/widgets/admin_folder.html:16 +#| msgid "Choose File" +msgid "Choose Folder" +msgstr "Choisissez un dossier" -#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:11 -msgid "upload failed" -msgstr "transfert échoué" +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "Fichier \"{file_name}\" : Hébergement refusé par la politique de sécurité du site" -#: templates/admin/filer/widgets/admin_file.html:11 -msgid "no file selected" -msgstr "pas de fichier sélectionné" +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "Fichier \"{file_name}\" : hébergement de {file_type} refusé par la politique de sécurité du site" -#: templates/admin/filer/widgets/admin_file.html:14 -#: templates/admin/filer/widgets/admin_file.html:15 -#: templates/admin/filer/widgets/admin_folder.html:7 -#: templates/admin/filer/widgets/admin_folder.html:8 -msgid "Lookup" -msgstr "Recherche" +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "Fichier \"{file_name}\" : hébergement HTML refusé par la politique de sécurité du site" -#: templates/admin/filer/widgets/admin_file.html:17 -#: templates/admin/filer/widgets/admin_folder.html:10 -msgid "Clear" -msgstr "Effacer" +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "Fichier \"{file_name}\" : Rejeté à cause d'une potentielle vulnérabilité de cross-site scripting" -#: templates/admin/filer/widgets/admin_folder.html:5 -msgid "none selected" -msgstr "aucune sélection" +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "Fichier \"{file_name}\": le format de fichier SVG n'est pas reconnu" -#: templates/image_filer/folder.html:3 -#, python-format -msgid "Folder '%(folder_label)s' files" -msgstr "Fichiers du dossier « %(folder_label)s »" +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." -#: templates/image_filer/folder.html:6 -msgid "File name" -msgstr "Nom de fichier" +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" -#: templates/image_filer/image_export_form.html:17 -msgid "export" -msgstr "exporter" +#~ msgid "Open file" +#~ msgstr "Open file" -#: templates/image_filer/image_export_form.html:27 -msgid "download image" -msgstr "télécharger l'image" +#~ msgid "Full size preview" +#~ msgstr "Full size preview" -#: templates/image_filer/include/export_dialog.html:13 -msgid "Folder name already taken." -msgstr "Nom de dossier déjà utilisé." +#~ msgid "Add Description" +#~ msgstr "Add Description" -#: templates/image_filer/include/export_dialog.html:15 -msgid "Submit" -msgstr "Envoyer" +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/gl/LC_MESSAGES/django.mo b/filer/locale/gl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..888daadd0596b0d71d05004539e98552863b1cfe GIT binary patch literal 3830 zcmbW3O^h5z6~_w_6S5fc!G|GWC?_QBV$aU5!^UPdn_#bPVu9n8W4v!LJMbRFie~iBWok~3c|8ol;w8!=-wFJ+?55jN3cf%|2z3|8I zUifqP5%~M|`Azsyp7*~?DgM+fAGg6SJOqzHS^qUC??2DOYj5mcTo1Z3O@wj zf(vjT#%_lXL2>nSkSTQv-U+_|#m`GEEtK^+d>`C^cfjw!8Tf;iKY_RM{EPPaS5WM| z3}yXm@ICN#DE9saW&OX}=WCGA)h%o;{@f1lf_K8Z;k{7ims&1EiR%QE^IU&`)ok5_f05vzSoXlf%owI43zkO4aM(Q+xb62vGW&*i|ViK_*+oy{1f)yq0}`f zwQz}~h`k>{hSZBt?7jj&4PS!?;Wc;|9>BOfuR^hJpuFdx)K7p?Uq6NN{%_$C_%{4F zJh;E9uZN+my8vaKhs*F8DEa#n#7*@k6u|z2xY&OcKjri^M4EyiaOuUUxMPdf#S#IcKq8=?0grBpFe|gUtVtK{{U;hp!j>W z0(droa{eo;=@DqqxAdfN9doVOOtyd zvCY#zMVIpyZIJjUO=?8y^*;Jxx}1SDsYPj06XJJ|F8Pt#kS2FW+5%nj^Dv#1*G6=b2Xg^>!+3`xcZt_Il4OVaZO2;bLN7bsyb6@Hd%ca!=m)WRI zo_2lE1D~ZfM78RR%{^u&PVK(r)EZ0jqWblHG?y}Wx zY=$;Yo~E0(!%tL6Vq+XsS+=RiIG)Ox)CZZisk(mmd1W|LSK4t@4NC zLeeoN6Q=ZGQv;($)(uCcsuSFNMm6@S8@MJEDI4X38@k+Nb&i{nr*j)r9GOK`j$Ev> zAvIoaF-`3Dl+UwGR#xMFZd|5)6Kc6xSXC97H)*q5Rm8*)bQQ7wv`fp8S_}RuE@5s_jB_{J>MMZWlS~KqH&vTa& zNBPW-%ChKnyQV1SOL^A~?8bcJ$KBMeJKt>_?8pIzZq^#<4zupu)MQT&vzc>e&z;^5 zYjJ*IX4U7V&GCrT^y*^i7MXGRGUaMQwB^c|E}rQe-(DxX4{Ye1&J&I;ANKU|zAIbGl#wrIUNO zt&P*E6X@e*tfj>xvok; zWY!~6W3%;3VnZSjf(-$!lKTb+<$?kbW&5lcz5(mXxdosO5D3e$4t znU$9)H!CvjgOb|NHXoYQ@w4f&jJakEr8ez6*NeevCe*}?PH)K2bet62IC1^UBH&DW zMGRsyh=dy@g3Yg3R@#sol2;obl>;L6DznI`oW^vd(enBnR2`pc!&lQhW3DOo$rQgH zZTU5VE@v^h0;(Ot_w6wXvygi=3{~NAG1t>nin^22KAJ6p=Exh)dlB~y+k8$WK562W zf>w1^6MpNN=FJV!d{yvc=D3PjY6Ra#4tJVqe&Z&G*q&0{dO_c?M){&CO9B|X+?f(> dQl-Q5SoOI<+9)$FGO7{fuj-xnziQ;we*ur<)HMJA literal 0 HcmV?d00001 diff --git a/filer/locale/gl/LC_MESSAGES/django.po b/filer/locale/gl/LC_MESSAGES/django.po new file mode 100644 index 000000000..57767645d --- /dev/null +++ b/filer/locale/gl/LC_MESSAGES/django.po @@ -0,0 +1,1228 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Pablo, 2015 +# Pablo, 2015 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Pablo, 2015\n" +"Language-Team: Galician (http://app.transifex.com/divio/django-filer/" +"language/gl/)\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Avanzado" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s seleccionados" +msgstr[1] "Os %(total_count)s seleccionados" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 de %(cnt)s seleccionados" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Ningunha acción seleccionada." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Movéronse correctamente %(count)d arquivos ao portapapeis." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Mover arquivos seleccionados ao portapapeis." + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Non se poden borrar arquivos e/ou carpetas" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Estás seguro?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Borrar arquivos e/ou carpetas" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Mover alquivos e/ou carpetas" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Mover arquivos e/ou carpetas seleccionados" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Copiar arquivos e/ou carpetas" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Copiar arquivos e/ou carpetas seleccionados" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Cambiar o tamaño das imaxes" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Cambiar o tamaño das imaxes seleccionadas" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Formato para o cambio de nome non válido: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "opción da miniatura" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "ancho" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "alto" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "recortar" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "ampliar" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "texto alternativo por defecto" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "lenda por defecto" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "imaxe" + +#: models/abstract.py:92 +msgid "images" +msgstr "imaxes" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "usuario" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "arquivos" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "portapapeis" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "portapapeis" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "arquivo" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "elemento do portapapeis" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "elementos do portapapeis" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "carpeta" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "tamaño do arquivo" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "ten todos os datos obrigatorios" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "nome do arquivo orixinal" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "nome" + +#: models/filemodels.py:116 +msgid "description" +msgstr "descrición" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "propietario" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "subido a" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "modificado o" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Permisos desactivados" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "creado o" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Carpeta" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Carpetas" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "todos os elementos" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "só este elemento" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "este elemento e todos os fillos" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tipo" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "grupo" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "todos" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "pode ler" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "pode editar" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "pode engadir fillos" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "permiso da carpeta" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "permisos da carpeta" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "data" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Mover arquivos seleccionados ao portapapeis." + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "atopado" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "e" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/he/LC_MESSAGES/django.mo b/filer/locale/he/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..f1dc779e008cd6f070e6a35a9596e6298ed45a02 GIT binary patch literal 14347 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\n" +"Language-Team: Hebrew (http://app.transifex.com/divio/django-filer/language/" +"he/)\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % " +"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "מתקדם" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "יש לבחור פריטים על מנת לבצע עליהם פעולות. לא בוצעו פעולות." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "אחד נבחר" +msgstr[1] "כל ה-%(total_count)s נבחרו" +msgstr[2] "כל ה-%(total_count)s נבחרו" +msgstr[3] "כל ה-%(total_count)s נבחרו" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 מתוך %(cnt)s נבחרו" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "לא נבחרה פעולה." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "הועברו בהצלחה %(count)d קבצים ללוח" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "העבר קבצים שנבחרו ללוח" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "בוטלו בהצלחה הרשאות עבור %(count)d קבצים." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "אופשרו בהצלחה הרשאות עבור %(count)d קבצים." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "אופשרו הרשאות עבור קבצים בחורים" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "בוטלו הרשאות עבור קבצים בחורים" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "נמחקו בהצלחה %(count)d קבצים ו/או תיקיות." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "לא ניתן למחוק קבצים ו/או תיקיות" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "האם את/ה בטוח/ה?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "מחק קבצים ו/או תיקיות" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "מחק קבצים ו/או תיקיות בחורים" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "הועברו בהצלחה %(count)d קבצים ו/או תיקיות לתיקיה '%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "העבר קבצים ו/או תיקיות" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "העבר קבצים ו/או תיקיות בחורים" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "שונו בהצלחה שמותיהם של %(count)d קבצים." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "שנה שמות קבצים" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "הועתקו בהצלחה %(count)d קבצים ו/או תיקיות לתיקיה '%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "העתק קבצים ו/או תיקיות" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "העתק קבצים ו/או תיקיות בחורים" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "שונה בהצלחה גודלם של %(count)d תמונות." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "שנה גודל תמונות" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "שנה גודל תמונות בחורות" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "סיומת אשר תתווסף לשמות קבצים שהועתקו." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "על הסיומת להיות תקינה, פשוטה ובאותיות קטנות, כגון \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "ערך מפתח תבנית שינוי השם \"%(key)s\". אינו חוקי." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "תבנית שינוי שם לא תקינה: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "אפשרות תמונה ממוזערת" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "רוחב" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "גובה" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "חיתוך" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "הגדל" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "עליך לבחור אפשרות תמונה ממוזערת או פרמטרי שינוי גודל." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "מיקום נושא" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "תיקיה בשם זה כבר קיימת." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "טקסט חלופי ברירת מחדל" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "כותרת ברירת מחדל" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "מיקום נושא" + +#: models/abstract.py:91 +msgid "image" +msgstr "תמונה" + +#: models/abstract.py:92 +msgid "images" +msgstr "תמונות" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "משתמש" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "קבצים" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "לוח" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "לוחות" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "קובץ" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "פריט לוח" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "פריטי לוח" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "תיקיה" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "גודל קובץ" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "כל המידע הנחוץ קיים" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "שם קובץ מקורי" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "שם" + +#: models/filemodels.py:116 +msgid "description" +msgstr "תיאור" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "בעלים" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "הועלה ב-" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "שונה ב-" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "הרשאות בוטלו" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "נוצר ב-" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "תיקיה" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "תיקיות" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "כל הפריטים" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "פריט זה בלבד" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "פריט זה וכל ילדיו" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "סוג" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "קבוצה" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "כל אחד" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "רשאי לקרוא" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "רשאי לערוך" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "רשאי להוסיף ילדים" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "הרשאת תיקיה" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "הרשאות תיקיה" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "תאריך צילום" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "מחבר" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "חייב תמיד לפרסם קרדיט מחבר" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "חייב תמיד לפרסם זכויות יוצרים" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "קבצים עם מטה נתונים חסרים" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "שורש" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "הרץ את הפעולה הבחורה" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "בצע" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "לחץ כאן כדי לבחור את האובייקטים על פני כל הדפים" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "בחר את כל ה- %(total_count)s קבצים ו/או התיקיות" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "נקה בחירה" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "חזור לדף הניהול הראשי" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "בית" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "חזור לאפליקציית Filer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "חזור לתיקיית השורש" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "חזור לתיקיה '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"עבור מחיקת הקבצים ו/או התיקיות הבחורים יש צורך למחוק אובייקטים מקושרים, אך " +"לחשבונך אין הרשאות למחוק אובייקטים מהסוגים הבאים:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"עבור מחיקת הקבצים ו/או התיקיות הבחורים יש צורך למחוק את האובייקטים המוגנים " +"הבאים:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"האם את/ה בטוח/ה שברצונך למחוק את הקבצים ו/או התיקיות הבחורים? כל הפריטים " +"המקושרים יימחקו:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "היסטוריה" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "צפה בתוך האתר" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "חזור ל-" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "דף הניהול הראשי" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "צלמית תיקייה" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "לחשבונך אין רשות להעתיק את כל הקבצים ו/או התיקיות הבחורים." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "אין תיקיות יעד זמינות." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "אין קבצים ו/או תיקיות זמינים להעתקה." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"הקבצים ו/או התיקיות הבאים יועתקו לתיקיית יעד (תוך שמירה על מבנה העץ שלהם):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "תיקיית יעד:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "העתק" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "לחשבונך אין רשות לשנות גודלן של כל התמונות הבחורות." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "אין תמונות זמינות לשינוי גודלן." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "התמונות הבאות ישונה גודלן:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "בחר אפשרות תמונה ממוזערת קיימת או הזן פרמטרי שינוי גודל:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"הזהרה: התמונות ישונה גודלן במקום והמקוריות יאבדו. אולי ראשית עשה/י העתק שלהם " +"כדי לשמור על המקויות." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "שנה גודל" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "לחשבונך אין רשות להעביר את כל הקבצים ו/או התיקיות הבחורים." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "אין קבצים ו/או תיקיות זמינים להעברה." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"הקבצים ו/או התיקיות הבאים יועברו לתיקיית יעד (תוך שמירה על מבנה העץ שלהם):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "העבר" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "לחשבונך אין רשות לשנות שמם של כל הקבצים הבחורים." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "אין קבצים זמינים לשינוי שמם." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"הקבצים הבאים ישונו שמותיהם (הם יישארו בתיקיות הנוכחיות שלהם ושמם המקורי " +"יישאר - רק שמות התצוגה שלהם ישונו):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "שנה שם" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "חזור לתיקיה ההורה" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "שנה פרטי תיקיה נוכחית" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "שנה" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "חיפוש" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "מחק" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "מוסיף תיקיה חדשה" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "תיקיה חדשה" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "שם" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "בעלים" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "שנה פרטי תיקיה של '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "בחר קובץ זה" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "שנה פרטים של '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "הרשאות" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "מבוטל" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "מאופשר" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "העבר קבצים שנבחרו ללוח" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "העלאה" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "הקודם" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "הבא" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "הוסף חדש" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "אנא תקן/י את הטעות מטה." +msgstr[1] "אנא תקן/י את הטעויות מטה." +msgstr[2] "אנא תקן/י את הטעויות מטה." +msgstr[3] "אנא תקן/י את הטעויות מטה." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "שמור" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "לוח" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "הדבק את כל הפריטים כאן" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "העבר את כל קבצי הלוח ל-" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "הלוח ריק" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "העלאה נכשלה" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "נמצא" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "וגם" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "בטל חיפוש" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "נקה" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "אף קובץ לא נבחר" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "חיפוש" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/hr/LC_MESSAGES/django.mo b/filer/locale/hr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..8a2e68474613297f6ccfcecc9525d28fd93f6278 GIT binary patch literal 13374 zcmcJU35;FUd4Nv{OBj|010j&M92VO%!Lu0*^qIkc!7vzmj5o5Bz@7K*%)4*7_i>ju z%mg{P-+vr99{}% z;5pET7r{1s8~hM_5u~0 zGkK7%+z9EKx(!|q?}AeQLs05}9KH*F0$vNh1RL-#;jhC@Z&&JK_zGMLe+Z=?moW%= zz7WqI*K44ZzYWSb z?txdq9q<7dL236}?)$f)jOS%2^}PmVyyr3q4L3lkX9tvi?1ucQ2l__7d=1KczMsxK1z&2UY&rF|16AFzMl`}c@30)TnP~It|2`<~`B3`x7(4`@fYR@a8RP_93q{WR;ad1G9D^T+qIX||_rq79 z)H9Cp%DmkSuZQ|C)Qh24@rV{Z{xQ{9P#hzwcV> z_hzBAe-KK)eh139zXL_T{sGE3UWM!6kD2|opCTKy@M{I5d()FpIY`mq^`ytY6Y z-wZql`cU+s?Vg{6xES>e^x>DFv~wPv7k$3eaTsFSYBNM+Y9AE8wg}IL&pIB4H}m{? zDD{39ioAXR#V`ESeScuY`m<-C%;!t+{qQI5{eGMbf9h#|#4r6myc>QWiXXaxN$$cX zT!P<&&%y^c*!-_ShN7-TI5)xj;4i?B!Oid}lz#pMPQ&X_zT4mdcn&-YMUP*CUx%+i z>HqWN_zd`cxD#$inYY6ip@y%*A$Sgx^cJ`Vo&_&~qOVs#nU^sre)Co+a@-Ez2CMMx zu;q9Fp3Czm-S@*#`ga6g2!9hw`9FZTZ1p$rO!yyA>OTRcKmQFyFV5a*+Zlo~zZbjb zbr6+P<52SNgKOZ!Q2L#?_XnYj=Q${PeHhC8f6cxBhU1?>Y5y-EQ>wn>_){qT7-7<- zolz+Lzu9pYl=0P}jJpFR-x8E@JpnI*PeHM#UxhMHe*{IYf9v?qP}=z+6uJBeo(C^P znbyE7pvZd^N_#g#nXd)XA<{OI*pt-#5Gf)_dy@A-l3a+?ToQkYE{Q%oLc%qwM@e$s zK|&SPEu`m2B4b2guBZ7Goxj~as?S1Al5y`NiG1aHl5_^?&)ivmaWVJ9B+&u6YNTHx ziHtMSZqofE(E&`RxDdCo;}60QySJZ&`$--5T!%YIV&9AIonX%0zZZ%v=GRm1<{G%( z-9Hb-o_>)uMS7Sd*Skm`A#EbDG?=yQGf;F)u1hS8jmd3Fx|8%CdEk16w9DMtpO1nA zq&=l~0r#T2FSvJ4zVW z;eDhF-1Dd41nF|pG|3~$)g>J?ch={&xxbEd6G?3PTG9igUm?jQe)0;^UeYW{u1iVx zm^*7%pW|NaPOg}A8Rd_8f9TRlIX;5`PI~~soPsEebSE;I-28awXaC6 zrbB;0-CnCD+LK$oEo#;Lm^WQ7tV*r1uNR|CCz-oh@WNE5k*?8h>g%-b7hTYELCdG2 zur?mWdd}38Y|+v&T9=%>Yefq|IIpAG2HiH9!fN z$QHHL3&SYQJ29wTwYBbr^S*;#zjjzEeyHWm`mK>)oir)I zb5L#Sx{u@$xSePt#zJ`2I7*NqqUw0_K7(lmo!Q8XYieuMSu{TbC&hlrRcCOPJIw?u zi&JGe_59lktVG^GRrErXwQ9)ckt|@$M#J)gJlPj%hvGK+rP4w6JBc)3yZI-D+cunH`o)KAe7&!~mf zB>K*ft7#N3>Xy@>IW%VNu>Jl}h^~wz(U5xvtK;0FdPOfd3Ypk|ei?`6z zRTR(NF9c~FeG3vTt)phK@6{HqiYH?(SEBBY_|vlABU*ZU>x0RM(i*Lc6dX}l~L5K)b-9sg6I_!F_Ks3t?1c9}^w1RN` zIF8~G#xiZ3PCH9daXN)z(2FR>AIjV^(^3#Mka=T5nen>c9@9G`=d+AL%=&()tH$@# z#?*aL)XX|+N7VJrkFnKiZl%tukeXx|Y-8q2(V>B!Zcr9FTr{J0GJR@i&%4uOJBnhY zV`^q0L>YE@2~J%cigm-{eAKQ&$CL8Cu32TQsa?1)++Q`qIaXO6m<=OYWQn^UJL&f% z&#>D}jIywD;6dD^gAUrp!P%EZw~N=AnT+0hJ3O@q6IFZgt<^e^h0=_zf0-O8RhQrB zzhqE*GP7psR#Y{n%ZqB&Pm;N;)mmimoq*MgHP$T5wSluKdSta%jHBikZh#eOYcUf>`UiQUNMUAc?^?9sXg$Ct%H5^M| z6S{SixGIf(JX#uO)sz@+q_Uc}?3}#0P34hYK7GTui$y!SB=r_$G3E^&w}xUv#HR0e zaK*tq%Vw((b# zU837?OzjJsVYCn~Uq{7gGG8~DM9cvgW7yYeMP5zq4_I|rDHE0x^?(=!+1jiZjL@uX8U zB2+bh&Xc&_Bc=YMY4M`!nY|d#Ni`1KeICWQRZ#g|KVF=TYKuyY+Werugd)bq?Jv4Z zY-}Qb_IhmNJev2Ei%i`T-`g9w59I}xR~ZtUk0av4x@UKBZG`BVO@OHmH#lEUl@Y!D zO;kIo1#=QJiPBf~bH%?4$9G$pnbn<#V zxv8>g;<^d0q5BAwNB72Fm~d(l#T8CD{AQwWuLhWTP~AYWjT^}o&SwO!qkDa?UC~?P zh{zG+7_O&jr!qcHbTF1mCBdBk=vXyskJkdkJ8pYADpL}Vw_GLT^>}=wsIsE#@z9Rx z9e4G{H#s&jv^C<4A*5?atYVaZ9G@D5n`KWDCw@A$Z|}Czn|t}B^*KKty(_GuS>l~< zo(PewlM_=@lX~4cEw>X_O-)YfEqX$eo9A1n zHs+shnYux4hfTIyCMWb`kJ%#RnHZtWBxN>k9#Z{bc~tXe>7IA850To_4eEs4%TL5y zu}E>~W#T?_=vBPEle-4XdpA(#R+jp1KoAl8O=dD^uw6pSYhk4BB>?b=^f3SVjI~QQ zy=J73AN5?x-~mU znJuDAGX?l;-Hf9pov<_$BYR;`WxpE--Pmu-L{Y8Z4uhuJ&h{?$8aYoTWS8}H)I!am zL&uKeSc%gLnVysD91@oUYMz9ps&XcQhdo1 zsUACoQ0lp|a+gc7q6RdXf0PDde~A?t5tbTg52$DZi*}&*)0%E#j7dnFO^SQR4zb4% zeM}|lws5}E=fPb~1B{7mVq;8jMa>X{)DScC*;8LMrNh$Hd*MlieJ56Gh8B%|VY9tv zR~WpSIjvmV#Gjj!KIdtsn^DLvu5dkG=_9TIztrZ4!w;i2%6{yiGnZhjlr2!xHIwiz zDDXUBXx*5RH@PoWzVbY7Sw_=2PU0{aPb_iS$4ORxGNNfo@VPNomQ{?r}!NRxW1C60-Y~LpqrgF+oJY%LYqY>CkSEb(QT1 z!_2J5EM~@dYV?lgqgk)Zo=tmAhUIZyCt8hUjHl(l9y}VKB17QMN=OxB~cp7xA zcV|3B&%-WJ(m4x!T<$GAjePR5x#bO56-t?kj`!;Bvs3X)t~W3@gfdpTziekdoJEy5ilJef1=&gWzQ z_>pEN?;_4WPnv_?oNf+!CpM5Zq@VV#kSVXsVh|LIfk@sha=mx5sx+~S0bhC^(&dSo ztXajPo>^gKYLAFFP=tKPkK(UcMC=MC66=pZPBDkBAf}z=gUC1~HYSHkN+{iABe5^( zG!P_VdDARB-1Ls{PT|U_v~VVaju?CO+UVsp>t*X-bf~NWWv95Zf6Gd_Fog)G(QWvRSz%W?T;U&^9=&iz%5!P#*<^nCdZH&2Xd=ywlrZ# ziHgkVa~_~0v}r5K;#<-6D>+P%(1j_ zVDr?A9o+IrbhVSSfhEEzs+YjV*rE$a5Ks%XK4dJpq$(`0rPI${V#-z7jYu3J+f4~K z%=Utr<-cslkA@AeqOk!p)uJT*YEc>+L2+^TT{3N&H=cng#|+z4#fCEKnt0J}jw1d; zNq0ExFugY7>*mV}Dw`kl$kvnI7-e+<5wh|N0izG68z-|^p_W6uWi);_Z}7T-l9ZcB{(sF(1?gwm=A7+oNo zKYPl&Kp#Zl#D~1FcW88zs0Tfc6!C*Ekr0y4+UPfBLUNLk(^rNd%I*$en}qnw-*04Bs>$hbo>bOucZi(zrQrDQ@IE#TS=o*PgaHnk5oNn%G^>D=Hg= zl>MZ8Ro|rZCFh20zs%&CU!R$fD8fSPXmLnD=GgTCr=FPKety>d8E2dCZ9lOO2dTF%NQ5cI+T7AlHY?blHr8qm)=? G;C}&iG=G8s literal 0 HcmV?d00001 diff --git a/filer/locale/hr/LC_MESSAGES/django.po b/filer/locale/hr/LC_MESSAGES/django.po new file mode 100644 index 000000000..956d76841 --- /dev/null +++ b/filer/locale/hr/LC_MESSAGES/django.po @@ -0,0 +1,1265 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Aleks Acimovic, 2022 +# Damir , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Aleks Acimovic, 2022\n" +"Language-Team: Croatian (http://app.transifex.com/divio/django-filer/" +"language/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Napredno" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Stavke moraju biti odabrane kako bi se obavila akcija. Nijedna stavka nije " +"promijenjena." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s odabrana" +msgstr[1] "%(total_count)s odabrano" +msgstr[2] "Svih %(total_count)s odabrano" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Popis direktorija za %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 od %(cnt)s odabrano" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Nije izabrana akcija." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Uspješno premješteno %(count)d datoteka u spremnik." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Premjesti odabrane datoteke u spremnik" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Uspješno onemogućene ovlasti za %(count)d datoteka." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Uspješno omogućene ovlasti za %(count)d datoteka." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Omogući ovlasti za odabrane datoteke" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Onemogući ovlasti za odabrane datoteke" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Uspješno obrisano %(count)d datoteka i/ili direktorija." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Nije moguće obrisati datoteke i/ili direktorije" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Jeste li sigurni?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Obriši datoteke i/ili direktorije" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Obriši odabrane datoteke i/ili direktorije" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Uspješno premješteno %(count)d datoteka i/ili direktorija u direktorij " +"'%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Premjesti datoteke i/ili direktorije" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Premjesti odabrane datoteke i/ili direktorije" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Uspješno preimenovano %(count)d datoteka." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Preimenuj datoteke" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Uspješno kopirano %(count)d datoteka i/ili direktorija u direktorij " +"'%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopiraj datoteke i/ili direktorije" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopiraj odabrane datoteke i/ili direktorije" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Uspješno promijenjena veličina za %(count)d slika." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Promijeni veličinu slika" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Promijeni veličinu odabranih slika" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Sufiks koji će biti dodan imenima kopiranih datoteka." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Sufiks treba biti jednostavan i upisan malim slovima poput \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Nepoznata vrijednost formata ključa za preimenovanje \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Neispravan format za premenovanje: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "opcija sličica" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "širina" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "visina" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "obreži" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "povećaj veličinu" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" +"Opcija sličica ili parametri za promjenu veličine moraju biti izabrani." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Lokacija subjekta" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Direktorij s ovim imenom već postoji." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "predefinirani alt tekst" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "predefinirani opis slike" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "lokacija subjekta" + +#: models/abstract.py:91 +msgid "image" +msgstr "slika" + +#: models/abstract.py:92 +msgid "images" +msgstr "slike" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "korisnik" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "datoteke" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "spremnik" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "spremnici" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "datoteka" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "stavka spremnika" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "stavke spremnika" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "direktorij" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "veličina datoteke" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "sadrži sve obavezne podatke" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "originalno ime datoteke" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "ime" + +#: models/filemodels.py:116 +msgid "description" +msgstr "opis" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "vlasnik" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "postavljeno" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "modificirano" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Ovlasti onemogućene" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "kerirano" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Direktorij" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Direktoriji" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "sve stavke" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "samo ova stavka" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "ova stavka i sva djeca" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tip" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "grupa" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "svi" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "mogu čitati" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "mogu uređivati" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "mogu dodavati djecu" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "ovlast direktorija" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "ovlasti direktorija" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "datum nastanka" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "zahtijeva se objavljivanje zasluga autora" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "zahtjeva se objavljivanje autorskih prava" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "datoteke s nedostajućim metapodacima" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "korijenski" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Pokreni odabranu akciju" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Idi" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Kliknite ovdje za odabir objekata kroz sve stranice" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Odaberite sve %(total_count)s datoteke i/ili direktorije" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Poništi odabir" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Povratak na početnu stranicu" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Početna" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Povratak na Filer aplikaciju" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Povratak na korijenski direktorij" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Povratak na direktorij '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Brisanje odabranih objekata bi rezultiralo brisanjem povezanih objekata, ali " +"Vaš korisnički račun nema ovlasti za brisanje slijedećih tipova objekata:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Brisanje odabranih datoteka i/ili direktorija bi zahtijevalo brisanje " +"slijedećih zaštičenih povezanih objekata:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Jeste li sigurni kako želite obrisati odabrane datoteke i/ili direktorije? " +"Svi navedeni objekti i s njima povezane stavke biti će obrisani:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Povijest" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Pogledaj na stranicama" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Idi natrag na" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "početna stranica administracije" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Ikona direktorija" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Vaš korisnički račun nema ovlasti za kopiranje odabranih datoteka i/ili " +"direktorija." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Nema dostupnih odredišnih direktorija." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Nema dostupnih datoteka i/ili direktorija za kopiranje." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Slijedeće datoteke i/ili direktoriji biti će kopirani u odredišni direktorij " +"(zadržavajući postojeću strukturu):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Odredišni direktorij" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopiraj" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"Vaš korisnički račun nema ovlasti za promjenu veličina odabranih slika." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Nema dostupnih slika kojima bi se promijenila veličina." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Slijedećim slikama biti će promijenjena veličina:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Izaberite postojeću opciju sličica ili unesite parametre za promjenu " +"veličine:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Pažnja: Slikama će biti promijenjena veličina, a originali će biti prepisani " +"sa slikama s novom veličinom. Preporuča se prvo kopirati originalne slike " +"prije promjene veličine." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Promjeni veličinu" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Vaš korisnički račun nema ovlasti za premještaj svih odabranih datoteka i/" +"ili direktorija." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Nema dostupnih datoteka i/ili direktorija za premještaj." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Slijedeće datoteke i/ili direktoriji biti će premješteni u odredišni " +"direktorij (zadržavajući postojeću strukturu):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Premjesti" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" +"Vaš korisnički račun nema ovlasti za preimenovanje svih odabranih datoteka." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Nema dostupnih datoteka i/ili direktorija za preimenovanje." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Slijedeće datoteke če biti preimenovane (ostati će u svojim direktorijima i " +"zadržati ime datoteke, samo će prikazano ime biti promijenjeno):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Preimenuj" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Vrati se u nadređeni direktorij" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Promijeni detalje trenutnog direktorija" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Promijeni" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Traži" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Obriši" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Dodaje novi direktorij" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Novi direktorij" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Ime" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Vlasnik" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Promijeni detalje direktorija '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Odaberi ovu datoteku" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Promijeni detalje za '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Ovlasti" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "onemogućeno" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "omogućeno" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Premjesti odabrane datoteke u spremnik" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Prebaci" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "prethodni" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "slijedeći" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Dodaj novi" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Molimo ispravite pogrešku ispod." +msgstr[1] "Molimo ispravite pogreške ispod." +msgstr[2] "Molimo ispravite pogreške ispod." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Spremi" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Privremeni spremnik" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Premjesti sve stavke ovdje" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Premjesti sve datoteke iz privremenog spremnika u" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "privremeni spremnik je prazan" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "prebacivanje neuspješno" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "pronađeno" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "i" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "poništi pretraživanje" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Isprazni" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "nema odabranih datoteka" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Pregled" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/hu/LC_MESSAGES/django.mo b/filer/locale/hu/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4f949fb53aeaf722154e4ff2f687e075892f2ee9 GIT binary patch literal 16819 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 C$D#QE literal 0 HcmV?d00001 diff --git a/filer/locale/hu/LC_MESSAGES/django.po b/filer/locale/hu/LC_MESSAGES/django.po new file mode 100644 index 000000000..80b195895 --- /dev/null +++ b/filer/locale/hu/LC_MESSAGES/django.po @@ -0,0 +1,1258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Istvan Farkas , 2016-2017 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Istvan Farkas , 2016-2017\n" +"Language-Team: Hungarian (http://app.transifex.com/divio/django-filer/" +"language/hu/)\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Haladó" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "egyedi URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Az akciók végrehajtásához egy vagy több elemet ki kell választani. Egyetlen " +"elem sem változott." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s kiválasztva" +msgstr[1] "Mind (%(total_count)s) kiválasztva" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 kiválasztva a %(cnt)s elemből" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Nincs akció megadva" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d fájl a vágólapra mozgatva." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Kiválasztott fájlok vágólapra mozgatása" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "%(count)d fájl jogosultságai kikapcsolva." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "%(count)d fájl jogosultságai bekapcsolva." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Jogosultságok bekapcsolása a kiválasztott fájlokhoz" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Jogosultságok kikapcsolása a kiválasztott fájlokhoz" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d fájl és/vagy mappa sikeresen törölve." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Nem lehet a mappákat és/vagy fájlokat törölni" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Biztos benne?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Fájlok és/vagy mappák törlése" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Kiválasztott fájlok és/vagy mappák törlése" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "A kiválasztott helyen már létezik %s nevű mappa" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d fájl és/vagy mappa sikeresen átmozgatva ebbe a mappába: " +"%(destination)s" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Fájlok és/vagy mappák mozgatása" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Kiválasztott fájlok és/vagy mappák mozgatása" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d fájl sikeresen átnevezve." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Fájlok átnevezése" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d fájl és/vagy mappa sikeresen átmásolva ebbe a mappába: " +"%(destination)s" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Fájlok és/vagy mappák másolása" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kiválasztott fájlok és/vagy mappák másolása" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "%(count)d kép sikeresen átméretezve." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Képek átméretezése" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Kiválasztott képek átméretezése" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Utótag, amely a másolt fájlok nevéhez lesz hozzáadva." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Az utótag lehetőleg egyszerű, kisbetűs fájlnév részlet legyen, például " +"\"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Ismeretlen átnevezés formázási szó: \"%(key)s\" " + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Érvénytelen átnevezési formátum: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "előnézeti kép beállítás" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "szélesség" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "magasság" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "vágás" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "felméretezés" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" +"Előnézeti kép beállítást vagy átméretezési paramétert kötelező kiválasztani." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Fókusz helye" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "A kép fő fókuszának a helye. Formátuma: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Érvénytelen fókusz formátum." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "A fókusz helye kívül esik a képen." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "A beírt érték: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Már létezik ilyen nevű mappa." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Fájlkezelő" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Médiatár" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "alapértelmezett alternatív szöveg" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "alapértelmezett képaláírás" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "fókusz helye" + +#: models/abstract.py:91 +msgid "image" +msgstr "kép" + +#: models/abstract.py:92 +msgid "images" +msgstr "képek" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "felhasználó" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "fájlok" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "vágólap" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "vágólapok" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "fájl" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "vágólap elem" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "vágólap elemek" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "mappa" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "fájlméret" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "fontos adatok kitöltve" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "eredeti fájlnév" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "név" + +#: models/filemodels.py:116 +msgid "description" +msgstr "leírás" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "tulajdonos" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "feltöltés ideje" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "módosítás ideje" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Jogosultságok kikapcsolva" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Jogosultságok ellenőrzésének kikapcsolása ennél a fájlnál. Ezt a fájlt bárki " +"letöltheti." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "létrehozás ideje" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Mappa" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Mappák" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "minden elem" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "csak ez az elem" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "csak ez az elem, és az alá tartozók" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "engedélyez" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "letilt" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "típus" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "csoport" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "mindenki" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "olvashatja" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "szerkesztheti" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "hozzáadhat gyermekelemet" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "mappa jogosultság" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "mappa jogosultságok" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "fotózás dátuma" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "szerző" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "szerző nevének mindig meg kell jelennie" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "copyright információnak mindig meg kell jelennie" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "szélesség pixelben." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "magasság pixelben." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "előnézeti kép beállítások" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Kategorizálatlan feltöltések" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "fájlok hiányzó meta adatokkal" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "gyökér" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Kiválasztott akció végrehajtása" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Mehet" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Ide klikkelve több oldalról is választhatóak elemek" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Az összes (%(total_count)s) mappa és fájl kiválasztása" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Kiválasztás megszüntetése" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Vissza az adminisztrációs oldalra" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Nyitólap" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Vissza a fájlkezelőbe" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Vissza a gyökérmappába" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Vissza a(z) '%(folder_name)s' mappába" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplikátumok" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"A kiválasztott fájlok és mappák törlése csatlakozó elemek törlésével is " +"járna, viszont a jelenlegi fiók nem rendelkezik a megfelelő jogosultságokkal " +"a következő objektum típusok törléséhez:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"A kiválasztott fájlok és mappák törlése azzal járna, hogy a következő " +"kapcsolt elemek is törlődnek:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Biztosan törli a kiválasztott fájlokat és/vagy mappákat? A következő " +"objektumok, és a hozzájuk kapcsolt elemek is törlődni fognak:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Nem, mégsem" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Igen, biztos vagyok benne" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Történet" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Megtekintés az oldalon" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Vissza ide:" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "adminisztrációs felület" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Mappa Ikon" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Nincs jogosultsága az összes kiválasztott fájl és/vagy mappa másolásához." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Vissza" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Nincs alkalmas célmappa." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Nincsenek másolható fájlok és/vagy könyvtárak" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"A következő fájlok és/vagy mappák lesznek a célkönyvtárba másolva (megtartva " +"a szerkezetüket):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Cél mappa:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Másol" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Nem lehet fájlokat a saját könyvtárukba másolni" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "Nincs jogosultsága az összes kiválasztott kép átméretezéséhez." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Nincsenek átméretezhető képek." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "A következő képek lesznek átméretezve:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Válasszon ki egy meglévő előnézeti kép beállítást, vagy írja be az " +"átméretezési paramétereket:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Figyelem: a képek helyben lesznek átméretezve, felülírva az eredetieket. Ha " +"meg szeretné őrizni az eredeti képeket, előbb másolja át őket." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Átméretezés" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Nincs jogosultsága az összes kiválasztott fájl és/vagy mappa mozgatásához." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Nincsenek mozgatható fájlok és/vagy mappák." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"A következő fájlok és/vagy mappák lesznek átmozgatva a cél mappába " +"(megtartva a szerkezetüket):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Mozgatás" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Nem lehet fájlokat az eredeti mappájukba mozgatni" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Nincs jogosultsága az összes kiválasztott fájl átnevezéséhez." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Nincsenek átnevezhető fájlok." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"A következő fájlok lesznek átnevezve (a mappában maradnak, és az eredeti " +"fájlnév megmarad, csak a megjelenített név változik):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Átnevezés" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Vissza a szülőmappába" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Jelenlegi mappa beállításai" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Szerkeszt" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Kattintson ide a beírt szó kereséséhez" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Keresés" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Bezár" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Korlátozás" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Kattintsa be, hogy a keresést a jelenlegi mappára korlátozza" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Keresés korlátozása a jelenlegi mappára" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Törlés" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Új mappát hoz létre" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Új mappa" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Fájlok feltöltése" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Először válasszon mappát" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Név" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Tulajdonos" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Méret" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Akció" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "A(z) '%(item_label)s' mappa beállításai" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s mappa" +msgstr[1] "%(counter)s mappa" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s fájl" +msgstr[1] "%(counter)s fájl" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Mappa beállításainak szerkesztése" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Mappa eltávolítása" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Fájl kiválasztása" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "A(z) '%(item_label)s' szerkesztése" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Jogosultságok" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "letiltva" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "engedélyezve" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Kiválasztott fájlok vágólapra mozgatása" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "'%(item_label)s' letöltése" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Fájl eltávolítása" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" +"Egérrel dobjon ide fájlokat, vagy használja a \"Fájlok feltöltése\" gombot" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Egérre dobja ide a fájl, hogy feltöltse ebbe a mappába:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Feltöltés" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "mégsem" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Sikeres feltöltés!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Feltöltés megszakítva!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "előző" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr " %(number)s / %(num_pages)s oldal" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "következő" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Összes (%(total_count)s) kiválasztása" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Új" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Kérjük javítsa az alábbi hibát." +msgstr[1] "Kérjük javítsa az alábbi hibákat." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Mentés" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Vágólap" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Összes elem beillesztése ide" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Összes vágólap elem mozgatása ide: " + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Üres vágólap" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "A vágólap üres" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "sikertelen feltöltés" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Típus" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Fájlméret" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Módosítva" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Létrehozva" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "találat" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "és " + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "keresés megszakítása" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Törlés" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "vagy dobja ide az egérrel a fájlokat" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "nincs fájl kiválasztva" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Keresés" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Fájl kiválasztása" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/it/LC_MESSAGES/django.mo b/filer/locale/it/LC_MESSAGES/django.mo index 28289619f9af249a40114749b3f52e957155becb..b15a9a6329d8c6f89095de215f6d232870d95551 100644 GIT binary patch literal 17229 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 literal 16237 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 diff --git a/filer/locale/it/LC_MESSAGES/django.po b/filer/locale/it/LC_MESSAGES/django.po index 59d3aaed1..f5d95d4b7 100644 --- a/filer/locale/it/LC_MESSAGES/django.po +++ b/filer/locale/it/LC_MESSAGES/django.po @@ -3,32 +3,49 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# Iacopo Spalletti , 2012. -# , 2012. +# Translators: +# Translators: +# yakky , 2012 +# yakky , 2013,2015-2018 +# yakky , 2012 +# yakky , 2012-2013,2015 msgid "" msgstr "" -"Project-Id-Version: django-filer\n" +"Project-Id-Version: django Filer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 19:10+0200\n" -"PO-Revision-Date: 2012-09-03 20:11+0100\n" -"Last-Translator: Stefan Foulis \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/django-filer/" -"language/it/)\n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: yakky , 2013,2015-2018\n" +"Language-Team: Italian (http://app.transifex.com/divio/django-filer/language/" +"it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? " +"1 : 2;\n" -#: views.py:103 -msgid "Folder with this name already exists." -msgstr "Esiste già una cartella con questo nome." +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" -#: admin/fileadmin.py:41 +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 msgid "Advanced" msgstr "Avanzato" -#: admin/folderadmin.py:324 admin/folderadmin.py:427 +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "URL standard" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." @@ -36,470 +53,588 @@ msgstr "" "Gli elementi devono essere selezionati in modo da eseguire azioni su di " "essi. Nessun elemento è stato modificato." -#: admin/folderadmin.py:344 +#: admin/folderadmin.py:434 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" -msgstr[0] " %(total_count)s selezionati" -msgstr[1] "Tutti %(total_count)s selezionato" +msgstr[0] " %(total_count)s elemento selezionato" +msgstr[1] "Tutti e %(total_count)s selezionati" +msgstr[2] "Tutti e %(total_count)s selezionati" -#: admin/folderadmin.py:377 +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "%(folder_name)sLista file per " + +#: admin/folderadmin.py:475 #, python-format msgid "0 of %(cnt)s selected" msgstr "0 su %(cnt)s selezionati" -#: admin/folderadmin.py:456 +#: admin/folderadmin.py:612 msgid "No action selected." msgstr "Nessuna azione selezionata." -#: admin/folderadmin.py:497 +#: admin/folderadmin.py:664 #, python-format msgid "Successfully moved %(count)d files to clipboard." msgstr "%(count)d file spostati con successo negli appunti." -#: admin/folderadmin.py:503 +#: admin/folderadmin.py:669 msgid "Move selected files to clipboard" msgstr "Sposta i file selezionati negli Appunti" -#: admin/folderadmin.py:537 +#: admin/folderadmin.py:709 #, python-format msgid "Successfully disabled permissions for %(count)d files." msgstr "Permessi per %(count)d file disabilitati con successo." -#: admin/folderadmin.py:541 +#: admin/folderadmin.py:711 #, python-format msgid "Successfully enabled permissions for %(count)d files." msgstr "Permessi per %(count)d file abilitati con successo." -#: admin/folderadmin.py:550 +#: admin/folderadmin.py:719 msgid "Enable permissions for selected files" msgstr "Attiva i permessi per i file selezionati" -#: admin/folderadmin.py:555 +#: admin/folderadmin.py:725 msgid "Disable permissions for selected files" msgstr "Disabilita i permessi per i file selezionati" -#: admin/folderadmin.py:623 +#: admin/folderadmin.py:789 #, python-format msgid "Successfully deleted %(count)d files and/or folders." msgstr "%(count)d file e/o cartelle cancellati con successo." -#: admin/folderadmin.py:630 +#: admin/folderadmin.py:794 msgid "Cannot delete files and/or folders" msgstr "Non è possibile cancellare i file e/o le cartelle" -#: admin/folderadmin.py:632 +#: admin/folderadmin.py:796 msgid "Are you sure?" msgstr "Sei sicuro?" -#: admin/folderadmin.py:637 +#: admin/folderadmin.py:802 msgid "Delete files and/or folders" msgstr "Elimina i file e/o le cartelle" -#: admin/folderadmin.py:656 +#: admin/folderadmin.py:823 msgid "Delete selected files and/or folders" msgstr "Elimina i file e/o le cartelle selezionati" -#: admin/folderadmin.py:771 +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Esistono altre cartelle chiamate %s nella destinazione selezionata" + +#: admin/folderadmin.py:934 #, python-format msgid "" "Successfully moved %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" -"%(count)d file e/o le cartelle nella cartella '%(destination)s' spostati con " -"successo." +"%(count)d file e/o le cartelle spostati con successo nella cartella " +"'%(destination)s'." -#: admin/folderadmin.py:778 admin/folderadmin.py:780 +#: admin/folderadmin.py:942 admin/folderadmin.py:944 msgid "Move files and/or folders" -msgstr "Sposta file e/o le cartelle" +msgstr "Sposta i file e/o le cartelle" -#: admin/folderadmin.py:797 +#: admin/folderadmin.py:959 msgid "Move selected files and/or folders" msgstr "Sposta i file e/o le cartelle selezionati" -#: admin/folderadmin.py:854 +#: admin/folderadmin.py:1016 #, python-format msgid "Successfully renamed %(count)d files." msgstr "%(count)d file rinominati con successo." -#: admin/folderadmin.py:862 admin/folderadmin.py:864 admin/folderadmin.py:881 +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 msgid "Rename files" msgstr "Rinomina file" -#: admin/folderadmin.py:975 +#: admin/folderadmin.py:1137 #, python-format msgid "" "Successfully copied %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" -"%(count)d file e/o cartelle nella cartella '%(destination)s ' copiati con " -"successo." +"%(count)d file e/o cartelle copiati con successo nella cartella " +"'%(destination)s '." -#: admin/folderadmin.py:989 admin/folderadmin.py:991 +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 msgid "Copy files and/or folders" msgstr "Copia i file e/o le cartelle" -#: admin/folderadmin.py:1010 +#: admin/folderadmin.py:1174 msgid "Copy selected files and/or folders" msgstr "Copia i file e/o le cartelle selezionati" -#: admin/folderadmin.py:1105 +#: admin/folderadmin.py:1279 #, python-format msgid "Successfully resized %(count)d images." msgstr "%(count)d immagini ridimensionate con successo." -#: admin/folderadmin.py:1113 admin/folderadmin.py:1115 +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 msgid "Resize images" msgstr "Ridimensiona le immagini" -#: admin/folderadmin.py:1133 +#: admin/folderadmin.py:1303 msgid "Resize selected images" msgstr "Ridimensiona le immagini selezionate" -#: admin/forms.py:26 +#: admin/forms.py:24 msgid "Suffix which will be appended to filenames of copied files." msgstr "Suffisso che sarà aggiunto al nome dei file copiati." -#: admin/forms.py:33 +#: admin/forms.py:31 #, python-format msgid "" "Suffix should be a valid, simple and lowercase filename part, like " "\"%(valid)s\"." msgstr "" -"Il suffisso dovrebbe essere valido, semplice e minuscolo per quanto riguarda " -"la parte del nome del file, come \"%(valid)s\"." +"Il suffisso deve essere una sezione del nome del file valida, semplice e " +"minuscola, come \"%(valid)s\"." -#: admin/forms.py:54 +#: admin/forms.py:52 #, python-format msgid "Unknown rename format value key \"%(key)s\"." msgstr "Valore del formato di rinomina non valido \"%(key)s\"." -#: admin/forms.py:56 +#: admin/forms.py:54 #, python-format msgid "Invalid rename format: %(error)s." msgstr "Formato di rinomina non valido: %(error)s." -#: admin/forms.py:62 +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 msgid "thumbnail option" msgstr "opzione anteprima immagine" -#: admin/forms.py:63 +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 msgid "width" msgstr "larghezza" -#: admin/forms.py:64 +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 msgid "height" msgstr "altezza" -#: admin/forms.py:65 +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 msgid "crop" msgstr "ritaglia" -#: admin/forms.py:66 +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 msgid "upscale" msgstr "ingrandisci" -#: admin/forms.py:71 +#: admin/forms.py:79 msgid "Thumbnail option or resize parameters must be choosen." msgstr "" -"L'opzione anteprima immagine o parametri di ridimensionamento devono essere " -"selezionati." - -#: admin/forms.py:73 -msgid "Resize parameters must be choosen." -msgstr "Devono essere scelte le opzioni di ridimensionamento." +"Devi selezionare l'opzione anteprima immagine o i parametri di " +"ridimensionamento." -#: admin/imageadmin.py:12 +#: admin/imageadmin.py:20 admin/imageadmin.py:112 msgid "Subject location" msgstr "Posizione del soggetto" -#: admin/imageadmin.py:13 -msgid "Location of the main subject of the scene." -msgstr "Posizione del soggetto principale della scena." +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Posizione del soggetto principale della scena. Formato: \"x,y\"" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Formato della posizione del soggetto non valida." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "La posizione del soggetto è esterna all'immagine." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Valore fornito: \"{subject_location}\"" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Esiste già una cartella con questo nome." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Archivio file" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "testo predefinito per l'attributo alt " + +#: models/abstract.py:69 +msgid "default caption" +msgstr "didascalia predefinita" -#: models/clipboardmodels.py:9 models/foldermodels.py:236 +#: models/abstract.py:76 +msgid "subject location" +msgstr "posizione del soggetto" + +#: models/abstract.py:91 +msgid "image" +msgstr "immagine" + +#: models/abstract.py:92 +msgid "images" +msgstr "immagini" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 msgid "user" msgstr "utente" -#: models/clipboardmodels.py:11 models/filemodels.py:287 +#: models/clipboardmodels.py:17 models/filemodels.py:157 msgid "files" msgstr "file" -#: models/clipboardmodels.py:34 models/clipboardmodels.py:40 +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 msgid "clipboard" -msgstr "Appunti" +msgstr "appunti" -#: models/clipboardmodels.py:35 +#: models/clipboardmodels.py:25 msgid "clipboards" msgstr "appunti" -#: models/clipboardmodels.py:39 models/filemodels.py:35 -#: models/filemodels.py:286 +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 msgid "file" msgstr "file" -#: models/clipboardmodels.py:44 +#: models/clipboardmodels.py:56 msgid "clipboard item" -msgstr "Elemento Appunti" +msgstr "elemento degli appunti" -#: models/clipboardmodels.py:45 +#: models/clipboardmodels.py:57 msgid "clipboard items" -msgstr "Elementi Appunti" +msgstr "elementi degli appunti" -#: models/filemodels.py:33 templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 #: templates/admin/filer/folder/new_folder_form.html:4 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 msgid "folder" msgstr "cartella" -#: models/filemodels.py:36 +#: models/filemodels.py:81 msgid "file size" msgstr "dimensione file" -#: models/filemodels.py:38 +#: models/filemodels.py:87 msgid "sha1" msgstr "sha1" -#: models/filemodels.py:40 +#: models/filemodels.py:94 msgid "has all mandatory data" msgstr "ha tutti i dati obbligatori" -#: models/filemodels.py:42 +#: models/filemodels.py:100 msgid "original filename" msgstr "nome del file originale" -#: models/filemodels.py:44 models/foldermodels.py:99 +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 msgid "name" msgstr "nome" -#: models/filemodels.py:46 +#: models/filemodels.py:116 msgid "description" msgstr "descrizione" -#: models/filemodels.py:50 +#: models/filemodels.py:125 models/foldermodels.py:108 msgid "owner" msgstr "proprietario" -#: models/filemodels.py:52 models/foldermodels.py:105 +#: models/filemodels.py:129 models/foldermodels.py:116 msgid "uploaded at" -msgstr "caricato in " +msgstr "caricato il" -#: models/filemodels.py:53 models/foldermodels.py:108 +#: models/filemodels.py:134 models/foldermodels.py:126 msgid "modified at" -msgstr "modificato in" +msgstr "modificato il" -#: models/filemodels.py:57 +#: models/filemodels.py:140 msgid "Permissions disabled" msgstr "Permessi disabilitati" -#: models/filemodels.py:58 -msgid "Disable any permission checking for this " -msgstr "Disabilitare controllo permessi per questo" +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Disabilita ogni controllo dei permessi per questo file. Il file sarà " +"accessibile da chiunque" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" -#: models/foldermodels.py:107 +#: models/foldermodels.py:121 msgid "created at" -msgstr "creato in" +msgstr "creato il" -#: models/foldermodels.py:211 -#: templates/admin/filer/widgets/admin_folder.html:3 -#: templates/admin/filer/widgets/admin_folder.html:5 +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Folder" msgstr "Cartella" -#: models/foldermodels.py:212 +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 msgid "Folders" msgstr "Cartelle" -#: models/foldermodels.py:227 +#: models/foldermodels.py:260 msgid "all items" msgstr "tutti gli elementi" -#: models/foldermodels.py:228 +#: models/foldermodels.py:261 msgid "this item only" msgstr "solo questo elemento" -#: models/foldermodels.py:229 +#: models/foldermodels.py:262 msgid "this item and all children" -msgstr "questa elemento e tutti i figli" +msgstr "questo elemento e tutti i figli" -#: models/foldermodels.py:233 +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "permetti" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "nega" + +#: models/foldermodels.py:280 msgid "type" msgstr "tipo" -#: models/foldermodels.py:239 +#: models/foldermodels.py:297 msgid "group" msgstr "gruppo" -#: models/foldermodels.py:240 +#: models/foldermodels.py:304 msgid "everybody" msgstr "tutti" -#: models/foldermodels.py:242 -msgid "can edit" -msgstr "in grado modificare" - -#: models/foldermodels.py:243 +#: models/foldermodels.py:309 msgid "can read" -msgstr "in grado di leggere" +msgstr "può leggere" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "può modificare" -#: models/foldermodels.py:244 +#: models/foldermodels.py:325 msgid "can add children" -msgstr "in grado di aggiungere figli" +msgstr "può aggiungere figli" -#: models/foldermodels.py:273 +#: models/foldermodels.py:333 msgid "folder permission" msgstr "permessi cartella" -#: models/foldermodels.py:274 +#: models/foldermodels.py:334 msgid "folder permissions" msgstr "permessi cartella" -#: models/imagemodels.py:39 -msgid "date taken" -msgstr "data presa" +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" -#: models/imagemodels.py:42 -msgid "default alt text" -msgstr "testo predefinito per l'attributo alt " +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" -#: models/imagemodels.py:43 -msgid "default caption" -msgstr "didascalia predefinita" +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" -#: models/imagemodels.py:45 templates/image_filer/image.html:6 +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "data di creazione" + +#: models/imagemodels.py:25 msgid "author" msgstr "autore" -#: models/imagemodels.py:47 +#: models/imagemodels.py:32 msgid "must always publish author credit" msgstr "pubblica sempre i crediti all'autore" -#: models/imagemodels.py:48 +#: models/imagemodels.py:37 msgid "must always publish copyright" msgstr "pubblica sempre il copyright" -#: models/imagemodels.py:50 -msgid "subject location" -msgstr "posizione del soggetto" +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "larghezza in pixel." -#: models/imagemodels.py:200 -msgid "image" -msgstr "immagine" +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "altezza in pixel." -#: models/imagemodels.py:201 -msgid "images" -msgstr "immagini" +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "opzione anteprima immagine" -#: models/virtualitems.py:45 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "unfiled files" -msgstr "file archiviati" +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "File non archiviati" -#: models/virtualitems.py:59 +#: models/virtualitems.py:73 msgid "files with missing metadata" msgstr "file con metadati mancanti" -#: models/virtualitems.py:73 templates/admin/filer/breadcrumbs.html:6 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:10 +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 msgid "root" msgstr "cartella principale" -#: templates/admin/filer/actions.html:4 +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 msgid "Run the selected action" msgstr "Esegui l'azione selezionata" -#: templates/admin/filer/actions.html:4 +#: templates/admin/filer/actions.html:5 msgid "Go" msgstr "Vai" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 msgid "Click here to select the objects across all pages" msgstr "Clicca qui per selezionare gli oggetti in tutte le pagine" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 #, python-format msgid "Select all %(total_count)s files and/or folders" msgstr "Seleziona tutti i %(total_count)s file e/o cartelle" -#: templates/admin/filer/actions.html:13 +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 msgid "Clear selection" msgstr "Cancella selezione" #: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 msgid "Go back to admin homepage" msgstr "Torna alla pagina iniziale di admin" #: templates/admin/filer/breadcrumbs.html:4 -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 msgid "Home" msgstr "Pagina iniziale" #: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 msgid "Go back to Filer app" msgstr "Torna all'app Filer" -#: templates/admin/filer/breadcrumbs.html:5 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/image_filer/image_export_form.html:8 -msgid "Filer" -msgstr "Filer" - #: templates/admin/filer/breadcrumbs.html:6 -#: templates/image_filer/image_export_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Go back to root folder" msgstr "Torna alla cartella principale" #: templates/admin/filer/breadcrumbs.html:8 -#: templates/admin/filer/breadcrumbs.html:11 -#: templates/admin/filer/folder/change_form.html:11 -#: templates/image_filer/image_export_form.html:12 -#: templates/image_filer/image_export_form.html:14 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 #, python-format msgid "Go back to '%(folder_name)s' folder" msgstr "Torna alla cartella ' %(folder_name)s '" -#: templates/admin/filer/change_form.html:28 -msgid "duplicates" -msgstr "duplicati" - -#: templates/admin/filer/delete_confirmation.html:13 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" -"La cancellazione dell'elemento %(object_name)s '%(escaped_object)s' richiede " -"la cancellazione di elementi collegati, ma il tuo account non ha i permessi " -"per cancellare i seguenti tipi di oggetto:" - -#: templates/admin/filer/delete_confirmation.html:21 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " -"following protected related objects:" -msgstr "" -"La cancellazione dell'elemento %(object_name)s '%(escaped_object)s' richiede " -"la cancellazione dei seguenti elementi protetti collegati:" - -#: templates/admin/filer/delete_confirmation.html:29 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" -"Sei sicuro di voler cancellare l'elemento %(object_name)s " -"\"%(escaped_object)s\"? \n" -"Tutti gli elementi collegati seguenti saranno cancellati:" - -#: templates/admin/filer/delete_confirmation.html:34 -#: templates/admin/filer/delete_selected_files_confirmation.html:45 -msgid "Yes, I'm sure" -msgstr "Sì, sono sicuro" +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicati" #: templates/admin/filer/delete_selected_files_confirmation.html:11 msgid "" @@ -527,39 +662,52 @@ msgstr "" "Sei sicuro di voler cancellare i file selezionati e/o le cartelle? Tutti gli " "oggetti seguenti e quelli correlati verranno cancellati:" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:7 -#: templates/image_filer/image_export_form.html:8 -#: templates/image_filer/image_export_form.html:16 -msgid "Go back to" -msgstr "Torna a" +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "No, torna indietro" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 -msgid "admin homepage" -msgstr "Pagina iniziale admin" +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Sì, sono sicuro" -#: templates/admin/filer/folder/change_form.html:22 -#: templates/admin/filer/image/change_form.html:9 +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 msgid "History" msgstr "Storia" +#: templates/admin/filer/file/change_form.html:37 #: templates/admin/filer/folder/change_form.html:23 -#: templates/admin/filer/image/change_form.html:10 +#: templates/admin/filer/image/change_form.html:37 msgid "View on site" msgstr "Vedi sul sito" -#: templates/admin/filer/folder/change_form.html:35 -#: templates/admin/filer/folder/directory_listing.html:75 -#: templates/admin/filer/folder/directory_listing.html:85 -#: templates/admin/filer/folder/directory_table.html:23 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Torna a" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "Pagina iniziale admin" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 msgid "Folder Icon" msgstr "Icona della cartella" -#: templates/admin/filer/folder/choose_copy_destination.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:23 msgid "" "Your account doesn't have permissions to copy all of the selected files and/" "or folders." @@ -567,16 +715,25 @@ msgstr "" "Il tuo account non dispone delle autorizzazioni per copiare tutti i file e/o " "cartelle selezionati." -#: templates/admin/filer/folder/choose_copy_destination.html:15 -#: templates/admin/filer/folder/choose_move_destination.html:15 +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Torna indietro" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 msgid "There are no destination folders available." msgstr "Non ci sono cartelle di destinazione disponibili." -#: templates/admin/filer/folder/choose_copy_destination.html:18 +#: templates/admin/filer/folder/choose_copy_destination.html:35 msgid "There are no files and/or folders available to copy." msgstr "Non ci sono file e/o le cartelle disponibili per la copia." -#: templates/admin/filer/folder/choose_copy_destination.html:20 +#: templates/admin/filer/folder/choose_copy_destination.html:40 msgid "" "The following files and/or folders will be copied to a destination folder " "(retaining their tree structure):" @@ -584,41 +741,43 @@ msgstr "" "I seguenti file e/o cartelle verranno copiati in una cartella di " "destinazione (mantenendo la loro struttura ad albero):" -#: templates/admin/filer/folder/choose_copy_destination.html:32 -#: templates/admin/filer/folder/choose_move_destination.html:32 +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 msgid "Destination folder:" msgstr "Cartella di destinazione:" -#: templates/admin/filer/folder/choose_copy_destination.html:39 +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 msgid "Copy" msgstr "Copia" -#: templates/admin/filer/folder/choose_images_resize_options.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Non è autorizzato a copiare file nella stessa cartella" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 msgid "" "Your account doesn't have permissions to resize all of the selected images." msgstr "" "Il tuo account non dispone delle autorizzazioni per ridimensionare tutte le " "immagini selezionate." -#: templates/admin/filer/folder/choose_images_resize_options.html:15 +#: templates/admin/filer/folder/choose_images_resize_options.html:18 msgid "There are no images available to resize." msgstr "Non ci sono immagini disponibili da ridimensionare." -#: templates/admin/filer/folder/choose_images_resize_options.html:17 +#: templates/admin/filer/folder/choose_images_resize_options.html:20 msgid "The following images will be resized:" msgstr "Le seguenti immagini verranno ridimensionate:" -#: templates/admin/filer/folder/choose_images_resize_options.html:30 +#: templates/admin/filer/folder/choose_images_resize_options.html:32 msgid "Choose an existing thumbnail option or enter resize parameters:" msgstr "" -"Scegli un'opzione esistente miniatura o immettere i parametri di " +"Scegli un'opzione miniatura esistente o immetti i parametri di " "ridimensionamento:" -#: templates/admin/filer/folder/choose_images_resize_options.html:32 -msgid "Choose resize parameters:" -msgstr "Scegli i parametri di ridimensionamento:" - -#: templates/admin/filer/folder/choose_images_resize_options.html:35 +#: templates/admin/filer/folder/choose_images_resize_options.html:36 msgid "" "Warning: Images will be resized in-place and originals will be lost. Maybe " "first make a copy of them to retain the originals." @@ -626,11 +785,11 @@ msgstr "" "Attenzione: Le immagini verranno ridimensionate ora e le immagini originali " "andranno perse. Forse è meglio fare una copia per mantenere i file originali." -#: templates/admin/filer/folder/choose_images_resize_options.html:36 +#: templates/admin/filer/folder/choose_images_resize_options.html:39 msgid "Resize" msgstr "Ridimensiona" -#: templates/admin/filer/folder/choose_move_destination.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:35 msgid "" "Your account doesn't have permissions to move all of the selected files and/" "or folders." @@ -638,11 +797,11 @@ msgstr "" "Il tuo account non dispone delle autorizzazioni per spostare tutti i file e/" "o cartelle selezionati." -#: templates/admin/filer/folder/choose_move_destination.html:18 +#: templates/admin/filer/folder/choose_move_destination.html:47 msgid "There are no files and/or folders available to move." msgstr "Non ci sono file e/o cartelle a disponibili per lo spostamento." -#: templates/admin/filer/folder/choose_move_destination.html:20 +#: templates/admin/filer/folder/choose_move_destination.html:52 msgid "" "The following files and/or folders will be moved to a destination folder " "(retaining their tree structure):" @@ -650,22 +809,28 @@ msgstr "" "I seguenti file e/o cartelle verranno spostati in una cartella di " "destinazione (mantenendo la loro struttura ad albero):" -#: templates/admin/filer/folder/choose_move_destination.html:38 +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 msgid "Move" msgstr "Sposta" -#: templates/admin/filer/folder/choose_rename_format.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Non è autorizzato a spostare file nella stessa cartella" + +#: templates/admin/filer/folder/choose_rename_format.html:15 msgid "" "Your account doesn't have permissions to rename all of the selected files." msgstr "" "Il tuo account non dispone delle autorizzazioni per rinominare tutti i file " "selezionati." -#: templates/admin/filer/folder/choose_rename_format.html:15 +#: templates/admin/filer/folder/choose_rename_format.html:18 msgid "There are no files available to rename." -msgstr "Non ci sono file disponibili da ridimensionare." +msgstr "Non ci sono file disponibili da rinominare." -#: templates/admin/filer/folder/choose_rename_format.html:17 +#: templates/admin/filer/folder/choose_rename_format.html:20 msgid "" "The following files will be renamed (they will stay in their folders and " "keep original filename, only displayed filename will be changed):" @@ -674,260 +839,436 @@ msgstr "" "manterranno il nome del file originario, solo il nome visualizzato sarà " "modificato):" -#: templates/admin/filer/folder/choose_rename_format.html:54 +#: templates/admin/filer/folder/choose_rename_format.html:59 msgid "Rename" msgstr "Rinomina" -#: templates/admin/filer/folder/directory_listing.html:66 -msgid "Adds a new Folder" -msgstr "Aggiungi una nuova cartella" +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Torna alla cartella superiore" -#: templates/admin/filer/folder/directory_listing.html:66 -#: templates/image_filer/include/export_dialog.html:34 -msgid "New Folder" -msgstr "Nuova cartella" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Modifica i dettagli della cartella corrente" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "upload files" -msgstr "carica file" +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Modifica" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "Upload" -msgstr "Carica" +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Clicca qui per eseguire la ricerca della frase inserita" -#: templates/admin/filer/folder/directory_listing.html:74 -msgid "Go back to the parent folder" -msgstr "Torna alla cartella superiore" +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Cerca" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:18 -#, python-format -msgid "1 folder" -msgid_plural "%(counter)s folders" -msgstr[0] "1 cartella" -msgstr[1] "%(counter)s cartelle" +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Chiudi" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:19 -#, python-format -msgid "1 file" -msgid_plural "%(counter)s files" -msgstr[0] "1 file" -msgstr[1] "%(counter)s file" +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limita" -#: templates/admin/filer/folder/directory_listing.html:80 -msgid "Change current folder details" -msgstr "Modifica dettagli cartella corrente" +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Seleziona per limitare la ricerca alla cartella corrente" -#: templates/admin/filer/folder/directory_listing.html:80 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:43 -msgid "Change" -msgstr "Cambia" +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Limita la ricerca alla cartella corrente" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Cancella" -#: templates/admin/filer/folder/directory_table.html:13 +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Aggiungi una nuova cartella" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Nuova cartella" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Carica file" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "E' necessario selezionare prima una cartella" + +#: templates/admin/filer/folder/directory_table_list.html:16 msgid "Name" msgstr "Nome" -#: templates/admin/filer/folder/directory_table.html:23 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:29 +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Proprietario" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Dimensione" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Azione" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 #, python-format msgid "Change '%(item_label)s' folder details" -msgstr "Modifica dettagli cartella '%(item_label)s'" +msgstr "Modifica i dettagli della cartella '%(item_label)s'" -#: templates/admin/filer/folder/directory_table.html:30 -#: templates/admin/filer/folder/directory_table.html:45 -msgid "Owner" -msgstr "Proprietario" +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s cartella" +msgstr[1] "%(counter)s cartelle" +msgstr[2] "%(counter)s cartelle" -#: templates/admin/filer/folder/directory_table.html:37 +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s file" +msgstr[1] "%(counter)s file" +msgstr[2] "%(counter)s file" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Modifica i dettagli della cartella" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Cancella cartella" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 msgid "Select this file" msgstr "Seleziona questo file" -#: templates/admin/filer/folder/directory_table.html:39 -#: templates/admin/filer/folder/directory_table.html:43 -#: templates/admin/filer/folder/directory_table.html:44 +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 #, python-format msgid "Change '%(item_label)s' details" -msgstr "Cambia dettagli ' %(item_label)s ' " +msgstr "Modifica i dettagli di ' %(item_label)s ' " -#: templates/admin/filer/folder/directory_table.html:42 -#, python-format -msgid "Delete '%(item_label)s'" -msgstr "Cancella '%(item_label)s'" - -#: templates/admin/filer/folder/directory_table.html:42 -msgid "Delete" -msgstr "Cancella" - -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "Permissions" msgstr "Permessi" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "disabled" msgstr "disabilitato" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "enabled" msgstr "abilitato" -#: templates/admin/filer/folder/directory_table.html:50 -msgid "Move to clipboard" -msgstr "Sposta negli Appunti" +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Sposta i file selezionati negli Appunti" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "URL canonico '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Download '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Cancella file" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Posiziona qui i file o usa il bottone \"Carica file\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Posiziona il file da caricare in:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Carica" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "annulla" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Caricamento avvenuto!" -#: templates/admin/filer/folder/directory_table.html:58 -msgid "there are no files or subfolders" -msgstr "non ci sono file o sottocartelle" +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Caricamento annullato!" -#: templates/admin/filer/folder/directory_table.html:65 +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 msgid "previous" msgstr "precedente" -#: templates/admin/filer/folder/directory_table.html:69 +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 #, python-format -msgid "" -"\n" -" Page %(number)s of %(num_pages)s.\n" -" " -msgstr "" -"\n" -"Pagina %(number)s su %(num_pages)s ." +msgid "Page %(number)s of %(num_pages)s." +msgstr "Pagina %(number)s su %(num_pages)s." -#: templates/admin/filer/folder/directory_table.html:75 +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 msgid "next" msgstr "prossima" +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Seleziona tutti %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + #: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 msgid "Add new" -msgstr "Aggiungi nuova" +msgstr "Aggiungi nuovo" -#: templates/admin/filer/folder/new_folder_form.html:13 +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Amministrazione Django" + +#: templates/admin/filer/folder/new_folder_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." msgstr[0] "Correggi l'errore qui sotto." msgstr[1] "Correggi gli errori qui sotto." +msgstr[2] "Correggi gli errori qui sotto." -#: templates/admin/filer/folder/new_folder_form.html:28 +#: templates/admin/filer/folder/new_folder_form.html:30 msgid "Save" msgstr "Salva" -#: templates/admin/filer/image/change_form.html:21 -msgid "Full size preview" -msgstr "Anteprima a tutto schermo" +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" -#: templates/admin/filer/tools/search_form.html:8 -#: templates/admin/filer/tools/search_form.html:14 -msgid "Search" -msgstr "Cerca" +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" -#: templates/admin/filer/tools/search_form.html:13 -msgid "Enter your search phrase here" -msgstr "Inserisci la tua frase di ricerca qui" +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Appunti" -#: templates/admin/filer/tools/search_form.html:14 -msgid "Click here to" -msgstr "Clicca qui per" +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Incolla qui tutti gli elementi" -#: templates/admin/filer/tools/search_form.html:14 -msgid "run search for entered phrase" -msgstr "esegui la ricerca per frase inserita" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Sposta tutti i file negli Appunti in" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Svuota appunti" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "gli appunti sono vuoti" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "caricamento fallito" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" -#: templates/admin/filer/tools/search_form.html:15 -msgid "Check it to" -msgstr "Seleziona per" +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tipo" -#: templates/admin/filer/tools/search_form.html:15 -#: templates/admin/filer/tools/search_form.html:16 -msgid "limit the search to current folder" -msgstr "limitare la ricerca alla cartella corrente" +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Dimensione file" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modificato" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Creato" + +#: templates/admin/filer/tools/search_form.html:5 msgid "found" msgstr "trovato" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/search_form.html:5 msgid "and" msgstr "e" -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/tools/search_form.html:7 msgid "cancel search" msgstr "annulla ricerca" -#: templates/admin/filer/tools/upload_button_js.html:24 -#: templates/admin/filer/widgets/admin_file.html:7 -#: templates/admin/filer/widgets/admin_file.html:8 -msgid "file missing" -msgstr "file mancante" +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Cancella" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "o posiziona il file qui" -#: templates/admin/filer/tools/clipboard/clipboard.html:7 -msgid "Clipboard" -msgstr "Appunti" +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "nessun file selezionato" -#: templates/admin/filer/tools/clipboard/clipboard.html:19 -msgid "Paste all items here" -msgstr "Incolla qui tutti gli elementi" +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Consultazione" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "discard" -msgstr "annulla" +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Seleziona file" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "Move all clipboard files to" -msgstr "Sposta tutti i file negli Appunti in" +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" -#: templates/admin/filer/tools/clipboard/clipboard.html:43 -msgid "the clipboard is empty" -msgstr "gli Appunti sono vuoti" +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" -#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:11 -msgid "upload failed" -msgstr "caricamento fallito" +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:11 -msgid "no file selected" -msgstr "nessun file selezionato" +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:14 -#: templates/admin/filer/widgets/admin_file.html:15 -#: templates/admin/filer/widgets/admin_folder.html:7 -#: templates/admin/filer/widgets/admin_folder.html:8 -msgid "Lookup" -msgstr "Consultazione" +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:17 -#: templates/admin/filer/widgets/admin_folder.html:10 -msgid "Clear" -msgstr "Cancella" +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" -#: templates/admin/filer/widgets/admin_folder.html:5 -msgid "none selected" -msgstr "nessun elemento selezionato" +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." -#: templates/image_filer/folder.html:3 -#, python-format -msgid "Folder '%(folder_label)s' files" -msgstr "File cartella ' %(folder_label)s '" +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" -#: templates/image_filer/folder.html:6 -msgid "File name" -msgstr "Nome file" +#~ msgid "none selected" +#~ msgstr "none selected" -#: templates/image_filer/image_export_form.html:17 -msgid "export" -msgstr "esporta" +#~ msgid "Add Folder" +#~ msgstr "Add Folder" -#: templates/image_filer/image_export_form.html:27 -msgid "download image" -msgstr "scarica immagine" +#~ msgid "Subject Location" +#~ msgstr "Subject location" -#: templates/image_filer/include/export_dialog.html:13 -msgid "Folder name already taken." -msgstr "Nome cartella già utilizzato." +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" -#: templates/image_filer/include/export_dialog.html:15 -msgid "Submit" -msgstr "Invia" +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/ja/LC_MESSAGES/django.mo b/filer/locale/ja/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..f18d8161caf5db9f64f3f2ed44bd785e577614ca GIT binary patch literal 432 zcmYL^&rSj{5XLcj+M{O=J$TS)=`MzdMT~!d1S64<)%&q5MR${v6TeA zERo#Ko literal 0 HcmV?d00001 diff --git a/filer/locale/ja/LC_MESSAGES/django.po b/filer/locale/ja/LC_MESSAGES/django.po new file mode 100644 index 000000000..bb438c591 --- /dev/null +++ b/filer/locale/ja/LC_MESSAGES/django.po @@ -0,0 +1,1219 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Angelo Dini \n" +"Language-Team: Japanese (http://app.transifex.com/divio/django-filer/" +"language/ja/)\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/ja_JP/LC_MESSAGES/django.mo b/filer/locale/ja_JP/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c1581e2b203a7c6d65e5f68eac52b14ed7067ae9 GIT binary patch literal 446 zcmYLEO-}+b6vXIhkDfjB-~pngyBH!CF@69EMB;|5UQOM7yL8iSo3;?V`xpFs{uWzE zV3J8++c)#x{GFfuwmeQeFFY?jPd%?a0|uTy{`1bCq33|qs2XyIX9fNMW4V$P6*ZHU zLQ^ilL`%@hIJ~eGFYxoavN%%|Md=$}!iEO{9y13N_2Q(5<6E5EprlXx@m1^*y)x@? zW|*{sIb|q%k`)Mr#$0lAUvkNW9|oe#hs-yo7C#l7erzBKr)u3>iom5zI)!JUI4+9ZE2GB6C%6Sy43j;x0\n" +"Language-Team: Japanese (Japan) (http://app.transifex.com/divio/django-filer/" +"language/ja_JP/)\n" +"Language: ja_JP\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/lt/LC_MESSAGES/django.mo b/filer/locale/lt/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..de0708e706e860048164736266aa74b208f2d9a6 GIT binary patch literal 17336 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 literal 0 HcmV?d00001 diff --git a/filer/locale/lt/LC_MESSAGES/django.po b/filer/locale/lt/LC_MESSAGES/django.po new file mode 100644 index 000000000..fdd11fd6a --- /dev/null +++ b/filer/locale/lt/LC_MESSAGES/django.po @@ -0,0 +1,1273 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Matas Dailyda , 2015-2018 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Matas Dailyda , 2015-2018\n" +"Language-Team: Lithuanian (http://app.transifex.com/divio/django-filer/" +"language/lt/)\n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < " +"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? " +"1 : n % 1 != 0 ? 2: 3);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Išplėstinės funkcijos" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "kanoninis URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Objektai turi būti pasirinkti, kad su jais būtų galima atlikti veiksmus. " +"Jokie objektai nebuvo pakeisti." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "pasirinkta %(total_count)s" +msgstr[1] "pasirinkta %(total_count)s" +msgstr[2] "pasirinkta %(total_count)s" +msgstr[3] "pasirinkta %(total_count)s" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "%(folder_name)svidinių aplankų sąrašas " + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 iš %(cnt)s pasirinkta" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Nepasirinktas joks veiksmas." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Sėkmingai perkelta %(count)d failai į iškarpinę." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Perkelti pažymėtus failus į iškarpinę" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Sėkmingai išjungti leidimai %(count)d failams." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Sėkmingai įjungti leidimai %(count)d failams." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Įjungti leidimus pasirinktiems failams" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Išjungti leidimus pasirinktiems failams" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Sėkmingai pašalino %(count)d failus ir / ar aplankus." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Negalima pašalinti failų ir / ar aplankų" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Ar jūs esate tikri?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Pašalinti failus ir / ar aplankus" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Pašalinti pasirinktus failus ir / ar aplankus" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" +"Aplankai su %s pavadinimais jau egzistuoja pasirinktoje paskirties vietoje." + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Sėkmingai perkelti %(count)d failai ir / ar aplankai į aplanką " +"'%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Perkelti failus ir / ar aplankus" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Perkelti pasirinktus failus ir / ar aplankus" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Sėkmingai pervardinti %(count)d failai." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Pervardinti failus" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Sėkmingai nukopijuoti %(count)d failai ir / ar aplankai į aplanką " +"'%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopijuoti failus ir / ar aplankus" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopijuoti pasirinktus failus ir / ar aplankus" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Sėkmingai pakeistas %(count)d paveikslėlių dydis." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Pakeisti paveikslėlių dydžius" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Pakeisti pasirinktų paveikslėlių dydžius" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Priesaga kuri bus pridėta prie nukopijuotų failų pavadinimų." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Priesaga turi būti paprasta ir taisyklinga bylos pavadinimo dalis pvz. " +"\"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Nežinomas pervardinimo formato reikšmės raktažodis \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Negalimas pervardinimo formatas: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "miniatiūros nustatymas" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "plotis" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "aukštis" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "apkirpti" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "išdidinti" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" +"Miniatiūros nustatymas arba dydžio keitimo parametrai turi būti pasirinkti." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Subjekto vieta" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Pagrindinio subjekto vieta vaizde. Fomatas: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Netinkamas subjekto vietos formatas." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Subjekto vieta yra už paveikslėlio." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Jūsų įvestis: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Aplankas su tokiu pavadinimu jau egzistuoja." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer'is" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Medijos biblioteka" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "numatytasis alternatyvus tekstas" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "numatytoji antraštė" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "subjekto vieta" + +#: models/abstract.py:91 +msgid "image" +msgstr "paveikslėlis" + +#: models/abstract.py:92 +msgid "images" +msgstr "paveikslėliai" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "vartotojas" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "failai" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "iškarpinė" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "iškarpinės" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "failas" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "iškarpinės objektas" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "iškarpinės objektai" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "aplankas" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "failo dydis" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "turi visus privalomus duomenis" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "originalus failo pavadinimas" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "pavadinimas" + +#: models/filemodels.py:116 +msgid "description" +msgstr "apibūdinimas" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "savininkas" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "įkelta" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "pakeista" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Leidimai išjungti" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Įšjungti bet kokius leidimų tikrinimus šiai bylai. Byla bus viešai " +"pasiekiama bet kam." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "sukurta" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Aplankas" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Aplankai" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "visi objektai" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "tik šį objektą" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "šį objektą ir visus vidinius" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "leisti" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "neleisti" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tipas" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "grupė" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "visi" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "gali skaityti" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "gali redaguoti" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "gali pridėti vidinius" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "aplanko leidimas" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "aplanko leidimai" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "paimta data" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autorius" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "visada turi publikuoti autorystę" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "visada turi publikuoti autorių teises" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "plotis pikseliais." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "aukštis pikseliais." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "miniatiūros nustatymai" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Nerūšiuotos įkeltos bylos" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "failai su trūkstamais meta duomenimis" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "pradinis" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Vykdyti pasirinktą veiksmą" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Eiti" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Spauskite čia kad pasirinktumete objektus per visus puslapius" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Pasirinkti visus %(total_count)s failus ir / ar aplankus" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Išvalyti pasirinkimus" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Grįžti į pradinį administravimo puslapį" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Pradinis" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Grįžti į Failer'io apklikaciją" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Grįžti į pradinį aplanką" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Grįžti į '%(folder_name)s' aplanką" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Dublikatai" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Pasirintų failų ir / ar aplankų šalinimas pašalintų susijusius objektus, " +"tačiau jūsų vartotojas neturi leidimo šalinti šių objektų tipų:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Pasirinktų failų ir / ar aplankų šalinimas reikalautų pašalinti šiuos " +"apsaugotus susijusius objektus:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Ar tikrai norite pašalinti pasirinktus failus ir / ar aplankus? Visi susiję " +"objektai bus pašalinti:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Ne, grįžti atgal" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Taip, esu tikras" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Istorija" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Žiūrėti puslapyje" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Grįžti į" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "administravimo pradinis puslapis" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Aplanko piktograma" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Jūsų vartotojas neturi leidimų kopijuoti visus pasirinktus failus ir / ar " +"aplankus." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Grįžti atgal" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Nėra jokių paskyrimo aplankų." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Nėra jokiu failų ir / ar aplankų kopijavimui." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Šie failai ir / ar aplankai bus nukopijuoti į paskirtą aplanką (išlaikant jų " +"medžio struktūrą):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Paskyrimo aplankas:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopijuoti" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Neleidžiama kopijuoti bylų į tą patį aplanką" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"Jūsų vartotojas neturi leidimų keisti dydžius visiems pasirinktiems " +"paveikslėliams." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Nėra jokiu paveikslėlių dydžio keitimui." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Šių paveikslėlių dydis bus pakeistas:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Pasirinkite esamą miniatiūros nustatymą, arba įveskite dydžio keitimo " +"parametrus:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Įspėjimas: Paveikslėlių dydžiai bus pakeisti vietoje, ir originalas bus " +"pašalintas. Patartina atsikopijuoti paveikslėlį, kad nedingtų originalas." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Pakeisti dydį" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Jūsų vartotojas neturi leidimų perkelti visus pasirinktus failus ir / ar " +"aplankus." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Nėra jokiu failų ir / ar aplankų perkelimui." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Šie failai ir / ar aplankai bus perkelti į paskirtą aplanką (išlaikant jų " +"medžio struktūrą):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Perkelti" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Neleidžiama perkelti bylų į tą patį aplanką" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Jūsų vartotojas neturi leidimų pervardinti visus pasirinktus failus." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Nėra jokių failų pervardinimui." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Šie failai bus pervardinti (jie liks savo aplankuose ir pasiliks savo " +"originalius pavadinimus, pasikeis tik atvaizduojamas failo pavadinimas):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Pervardinti" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Grįžti į pirminį aplanką" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Keisti dabartinio aplanko detales" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Keisti" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Spausti čia kad būtų paleista paieška visai frazei" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Ieškoti" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Uždaryti" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limitas" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Pažymėti, kad paieška būtų apribota tik dabartiniame aplanke" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Apriboti paieška tik dabartiniame aplanke" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Pašalinti" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Sukuria naują aplanką" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Naujas aplankas" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "įkelti bylas" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Pirma turite pasirinkti aplanką" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Pavadinimas" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Savininkas" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Dydis" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Veiksmas" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Keisti '%(item_label)s' aplanko detales" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s aplankas" +msgstr[1] "%(counter)s aplankai" +msgstr[2] "%(counter)s aplankų" +msgstr[3] "%(counter)s aplankų" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s byla" +msgstr[1] "%(counter)s bylos" +msgstr[2] "%(counter)s bylų" +msgstr[3] "%(counter)s bylų" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Keisti aplanko detales" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Pašalinti aplanką" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Pasirinkti šį failą" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Keisti '%(item_label)s' detales" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Leidimai" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "išjungta" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "įjungta" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Perkelti pažymėtus failus į iškarpinę" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "Kanoninis url '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Parsisiųsti '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Pašalinti bylą" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Meskite bylas čia arba naudokit \"Įkelti bylas\" mygtuką" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Meskite bylą kad įkelti į:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Įkelti" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "atšaukti" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Įkelimas pavyko!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Įkelimas atšauktas!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "buvęs" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Puslapis %(number)s iš %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "kitas" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Pasirinkti visus %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Pridėti naują" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Django tinklalapio administravimas" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ištaisykite žemiau esančias klaidas." +msgstr[1] "Ištaisykite žemiau esančias klaidas." +msgstr[2] "Ištaisykite žemiau esančias klaidas." +msgstr[3] "Ištaisykite žemiau esančias klaidas." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Išsaugoti" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Iškarpinė" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Įkopijuoti visus objektus čia" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Perkelti visus iškarpinėje esančius failus į" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Išvalyti iškarpinę" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "iškarpinė tuščia" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "įkelimas nepavyko" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tipas" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Failo dydis" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Pakeistas" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Sukurtas" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "rasta" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "ir" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "atšaukti paiešką" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Išvalyti" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "arba meskite bylą čia" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "joks failas nepasirinktas" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Informacijos ieškojimas" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Pasirinkti bylą" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/lt_LT/LC_MESSAGES/django.mo b/filer/locale/lt_LT/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..5e380751c44dd331e04a79b4e13b3f02c62d35b0 GIT binary patch literal 590 zcma)2%}yIJ7)*aod#rlwVUQ@wiaKitP!lH`N(+&Y5)q-L*UDs_jU&fic^yP0UW3=` zv(!##xb~Aq{%n6U;&wL zpV4C)Dw&AJlfntpXyL8nxG3>V4>9n7R&)!&xZuZ7Z`xm}L}&r};xNm59$ z=9nnI+z6wDL3`h)XfM65d6tQ~?)Ye;7V_AII>O7IVg%O5(-U_06hknU;v5wG i-w;MQx{>svG0gkve`&CwvE|?(4}$0Da-5`tr1cj;D58G= literal 0 HcmV?d00001 diff --git a/filer/locale/lt_LT/LC_MESSAGES/django.po b/filer/locale/lt_LT/LC_MESSAGES/django.po new file mode 100644 index 000000000..a7dcb78dc --- /dev/null +++ b/filer/locale/lt_LT/LC_MESSAGES/django.po @@ -0,0 +1,1236 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Angelo Dini \n" +"Language-Team: Lithuanian (Lithuania) (http://app.transifex.com/divio/django-" +"filer/language/lt_LT/)\n" +"Language: lt_LT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < " +"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? " +"1 : n % 1 != 0 ? 2: 3);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/nb/LC_MESSAGES/django.mo b/filer/locale/nb/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..cc24295a701c3595f1360c364c2091be6778dd1a GIT binary patch literal 12700 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, 2013 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Eirik Krogstad , 2013\n" +"Language-Team: Norwegian Bokmål (http://app.transifex.com/divio/django-filer/" +"language/nb/)\n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Avansert" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Du må velge noen elementer for å utføre handlinger på dem. Ingen elementer " +"er endret." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s valgt" +msgstr[1] "Alle %(total_count)s valgt" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 av %(cnt)s valgt" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Ingen handling valgt." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Flyttet %(count)d filer til utklippstavlen." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Flytt valgte filer til utklippstavlen" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Fjernet tillatelser for %(count)d filer." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Satte tillatelser for %(count)d filer." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Sett tillatelser for valgte filer" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Fjern tillatelser for valgte filer" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Slettet %(count)d filer og/eller mapper." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Kan ikke slette filer og/eller mapper" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Er du sikker?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Slett filer og/eller mapper" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Slett valgte filer og/eller mapper" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Flyttet %(count)d filer og/eller mapper til mappen \"%(destination)s\"." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Flytt filer og/eller mapper" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Flytt valgte filer og/eller mapper" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Endret navn på %(count)d filer." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Endre navn på filer" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Kopierte %(count)d filer og/eller mapper til mappen \"%(destination)s\"." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopier filer og/eller mapper" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopier valgte filer og/eller mapper" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Endret størrelse på %(count)d bilder." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Endre størrelse på bilder" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Endre størrelse på valgte bilder" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Endelse som vil tilføyes filnavn på kopierte filer." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Endelse bør være en gyldig, enkel del av filnavnet med små bokstaver, som " +"\"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Ugyldig nøkkel \"%(key)s\" for endring av navn." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Ugyldig format for endring av navn: %(error)s" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "miniatyrbildevalg" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "bredde" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "høyde" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "beskjæring" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "oppskalering" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Miniatyrbildevalg eller parametre for endring av størrelse må velges." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Fokuseringsområde" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "En mappe med dette navnet eksisterer allerede." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "standard alternativtekst" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "standard undertekst" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "fokuseringsområde" + +#: models/abstract.py:91 +msgid "image" +msgstr "bilde" + +#: models/abstract.py:92 +msgid "images" +msgstr "bilder" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "bruker" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "filer" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "utklippstavle" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "utklippstavler" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "fil" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "element på utklippstavle" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "elementer på utklippstavle" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "mappe" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "filstørrelse" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "har alle påkrevde data" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "originalt filnavn" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "navn" + +#: models/filemodels.py:116 +msgid "description" +msgstr "beskrivelse" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "eier" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "lastet opp" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "endret" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Tillatelser er deaktivert" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "opprettet" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Mappe" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Mapper" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "alle elementer" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "kun dette elementet" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "dette elementet og alle underliggende nivå" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "type" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "gruppe" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "alle" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "kan lese" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "kan redigere" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "kan legge til undernivåer" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "tillatelse for mappe" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "tillatelser for mappe" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "dato bildet ble tatt" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "opphavsperson" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "må alltid publisere opphavsperson" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "må alltid publisere opphavsrett" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "filer med manglende metadata" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "rot" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Utfør den valgte handlingen" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Utfør" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Klikk her for å velge objekter på tvers av alle sider" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Velg alle %(total_count)s filer og/eller mapper" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Tøm utvalg" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Gå tilbake til administrasjonssiden" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Hjem" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Gå tilbake til Filer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Gå tilbake til rotmappen" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Gå tilbake til mappen \"%(folder_name)s\"" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Å slette de valgte filene og/eller mappene ville resultere i sletting av " +"relaterte objekter, men din konto har ikke tillatelse til å slette objekter " +"av følgende typer:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Å slette de valgte filene og/eller mappene ville kreve å slette følgende " +"beskyttede relaterte objekter:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Er du sikker på at du vil slette de valgte filene og/eller mappene? Alle de " +"følgende objektene og deres relaterte elementer vil bli slettet:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Historie" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Se på nettstedet" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Gå tilbake til" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "administrasjonssiden" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Mappeikon" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Din konto har ikke tillatelse til å kopiere alle de valgte filene og/eller " +"mappene." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Det er ingen målmapper tilgjengelig." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Det er ingen filer og/eller mapper å kopiere." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"De følgende filene og/eller mappene vil bli kopiert til en målmappe " +"(mappestruktur vil beholdes):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Målmappe:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopier" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"Din konto har ikke tillatelse til å endre størrelse på alle valgte bilder." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Det er ingen bilder å endre størrelse på." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "De følgende bildene vil få endret størrelse:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Velg et eksisterende miniatyrbildevalg eller skriv inn parametre for endring " +"av størrelse:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Advarsel: Bilder vil få sin størrelse endret, og originalene vil gå tapt. " +"Det kan være ønskelig å først gjøre en kopi for å beholde originalene." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Endre størrelse" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Din konto har ikke tillatelse til å flytte alle de valgte filene og/eller " +"mappene." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Det er ingen filer og/eller mapper å flytte." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"De følgende filene og/eller mappene vil bli flyttet til en målmappe " +"(mappestruktur vil beholdes):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Flytt" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" +"Din konto har ikke tillatelse til å endre navn på alle de valgte filene." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Det er ingen filer å endre navn på." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"De følgende filene vil få endret navn (de vil forbli på samme sted og " +"beholde originalt filnavn, bare visningsnavn vil endres):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Endre navn" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Gå tilbake til overordnet nivå" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Endre detaljer for gjeldende mappe" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Endre" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Søk" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Slett" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Legger til en ny mappe" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Ny mappe" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Navn" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Eier" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Endre detaljer for mappen \"%(item_label)s\"" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Velg denne filen" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Endre detaljer for \"%(item_label)s\"" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Tillatelser" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "deaktivert" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "aktivert" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Flytt valgte filer til utklippstavlen" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Last opp" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "forrige" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "neste" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Legg til ny" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Vennligst rett feilen under" +msgstr[1] "Vennligst rett feilene under." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Lagre" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Utklippstavle" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Lim inn alle elementer her" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Flytt alle filer på utklippstavlen til" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "utklippstavlen er tom" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "feil ved opplasting" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "funnet" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "og" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "avbryt søk" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Tøm" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "ingen fil valgt" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Slå opp" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/nl_NL/LC_MESSAGES/django.mo b/filer/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c9e62df2fddfbcac13f14e378f30af2c3995ea75 GIT binary patch literal 21260 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 C$(P*# literal 0 HcmV?d00001 diff --git a/filer/locale/nl_NL/LC_MESSAGES/django.po b/filer/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 000000000..0cbda5a3f --- /dev/null +++ b/filer/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,1245 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Alexander Schoemaker , 2012 +# Alexander Schoemaker , 2012 +# Edwin Janssen, 2023 +# Evelijn Saaltink , 2017 +# Jeroen, 2018 +# Maikel Wever, 2013 +# Maikel Wever, 2013 +# Stefan van den Eertwegh , 2023 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Stefan van den Eertwegh , 2023\n" +"Language-Team: Dutch (Netherlands) (http://app.transifex.com/divio/django-filer/language/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +#| msgid "" +#| "ccount doesn't have permissions to rename all of the selected files." +msgid "You do not have permission to upload files." +msgstr "Je hebt geen rechten om bestanden te uploaden." + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "Kan map niet vinden om te uploaden. Herlaad de pagina en probeer het opnieuw." + +#: admin/clipboardadmin.py:20 +msgid "" +"Can't use this folder, Permission Denied. Please select another folder." +msgstr "Kan deze map niet gebruiken, rechten geweigerd. Kies een andere map." + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Geavanceerd" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "canonieke URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "De actie kan niet worden uitgevoerd omdat er zijn geen items geselecteerd." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s geselecteerd" +msgstr[1] "Alle %(total_count)s geselecteerd" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Inhoud van map %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 van %(cnt)s geselecteerd" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Geen actie geselecteerd." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d bestanden zijn succesvol verplaatst naar het klembord." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Verplaats geselecteerde bestanden naar het klembord" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Toegangsrechten succesvol uitgeschakeld voor %(count)d bestanden." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Toegangsrechten succesvol ingeschakeld voor %(count)d bestanden." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Schakel toegangsrechten in voor geselecteerde bestanden" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Schakel toegangsrechten uit voor geselecteerde bestanden" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d bestanden en/of mappen zijn succesvol verwijderd." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Bestanden en/of mappen kunnen niet worden verwijderd" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Weet je het zeker?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Verwijder bestanden en/of mappen" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Verwijder geselecteerde bestanden en/of mappen" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Er bestaan al mappen met de namen %s op de geselecteerde bestemming" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "%(count)d bestanden en of mappen zijn succesvol verplaatst naar map '%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Verplaats bestanden en/of mappen" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Verplaats geselecteerde bestanden en/of mappen" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d bestanden zijn succesvol hernoemd." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Hernoem bestanden" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "%(count)d bestanden en/of mappen zijn succesvol gekopieerd naar map '%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopieer bestanden en/of mappen" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopieer geselecteerde bestanden en/of mappen" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Afmetingen van %(count)d afbeeldingen zijn succesvol aangepast." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Afmetingen aanpassen" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Afmetingen aanpassen van geselecteerde afbeeldingen" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Achtervoegsel wordt toegevoegd aan bestandsnaam van gekopieerde bestanden" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "Achtervoegsel moet een geldige waarde zijn in kleine letters, bv. \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Type \"%(key)s\" voor het hernoemen van bestandsnamen is ongeldig." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Ongeldige waarde voor het hernoemen van bestandsnamen: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "thumbnail optie" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "breedte" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "hoogte" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "uitsnijden" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "opschalen" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Thumbnail optie of afmetingsopties moet zijn geselecteerd" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Locatie van onderwerp" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Locatie van het hoofdonderwerp van de scène. Formaat: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Ongeldig locatieformaat van het onderwerp" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Locatie van het onderwerp bevindt zich buiten de afbeelding." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Je invoer: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "Wie" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "Wat" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Er bestaat al een map met deze naam." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Bestandsbeheer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Mediabibliotheek" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "standaard alt. tekst" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "standaard titel" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "locatie van onderwerp" + +#: models/abstract.py:91 +msgid "image" +msgstr "afbeelding" + +#: models/abstract.py:92 +msgid "images" +msgstr "afbeeldingen" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "Afbeelding formaat niet herkend of afbeelding grootte overtreft limiet van %(max_pixels)d miljoen pixels bij een factor twee of meer. Voor opnieuw uploaden, check bestandsformaat of wijzig grootte afbeelding van %(width)d x %(height)d resolutie of lager." + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "Afbeelding grootte (%(pixels)d miljoen pixels) overtreft limiet van %(max_pixels)d miljoen pixels. Voor het opnieuw uploaden, afbeelding grootte van %(width)d x %(height)d resolutie of lager." + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "gebruiker" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "bestanden" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "klembord" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "klemborden" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "bestand" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "klembord item" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "klembord items" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "map" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "bestandsgrootte" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "heeft allen verplichte eigenschappen" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "oorspronkelijke bestandsnaam" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "naam" + +#: models/filemodels.py:116 +msgid "description" +msgstr "omschrijving" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "eigenaar" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "geüpload op" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "gewijzigd op" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Toegangsrechten uitgeschakeld" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "Schakel controle op toegangsrechten uit voor dit bestand. Het bestand zal publiek toegankelijk zijn voor iedereen" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "ouder" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "aangemaakt op" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Map" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Mappen" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "alle items" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "alleen dit item" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "dit item en alle onderliggende items" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "overerven" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "toestaan" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "afwijzen" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "type" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "groep" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "iedereen" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "mag lezen" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "mag wijzigen" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "mag onderliggende items toevoegen" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "toegangsrecht folder" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "toegangsrechten folder" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "Map kan niet geselecteerd worden met type \"alle items\"." + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "Map moet geselecteerd worden wanneer type niet \"alle items\" is." + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "Gebruiker of groep kan niet geselecteerd worden samen met \"iedereen\"." + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "Ten minste één gebruiker, groep of \"iedereen\" moet worden geselecteerd." + +#: models/foldermodels.py:360 +#| msgid "Folders" +msgid "All Folders" +msgstr "Alle Mappen" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "Logisch Pad" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "Gebruiker:{user}" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "Groep: {group}" + +#: models/foldermodels.py:375 +#| msgid "everybody" +msgid "Everybody" +msgstr "Iedereen" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "Bewerken" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "Lezen" + +#: models/foldermodels.py:390 +#| msgid "can add children" +msgid "Add children" +msgstr "Toevoegen kinderen" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "datum" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "auteur" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "naam auteur altijd publiceren" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "auteursrechten altijd publiceren" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "breedte in pixel." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "hoogte in pixel." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "thumbnail-opties" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Ongesorteerde uploads" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "bestanden met ontbrekende meta gegevens" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "hoofdmap" + +#: settings.py:273 +msgid "Show table view" +msgstr "Toon tabel weergave" + +#: settings.py:278 +#| msgid "thumbnail option" +msgid "Show thumbnail view" +msgstr "Toon thumbnail weergave" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Geselecteerde actie uitvoeren" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Uitvoeren" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Klik hier om objecten over alle pagina's te selecteren" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Selecteer alle %(total_count)s bestanden en/of mappen" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Selectie wissen" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Ga terug naar admin homepage" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Home" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Ga terug naar Bestandsbeheer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Ga terug naar de hoofdmap" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Ga terug naar map '%(folder_name)s'" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicaten" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "Het verwijderen van de geselecteerde bestanden en/of mappen resulteert in het verwijderen van gerelateerde objecten. Je hebt echter geen toegangsrechten voor het verwijderen van de volgende objecttypes:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "Het verwijderen van de geselecteerde bestanden en/of mappen leidt tot het verwijderen van de volgende beschermde gerelateerde objecten:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "Weet je zeker dat je de geselecteerde bestanden en/of folders wilt verwijderen? Alle volgende objecten en gerelateerde items zullen worden verwijderd: " + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Nee, ga terug" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Ja, ik weet het zeker" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Geschiedenis" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Bekijk op site" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Ga terug naar" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "admin homepage" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Map icoon" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files " +"and/or folders." +msgstr "Je account heeft geen toegangsrechten voor het kopiëren van de geselecteerde bestanden en/of mappen" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Neem me mee terug" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Er zijn geen bestemmingsmappen beschikbaar." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Er zijn geen bestanden en/of mappen beschikbaar om te kopiëren." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "De volgende bestanden en/of mappen zullen worden gekopieerd naar een bestemmingsmap (structuur blijft behouden):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Bestemmingsmap:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopiëren" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Het is niet toegestaan om bestanden naar dezelfde map te kopiëren" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "Je account heeft geen toegangsrechten om afmetingen van alle geselecteerde afbeeldingen aan te passen." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Er zijn geen afbeeldingen beschikbaar voor het aanpassen van afmetingen." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "De afmetingen van de volgende afbeeldingen zullen worden aangepast:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "Kies een bestaande thumbnail optie of voer afmetingsopties in:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "Waarschuwing: bestaande afmetingen van afbeeldingen zullen worden aangepast. Oorspronkelijke bestanden zullen verloren gaan. Maak eventueel eerst een kopie om de oorspronkelijke bestanden te behouden." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Afmetingen aanpassen" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files " +"and/or folders." +msgstr "Je account heeft geen toegangsrechten om alle geselecteerde bestanden en/of mappen te verplaatsen." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Er zijn geen bestanden en/of mappen beschikbaar om te verplaatsen." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "De volgende bestanden en/of mappen zullen worden verplaatst naar een bestemmingsmap (huidige mapstructuur blijft behouden): " + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Verplaatsen" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Het is niet toegestaan om bestanden naar dezelfde map te verplaatsen" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Je account heeft onvoldoende toegangsrechten om alle geselecteerde bestanden te hernoemen." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Er zijn geen bestanden beschikbaar om te hernoemen." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "De volgende bestanden zullen worden hernoemd (de oorspronkelijke mapstructuur en bestandsnamen blijven behouden, alleen de weergave zal worden gewijzigd):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Hernoemen" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Ga terug naar de bovenliggende folder" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Wijzig eigenschappen van huidige map" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Wijzigen" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Klik hier om een zoekopdracht te doen voor de ingevoerde woorden" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Zoeken" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Sluiten" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limiteren" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Vink het aan om de zoekopdracht te beperken tot de huidige map" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Zoekopdracht beperken tot huidige map" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Verwijderen" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Voegt een nieuwe map toe" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Nieuwe map" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Bestanden uploaden" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Je moet eerst een map selecteren" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Naam" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Eigenaar" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Grootte" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Actie" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Wijzig eigenschappen map '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s map" +msgstr[1] "%(counter)s mappen" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s bestand" +msgstr[1] "%(counter)s bestanden" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Wijzig eigenschappen van de map" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Verwijder map" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Selecteer dit bestand" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Wijzig eigenschappen '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Toegangsrechten" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "uitgeschakeld" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "ingeschakeld" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "URL gekopieerd naar het klembord" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Canonical url '%(item_label)s'" +msgstr "Gebruikelijke url '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Download '%(item_label)s'" +msgstr "Download '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Verwijder bestand" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Sleep hier bestanden naartoe of gebruik de \"Bestanden uploaden\"-knop" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Sleep je bestand om te uploaden naar:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Uploaden" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "annuleer" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Upload succesvol!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Upload geannuleerd!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "vorige" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Pagina %(number)s van %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "volgende" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Selecteer alle %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +#| msgid "Select this file" +msgid "Select all" +msgstr "Alles selecteren" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +#| msgid "Filer" +msgid "Files" +msgstr "Bestanden" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Toevoegen nieuwe" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Django site beheer" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Herstel onderstaande fout." +msgstr[1] "Herstel onderstaande fouten." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Opslaan" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "Je browser ondersteunt geen audio." + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "Je browser ondersteunt geen video." + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Klembord" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Alle items hier plakken" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Verplaats alle klembord items naar" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Leeg klembord" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "het klembord is leeg" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "upload mislukt" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "Download" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "Uitvouwen" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +#| msgid "file missing" +msgid "File is missing" +msgstr "Bestand ontbreekt" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Type" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Bestandsgrootte" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Gewijzigd" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Aangemaakt" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "gevonden" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "en" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "annuleer zoekopdracht" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Wissen" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "of sleep je bestand hier naartoe" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "geen bestand geselecteerd" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Opzoeken" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Kies bestand" + +#: templates/admin/filer/widgets/admin_folder.html:16 +#| msgid "Choose File" +msgid "Choose Folder" +msgstr "Kies Map" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "Bestand \"{file_name}\": Upload geweigerd door het beveiligingsbeleid van de site" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "Bestand \"{file_name}\": {file_type} upload geweigerd door het beveiligingsbeleid van de site" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "Bestand \"{file_name}\": HTML upload geweigerd door het beveiligingsbeleid van de site" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "Bestand \"{file_name}\": Afgewezen wegens mogelijke kwetsbaarheid voor cross-site scripting" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "Bestand \"{file_name}\": SVG bestandsformaat niet herkend" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/nn/LC_MESSAGES/django.mo b/filer/locale/nn/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..379659ff79358becabc7165995696314e4eb6640 GIT binary patch literal 12594 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 literal 0 HcmV?d00001 diff --git a/filer/locale/nn/LC_MESSAGES/django.po b/filer/locale/nn/LC_MESSAGES/django.po new file mode 100644 index 000000000..255a1f963 --- /dev/null +++ b/filer/locale/nn/LC_MESSAGES/django.po @@ -0,0 +1,1253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Eirik Krogstad , 2013 +# Eirik Krogstad , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Eirik Krogstad , 2013\n" +"Language-Team: Norwegian Nynorsk (http://app.transifex.com/divio/django-" +"filer/language/nn/)\n" +"Language: nn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Avansert" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Element må vere vald for å utføre handlingar på dei. Ingen element vart " +"endra." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s vald" +msgstr[1] "Alle %(total_count)s vald" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 av %(cnt)s vald" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Ingen handling vald." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Flytta %(count)d filer til utklippstavla." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Flytt valde filer til utklippstavla" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Fjerna løyve for %(count)d filer." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Satte løyve for %(count)d filer." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Sett løyve for valde filer" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Fjern løyve for valde filer" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Sletta %(count)d filer og/eller mapper." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Kan ikkje slette filer og/eller mapper" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Er du sikker?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Slett filer og/eller mapper" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Slett valde filer og/eller mapper" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "Flytta %(count)d filer og/eller mapper til mappa \"%(destination)s\"." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Flytt filer og/eller mapper" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Flytt valde filer og/eller mapper" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Endra namn på %(count)d filer." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Endre namn på filer" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Kopierte %(count)d filer og/eller mapper til mappa \"%(destination)s\"." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Kopier filer og/eller mapper" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Kopier valde filer og/eller mapper" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Endra storleik på %(count)d bilete." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Endre storleik på bilete" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Endre storleik på valde bilete" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Ending som vert tilføyd filnamn på kopierte filer." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Ending bør vere ein gyldig, enkel del av filnamnet med små bokstavar, som " +"\"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Ugyldig nykel \"%(key)s\" for endring av namn." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Ugyldig format for endring av namn: %(error)s" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "miniatyrbileteval" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "breidd" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "høgd" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "skjering" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "oppskalering" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Miniatyrbileteval eller parametrar for endring av storleik må veljast." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Fokuseringsområde" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Ein mappe med dette namnet eksisterer allereie." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "standard alternativtekst" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "standard undertekst" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "fokuseringsområde" + +#: models/abstract.py:91 +msgid "image" +msgstr "bilete" + +#: models/abstract.py:92 +msgid "images" +msgstr "bilete" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "brukar" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "filer" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "utklippstavle" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "utklippstavler" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "fil" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "element på utklippstavle" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "element på utklippstavle" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "mappe" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "filstorleik" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "har alle påkravde data" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "originalt filnamn" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "namn" + +#: models/filemodels.py:116 +msgid "description" +msgstr "beskriving" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "eigar" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "lasta opp" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "endra" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Løyve er deaktivert" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "oppretta" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Mappe" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Mapper" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "alle element" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "berre dette elementet" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "dette elementet og alle underliggjande nivå" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "type" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "gruppe" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "alle" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "kan lese" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "kan redigere" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "kan leggje til undernivå" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "løyve for mappe" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "løyve for mappe" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "dato biletet vert tatt" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "opphavsperson" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "må alltid publisere opphavsperson" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "må alltid publisere opphavsrett" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "filer med manglande metadata" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "rot" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Utfør den valde handlinga" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Utfør" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Klikk her for å velje objekt på tvers av alle sider" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Vel alle %(total_count)s filer og/eller mapper" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Tøm utval" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Gå tilbake til administrasjonssida" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Heim" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Gå tilbake til Filer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Gå tilbake til rotmappa" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Gå tilbake til mappa \"%(folder_name)s\"" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Å slette dei valde filene og/eller mappene ville resultere i sletting av " +"relaterte objekt, men din konto har ikkje løyve til å slette objekt av " +"følgjande typer:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Å slette dei valde filene og/eller mappene ville kreve å slette følgjande " +"beskytta relaterte objekt:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Er du sikker på at du vil slette dei valde filene og/eller mappene? Alle dei " +"følgjande objekta og deira relaterte element vil verte sletta:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Historie" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Se på nettstaden" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Gå tilbake til" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "administrasjonssida" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Mappeikon" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Din konto har ikkje løyve til å kopiere alle dei valde filene og/eller " +"mappene." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Det er ingen målmapper tilgjengelig." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Det er ingen filer og/eller mapper å kopiere." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Dei følgjande filene og/eller mappene vil verte kopiert til ein målmappe " +"(mappestruktur vil behaldes):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Målmappe:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Kopier" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "Din konto har ikkje løyve til å endre storleik på alle valde bilete." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Det er ingen bilete å endre storleik på." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Dei følgjande bileta vil få endra storleik:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Vel eit eksisterande miniatyrbileteval eller skriv inn parametrar for " +"endring av storleik:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Åtvaring: Bileta vil få sin storleik endra, og originalane vil gå tapt. Det " +"kan være ønskjeleg å først gjere ein kopi for å behalde originalane." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Endre storleik" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Din konto har ikke løyve til å flytte alle dei valde filene og/eller mappene." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Det er ingen filer og/eller mapper å flytte." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Dei følgjande filene og/eller mappene vil verte flytta til ein målmappe " +"(mappestruktur vil behaldes):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Flytt" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Din konto har ikkje løyve til å endre namn på alle dei valde filene." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Det er ingen filer å endre namn på." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Dei følgjande filene vil få endra namn (dei vil framleis vere på samme stad " +"og behalde originalt filnamn, berre visningsnamn vil verte endra):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Endre namn" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Gå tilbake til overordna nivå" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Endre detaljar for gjeldande mappe" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Endre" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Søk" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Slett" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Legg til ein ny mappe" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Ny mappe" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Namn" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Eigar" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Endre detaljar for mappen \"%(item_label)s\"" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Vel denne filen" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Endre detaljar for \"%(item_label)s\"" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Løyve" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "deaktivert" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "aktivert" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Flytt valde filer til utklippstavla" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Last opp" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "førre" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "neste" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Legg til ny" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Ver venleg og rett feilen under" +msgstr[1] "Ver venleg og rett feila under." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Lagre" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Utklippstavle" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Lim inn alle element her" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Flytt alle filer på utklippstavla til" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "utklippstavla er tom" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "feil ved opplasting" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "funne" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "og" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "avbryt søk" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Tøm" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "ingen fil vald" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Slå opp" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/pl/LC_MESSAGES/django.mo b/filer/locale/pl/LC_MESSAGES/django.mo index 6307dfc78171a3cd3dd5f5cd0149437da1565211..99ec9f2ea6d640f9288703f648ff7152db8ab30f 100644 GIT binary patch literal 17155 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 diff --git a/filer/locale/pl/LC_MESSAGES/django.po b/filer/locale/pl/LC_MESSAGES/django.po index 955e1f67c..1f59250c7 100644 --- a/filer/locale/pl/LC_MESSAGES/django.po +++ b/filer/locale/pl/LC_MESSAGES/django.po @@ -3,485 +3,636 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: -# crunchorn , 2010. +# Translators: +# Translators: +# crunchorn , 2010 +# Grzegorz Biały , 2017 +# Mateusz Marzantowicz , 2013 +# Piotr Wojcik , 2016 msgid "" msgstr "" -"Project-Id-Version: django-filer\n" +"Project-Id-Version: django Filer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 19:10+0200\n" -"PO-Revision-Date: 2012-09-03 20:12+0100\n" -"Last-Translator: Stefan Foulis \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Grzegorz Biały , 2017\n" +"Language-Team: Polish (http://app.transifex.com/divio/django-filer/language/" +"pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && " +"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && " +"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" -#: views.py:103 -msgid "Folder with this name already exists." +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." msgstr "" -#: admin/fileadmin.py:41 +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 msgid "Advanced" msgstr "Zaawansowane" -#: admin/folderadmin.py:324 admin/folderadmin.py:427 +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "kanoniczny URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" +"Należy zaznaczyć elementy aby wykonań na nich jakąś akcję. Nie zaznaczono " +"żadnych elementów." -#: admin/folderadmin.py:344 +#: admin/folderadmin.py:434 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "zaznaczono %(total_count)s" +msgstr[1] "zaznaczono %(total_count)s" +msgstr[2] "Zaznaczono wszystkie %(total_count)s" +msgstr[3] "Zaznaczono wszystkie %(total_count)s" -#: admin/folderadmin.py:377 +#: admin/folderadmin.py:460 #, python-format -msgid "0 of %(cnt)s selected" +msgid "Directory listing for %(folder_name)s" msgstr "" -#: admin/folderadmin.py:456 +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 z %(cnt)s zaznaczonych" + +#: admin/folderadmin.py:612 msgid "No action selected." -msgstr "" +msgstr "Nie zaznaczono akcji." -#: admin/folderadmin.py:497 +#: admin/folderadmin.py:664 #, python-format msgid "Successfully moved %(count)d files to clipboard." -msgstr "" +msgstr "Pomyślnie przeniesiono %(count)d plików do schowka." -#: admin/folderadmin.py:503 +#: admin/folderadmin.py:669 msgid "Move selected files to clipboard" -msgstr "" +msgstr "Przenieś zaznaczone pliki do schowka" -#: admin/folderadmin.py:537 +#: admin/folderadmin.py:709 #, python-format msgid "Successfully disabled permissions for %(count)d files." -msgstr "" +msgstr "Pomyślnie wyłączono uprawnienia dla %(count)d plików." -#: admin/folderadmin.py:541 +#: admin/folderadmin.py:711 #, python-format msgid "Successfully enabled permissions for %(count)d files." -msgstr "" +msgstr "Pomyślnie włączono uprawnienia dla %(count)d plików." -#: admin/folderadmin.py:550 +#: admin/folderadmin.py:719 msgid "Enable permissions for selected files" -msgstr "" +msgstr "Włącz uprawnienia dla wybranych plików" -#: admin/folderadmin.py:555 +#: admin/folderadmin.py:725 msgid "Disable permissions for selected files" -msgstr "" +msgstr "Wyłącz uprawnienia dla wybranych plików" -#: admin/folderadmin.py:623 +#: admin/folderadmin.py:789 #, python-format msgid "Successfully deleted %(count)d files and/or folders." -msgstr "" +msgstr "Pomyślnie usunięto %(count)d plików i/lub katalogów." -#: admin/folderadmin.py:630 +#: admin/folderadmin.py:794 msgid "Cannot delete files and/or folders" -msgstr "" +msgstr "Nie można usunąć plików i/lub katalogów" -#: admin/folderadmin.py:632 +#: admin/folderadmin.py:796 msgid "Are you sure?" -msgstr "" +msgstr "Czy na pewno?" -#: admin/folderadmin.py:637 +#: admin/folderadmin.py:802 msgid "Delete files and/or folders" -msgstr "" +msgstr "Usuń pliki i/lub katalogi" -#: admin/folderadmin.py:656 +#: admin/folderadmin.py:823 msgid "Delete selected files and/or folders" -msgstr "" +msgstr "Usuń zaznaczone pliki i/lub katalogi" -#: admin/folderadmin.py:771 +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Katalogi z nazwami %s już istnieją w podanej lokacji" + +#: admin/folderadmin.py:934 #, python-format msgid "" "Successfully moved %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" +"Pomyślnie przeniesiono %(count)d plików i/lub katalogów do '%(destination)s'." -#: admin/folderadmin.py:778 admin/folderadmin.py:780 +#: admin/folderadmin.py:942 admin/folderadmin.py:944 msgid "Move files and/or folders" -msgstr "" +msgstr "Przenieś pliki i/lub katalogi" -#: admin/folderadmin.py:797 +#: admin/folderadmin.py:959 msgid "Move selected files and/or folders" -msgstr "" +msgstr "Przenieś zaznaczone pliki i/lub katalogi" -#: admin/folderadmin.py:854 +#: admin/folderadmin.py:1016 #, python-format msgid "Successfully renamed %(count)d files." -msgstr "" +msgstr "Pomyślnie zmieniono nazwę %(count)d plików." -#: admin/folderadmin.py:862 admin/folderadmin.py:864 admin/folderadmin.py:881 +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 msgid "Rename files" -msgstr "" +msgstr "Zmień nazwy plików" -#: admin/folderadmin.py:975 +#: admin/folderadmin.py:1137 #, python-format msgid "" "Successfully copied %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" +"Pomyślnie skopiowano %(count)d plików i/lub katalogów di '%(destination)s'." -#: admin/folderadmin.py:989 admin/folderadmin.py:991 +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 msgid "Copy files and/or folders" -msgstr "" +msgstr "Skopiuj pliki i/lub katalogi" -#: admin/folderadmin.py:1010 +#: admin/folderadmin.py:1174 msgid "Copy selected files and/or folders" -msgstr "" +msgstr "Skopiuj zaznaczone pliki i/lub katalogi" -#: admin/folderadmin.py:1105 +#: admin/folderadmin.py:1279 #, python-format msgid "Successfully resized %(count)d images." -msgstr "" +msgstr "Pomyślnie zmieniono rozmiar %(count)d obrazów." -#: admin/folderadmin.py:1113 admin/folderadmin.py:1115 +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 msgid "Resize images" -msgstr "" +msgstr "Zmień rozmiar obrazów" -#: admin/folderadmin.py:1133 +#: admin/folderadmin.py:1303 msgid "Resize selected images" -msgstr "" +msgstr "Zmień rozmiar zaznaczonych obrazów" -#: admin/forms.py:26 +#: admin/forms.py:24 msgid "Suffix which will be appended to filenames of copied files." -msgstr "" +msgstr "Przyrostek, który zostanie dodany do nazw skopiowanych plików." -#: admin/forms.py:33 +#: admin/forms.py:31 #, python-format msgid "" "Suffix should be a valid, simple and lowercase filename part, like " "\"%(valid)s\"." msgstr "" +"Przyrostek powinien być poprawną, prostą, składającą się z małych liter " +"częścią nazwy pliku, np. \"%(valid)s\"" -#: admin/forms.py:54 +#: admin/forms.py:52 #, python-format msgid "Unknown rename format value key \"%(key)s\"." -msgstr "" +msgstr "Nieznany format klucza \"%(key)s\"." -#: admin/forms.py:56 +#: admin/forms.py:54 #, python-format msgid "Invalid rename format: %(error)s." -msgstr "" +msgstr "Niepoprawny format: %(error)s." -#: admin/forms.py:62 +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 msgid "thumbnail option" -msgstr "" +msgstr "opcje miniatur" -#: admin/forms.py:63 +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 msgid "width" -msgstr "" +msgstr "szerokość" -#: admin/forms.py:64 +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 msgid "height" -msgstr "" +msgstr "wysokość" -#: admin/forms.py:65 +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 msgid "crop" -msgstr "" +msgstr "przytnij" -#: admin/forms.py:66 +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 msgid "upscale" -msgstr "" +msgstr "skaluj" -#: admin/forms.py:71 +#: admin/forms.py:79 msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Opcja miniatury albo parametry zmiany rozmiaru muszą być określone." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Współrzędne obiektu" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Współrzędne głównego obiektu prezentowanej sceny. Format: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Niepoprawny format współrzędnych obiektu." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Współrzędne obiektu znajdują się poza obrazem." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Twój wpis: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" msgstr "" -#: admin/forms.py:73 -msgid "Resize parameters must be choosen." +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" msgstr "" -#: admin/imageadmin.py:12 -msgid "Subject location" +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Katalog o podanej nazwie już istnieje." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Biblioteka mediów" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "domyślny tekst alternatywny" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "domyślna etykieta" + +#: models/abstract.py:76 +msgid "subject location" msgstr "Współrzędne obiektu" -#: admin/imageadmin.py:13 -msgid "Location of the main subject of the scene." -msgstr "Współrzędne głownego obiektu prezentowanej sceny" +#: models/abstract.py:91 +msgid "image" +msgstr "obraz" -#: models/clipboardmodels.py:9 models/foldermodels.py:236 +#: models/abstract.py:92 +msgid "images" +msgstr "obrazy" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 msgid "user" msgstr "użytkownik" -#: models/clipboardmodels.py:11 models/filemodels.py:287 +#: models/clipboardmodels.py:17 models/filemodels.py:157 msgid "files" -msgstr "" +msgstr "pliki" -#: models/clipboardmodels.py:34 models/clipboardmodels.py:40 +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 msgid "clipboard" -msgstr "" +msgstr "schowek" -#: models/clipboardmodels.py:35 +#: models/clipboardmodels.py:25 msgid "clipboards" -msgstr "" +msgstr "schowki" -#: models/clipboardmodels.py:39 models/filemodels.py:35 -#: models/filemodels.py:286 +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 msgid "file" -msgstr "" +msgstr "plik" -#: models/clipboardmodels.py:44 +#: models/clipboardmodels.py:56 msgid "clipboard item" -msgstr "" +msgstr "element schowka" -#: models/clipboardmodels.py:45 +#: models/clipboardmodels.py:57 msgid "clipboard items" -msgstr "" +msgstr "elementy schowka" -#: models/filemodels.py:33 templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 #: templates/admin/filer/folder/new_folder_form.html:4 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 msgid "folder" msgstr "katalog" -#: models/filemodels.py:36 +#: models/filemodels.py:81 msgid "file size" -msgstr "" +msgstr "rozmiar pliku" -#: models/filemodels.py:38 +#: models/filemodels.py:87 msgid "sha1" -msgstr "" +msgstr "sha1" -#: models/filemodels.py:40 +#: models/filemodels.py:94 msgid "has all mandatory data" -msgstr "" +msgstr "posiada wszystkie potrzebne dane" -#: models/filemodels.py:42 +#: models/filemodels.py:100 msgid "original filename" -msgstr "" +msgstr "oryginalna nazwa pliku" -#: models/filemodels.py:44 models/foldermodels.py:99 +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 msgid "name" -msgstr "" +msgstr "nazwa" -#: models/filemodels.py:46 +#: models/filemodels.py:116 msgid "description" -msgstr "" +msgstr "opis" -#: models/filemodels.py:50 +#: models/filemodels.py:125 models/foldermodels.py:108 msgid "owner" -msgstr "" +msgstr "właściciel" -#: models/filemodels.py:52 models/foldermodels.py:105 +#: models/filemodels.py:129 models/foldermodels.py:116 msgid "uploaded at" -msgstr "" +msgstr "zaktualizowano" -#: models/filemodels.py:53 models/foldermodels.py:108 +#: models/filemodels.py:134 models/foldermodels.py:126 msgid "modified at" -msgstr "" +msgstr "zmieniono" -#: models/filemodels.py:57 +#: models/filemodels.py:140 msgid "Permissions disabled" +msgstr "Uprawnienia wyłączone" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." msgstr "" +"Wyłącz jakiekolwiek sprawdzanie uprawnień dla tego pliku. Plik będzie " +"dostępny publicznie dla wszystkich." -#: models/filemodels.py:58 -msgid "Disable any permission checking for this " +#: models/foldermodels.py:94 +msgid "parent" msgstr "" -#: models/foldermodels.py:107 +#: models/foldermodels.py:121 msgid "created at" -msgstr "" +msgstr "utworzono" -#: models/foldermodels.py:211 -#: templates/admin/filer/widgets/admin_folder.html:3 -#: templates/admin/filer/widgets/admin_folder.html:5 +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Folder" -msgstr "" +msgstr "Katalog" -#: models/foldermodels.py:212 +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 msgid "Folders" msgstr "Katalogi" -#: models/foldermodels.py:227 +#: models/foldermodels.py:260 msgid "all items" msgstr "wszystkie elementy" -#: models/foldermodels.py:228 +#: models/foldermodels.py:261 msgid "this item only" -msgstr "tylko ten katalog" +msgstr "tylko ten element" -#: models/foldermodels.py:229 +#: models/foldermodels.py:262 msgid "this item and all children" msgstr "ten katalog i wszystkie podrzędne" -#: models/foldermodels.py:233 +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "zezwól" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "zabroń" + +#: models/foldermodels.py:280 msgid "type" msgstr "typ" -#: models/foldermodels.py:239 +#: models/foldermodels.py:297 msgid "group" msgstr "grupa" -#: models/foldermodels.py:240 +#: models/foldermodels.py:304 msgid "everybody" msgstr "wszyscy" -#: models/foldermodels.py:242 -msgid "can edit" -msgstr "może edytować" - -#: models/foldermodels.py:243 +#: models/foldermodels.py:309 msgid "can read" msgstr "może wyświetlić" -#: models/foldermodels.py:244 +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "może edytować" + +#: models/foldermodels.py:325 msgid "can add children" -msgstr "może dodawać el. podrzędne" +msgstr "może dodawać elementy podrzędne" -#: models/foldermodels.py:273 +#: models/foldermodels.py:333 msgid "folder permission" -msgstr "" +msgstr "uprawnienie katalogu" -#: models/foldermodels.py:274 +#: models/foldermodels.py:334 msgid "folder permissions" +msgstr "uprawnienia katalogu" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." msgstr "" -#: models/imagemodels.py:39 -msgid "date taken" -msgstr "Data wykonania" +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" -#: models/imagemodels.py:42 -msgid "default alt text" +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." msgstr "" -#: models/imagemodels.py:43 -msgid "default caption" +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." msgstr "" -#: models/imagemodels.py:45 templates/image_filer/image.html:6 -msgid "author" -msgstr "autor" +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" -#: models/imagemodels.py:47 -msgid "must always publish author credit" +#: models/foldermodels.py:362 +msgid "Logical Path" msgstr "" -#: models/imagemodels.py:48 -msgid "must always publish copyright" +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" msgstr "" -#: models/imagemodels.py:50 -msgid "subject location" +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" msgstr "" -#: models/imagemodels.py:200 -msgid "image" +#: models/foldermodels.py:375 +msgid "Everybody" msgstr "" -#: models/imagemodels.py:201 -msgid "images" +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" msgstr "" -#: models/virtualitems.py:45 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "unfiled files" -msgstr "Luźne pliki" +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "data wykonania" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "musi zawsze opublikować udział autora" -#: models/virtualitems.py:59 +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "musi zawsze opublikować prawa autorskie" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "szerokość w pikselach" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "wysokość w pikselach" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "opcje miniatur" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Nieuporządkowane Przesłane" + +#: models/virtualitems.py:73 msgid "files with missing metadata" -msgstr "pliki z wybrakowanymi metadanymi" +msgstr "pliki z brakującymi metadanymi" -#: models/virtualitems.py:73 templates/admin/filer/breadcrumbs.html:6 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:10 +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 msgid "root" msgstr "Katalog główny" -#: templates/admin/filer/actions.html:4 -msgid "Run the selected action" +#: settings.py:273 +msgid "Show table view" msgstr "" -#: templates/admin/filer/actions.html:4 -msgid "Go" +#: settings.py:278 +msgid "Show thumbnail view" msgstr "" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Wykonaj wybraną akcję" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Idź" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 msgid "Click here to select the objects across all pages" -msgstr "" +msgstr "Kliknij tutaj aby zaznaczyć obiekty na wszystkich stronach" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 #, python-format msgid "Select all %(total_count)s files and/or folders" -msgstr "" +msgstr "Zaznacz wszystkie %(total_count)s pliki i/lub katalogi" -#: templates/admin/filer/actions.html:13 +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 msgid "Clear selection" -msgstr "" +msgstr "Wyczyść zaznaczenie" #: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 msgid "Go back to admin homepage" msgstr "Wróć do panelu administracyjnego" #: templates/admin/filer/breadcrumbs.html:4 -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 msgid "Home" msgstr "Początek" #: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 msgid "Go back to Filer app" msgstr "Wróć do aplikacji Filer" -#: templates/admin/filer/breadcrumbs.html:5 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/image_filer/image_export_form.html:8 -msgid "Filer" -msgstr "Filer" - #: templates/admin/filer/breadcrumbs.html:6 -#: templates/image_filer/image_export_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Go back to root folder" msgstr "Wróć do katalogu głównego" #: templates/admin/filer/breadcrumbs.html:8 -#: templates/admin/filer/breadcrumbs.html:11 -#: templates/admin/filer/folder/change_form.html:11 -#: templates/image_filer/image_export_form.html:12 -#: templates/image_filer/image_export_form.html:14 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 #, python-format msgid "Go back to '%(folder_name)s' folder" msgstr "Przejdź do katalogu '%(folder_name)s'" -#: templates/admin/filer/change_form.html:28 -msgid "duplicates" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:13 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:21 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " -"following protected related objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:29 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:34 -#: templates/admin/filer/delete_selected_files_confirmation.html:45 -msgid "Yes, I'm sure" -msgstr "" +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplikaty" #: templates/admin/filer/delete_selected_files_confirmation.html:11 msgid "" @@ -489,402 +640,636 @@ msgid "" "objects, but your account doesn't have permission to delete the following " "types of objects:" msgstr "" +"Usunięcie zaznaczonych plików i/lub katalogów spowoduje usunięcie " +"powiązanych obiektów, niestety Twoje konto nie posiada uprawnień do " +"usunięcia następujących typów obiektów:" #: templates/admin/filer/delete_selected_files_confirmation.html:19 msgid "" "Deleting the selected files and/or folders would require deleting the " "following protected related objects:" msgstr "" +"Usunięcie zaznaczonych plików i/lub katalogów wymaga usunięcia następujących " +"chronionych obiektów powiązanych:" #: templates/admin/filer/delete_selected_files_confirmation.html:27 msgid "" "Are you sure you want to delete the selected files and/or folders? All of " "the following objects and their related items will be deleted:" msgstr "" +"Czy na pewno chcesz usunąć zaznaczone pliki i/lub katalogi? Następujące " +"obiekty oraz powiązane z nimi elementy zostaną usunięte:" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:7 -#: templates/image_filer/image_export_form.html:8 -#: templates/image_filer/image_export_form.html:16 -msgid "Go back to" -msgstr "Wróć do" +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Nie, wróć" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 -msgid "admin homepage" -msgstr "panelu administracyjnego" +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Tak, na pewno" -#: templates/admin/filer/folder/change_form.html:22 -#: templates/admin/filer/image/change_form.html:9 +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 msgid "History" msgstr "Historia" +#: templates/admin/filer/file/change_form.html:37 #: templates/admin/filer/folder/change_form.html:23 -#: templates/admin/filer/image/change_form.html:10 +#: templates/admin/filer/image/change_form.html:37 msgid "View on site" msgstr "Zobacz na stronie" -#: templates/admin/filer/folder/change_form.html:35 -#: templates/admin/filer/folder/directory_listing.html:75 -#: templates/admin/filer/folder/directory_listing.html:85 -#: templates/admin/filer/folder/directory_table.html:23 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Wróć do" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "panelu administracyjnego" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 msgid "Folder Icon" msgstr "Ikona katalogu" -#: templates/admin/filer/folder/choose_copy_destination.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:23 msgid "" "Your account doesn't have permissions to copy all of the selected files and/" "or folders." msgstr "" +"Twoje konto nie ma uprawnień do skopiowania wszystkich zaznaczonych plików i/" +"lub katalogów." -#: templates/admin/filer/folder/choose_copy_destination.html:15 -#: templates/admin/filer/folder/choose_move_destination.html:15 +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Powróć" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 msgid "There are no destination folders available." -msgstr "" +msgstr "Brak dostępnych katalogów docelowych." -#: templates/admin/filer/folder/choose_copy_destination.html:18 +#: templates/admin/filer/folder/choose_copy_destination.html:35 msgid "There are no files and/or folders available to copy." -msgstr "" +msgstr "Brak dostępnych plików i/lub katalogów do skopiowania." -#: templates/admin/filer/folder/choose_copy_destination.html:20 +#: templates/admin/filer/folder/choose_copy_destination.html:40 msgid "" "The following files and/or folders will be copied to a destination folder " "(retaining their tree structure):" msgstr "" +"Następujące pliki i/lub katalogi zostaną skopiowane do katalogu docelowego " +"(z zachowaniem ich struktury):" -#: templates/admin/filer/folder/choose_copy_destination.html:32 -#: templates/admin/filer/folder/choose_move_destination.html:32 +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 msgid "Destination folder:" -msgstr "" +msgstr "Katalog docelowy:" -#: templates/admin/filer/folder/choose_copy_destination.html:39 +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 msgid "Copy" -msgstr "" +msgstr "Skopiuj" -#: templates/admin/filer/folder/choose_images_resize_options.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Nie można kopiować plików to tego samego folderu" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 msgid "" "Your account doesn't have permissions to resize all of the selected images." msgstr "" +"Twoje konto nie ma uprawnień do zmiany rozmiaru wszystkich zaznaczonych " +"obrazów." -#: templates/admin/filer/folder/choose_images_resize_options.html:15 +#: templates/admin/filer/folder/choose_images_resize_options.html:18 msgid "There are no images available to resize." -msgstr "" +msgstr "Brak dostępnych obrazów do zmiany ich rozmiaru." -#: templates/admin/filer/folder/choose_images_resize_options.html:17 +#: templates/admin/filer/folder/choose_images_resize_options.html:20 msgid "The following images will be resized:" -msgstr "" - -#: templates/admin/filer/folder/choose_images_resize_options.html:30 -msgid "Choose an existing thumbnail option or enter resize parameters:" -msgstr "" +msgstr "Następujące obrazy będą miały zmieniony rozmiar:" #: templates/admin/filer/folder/choose_images_resize_options.html:32 -msgid "Choose resize parameters:" +msgid "Choose an existing thumbnail option or enter resize parameters:" msgstr "" +"Wybierz istniejącą opcje miniatury albo wprowadź parametry zmiany rozmiaru:" -#: templates/admin/filer/folder/choose_images_resize_options.html:35 +#: templates/admin/filer/folder/choose_images_resize_options.html:36 msgid "" "Warning: Images will be resized in-place and originals will be lost. Maybe " "first make a copy of them to retain the originals." msgstr "" +"Uwaga: Rozmiary obrazów zostanie zmienione w miejscu a oryginały zostaną " +"utracone. W celu zachowania oryginałów, najpierw wykonaj ich kopię." -#: templates/admin/filer/folder/choose_images_resize_options.html:36 +#: templates/admin/filer/folder/choose_images_resize_options.html:39 msgid "Resize" -msgstr "" +msgstr "Zmień rozmiar" -#: templates/admin/filer/folder/choose_move_destination.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:35 msgid "" "Your account doesn't have permissions to move all of the selected files and/" "or folders." msgstr "" +"Twoje konto nie ma uprawnień do przeniesienia wszystkich zaznaczonych plików " +"i/lub katalogów." -#: templates/admin/filer/folder/choose_move_destination.html:18 +#: templates/admin/filer/folder/choose_move_destination.html:47 msgid "There are no files and/or folders available to move." -msgstr "" +msgstr "Brak plików i/lub folderów do przeniesienia." -#: templates/admin/filer/folder/choose_move_destination.html:20 +#: templates/admin/filer/folder/choose_move_destination.html:52 msgid "" "The following files and/or folders will be moved to a destination folder " "(retaining their tree structure):" msgstr "" +"Następujące pliki i/lub katalogi zostaną przeniesione do katalogu docelowego " +"(z zachowaniem ich struktury):" -#: templates/admin/filer/folder/choose_move_destination.html:38 +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 msgid "Move" -msgstr "" +msgstr "Przenieś" -#: templates/admin/filer/folder/choose_rename_format.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Nie można przenieść plików do tego samego folderu" + +#: templates/admin/filer/folder/choose_rename_format.html:15 msgid "" "Your account doesn't have permissions to rename all of the selected files." msgstr "" +"Twoje konto nie posiada uprawnień do zmiany nazwy wszystkich zaznaczonych " +"plików." -#: templates/admin/filer/folder/choose_rename_format.html:15 +#: templates/admin/filer/folder/choose_rename_format.html:18 msgid "There are no files available to rename." -msgstr "" +msgstr "Brak dostępnych plików do zmiany nazwy." -#: templates/admin/filer/folder/choose_rename_format.html:17 +#: templates/admin/filer/folder/choose_rename_format.html:20 msgid "" "The following files will be renamed (they will stay in their folders and " "keep original filename, only displayed filename will be changed):" msgstr "" +"Następujące pliki będą miały zmienioną nazwę (pliki pozostaną w swoich " +"katalogach i zachowają oryginalne nazwy, zmieni się jedynie ich wyświetlana " +"nazwa):" -#: templates/admin/filer/folder/choose_rename_format.html:54 +#: templates/admin/filer/folder/choose_rename_format.html:59 msgid "Rename" -msgstr "" +msgstr "Zmień nazwę" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Wróć do katalogu nadrzędnego" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Zmień dane aktualnie wyświetlanego katalogu" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Zmień" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Kliknij tutaj aby szukać daną frazę" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Szukaj" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Zamknij" -#: templates/admin/filer/folder/directory_listing.html:66 +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limit" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Zaznacz, by ograniczyć szukanie do bieżącego folderu" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Ogranicz szukanie do bieżącego folderu" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Usuń" + +#: templates/admin/filer/folder/directory_listing.html:203 msgid "Adds a new Folder" msgstr "Dodaje nowy katalog" -#: templates/admin/filer/folder/directory_listing.html:66 -#: templates/image_filer/include/export_dialog.html:34 +#: templates/admin/filer/folder/directory_listing.html:206 msgid "New Folder" msgstr "Nowy katalog" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "upload files" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Wyślij Pliki" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "Upload" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Musisz najpierw wybrać katalog" -#: templates/admin/filer/folder/directory_listing.html:74 -msgid "Go back to the parent folder" -msgstr "Wróć do katalogu nadrzędnego" +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Nazwa" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Właściciel" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Rozmiar" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Akcja" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Zmień dane katalogu '%(item_label)s'" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 #, python-format -msgid "1 folder" +msgid "%(counter)s folder" msgid_plural "%(counter)s folders" msgstr[0] "%(counter)s katalog" msgstr[1] "%(counter)s katalogi" msgstr[2] "%(counter)s katalogów" +msgstr[3] "%(counter)s katalogów" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 #, python-format -msgid "1 file" +msgid "%(counter)s file" msgid_plural "%(counter)s files" msgstr[0] "%(counter)s plik" msgstr[1] "%(counter)s pliki" msgstr[2] "%(counter)s plików" +msgstr[3] "%(counter)s plików" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Zmień dane katalogu" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Usuń katalog" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Wybierz ten plik" -#: templates/admin/filer/folder/directory_listing.html:80 -msgid "Change current folder details" -msgstr "Zmodyfikuj dane aktualnie wyświetlanego katalogu" - -#: templates/admin/filer/folder/directory_listing.html:80 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:43 -msgid "Change" -msgstr "Zmień" +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Zmień dane '%(item_label)s'" -#: templates/admin/filer/folder/directory_table.html:13 -msgid "Name" -msgstr "Nazwa" +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Uprawnienia" -#: templates/admin/filer/folder/directory_table.html:23 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:29 -#, python-format -msgid "Change '%(item_label)s' folder details" -msgstr "Zmodyfikuj dane katalogu '%(item_label)s'" +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "wyłączony" -#: templates/admin/filer/folder/directory_table.html:30 -#: templates/admin/filer/folder/directory_table.html:45 -msgid "Owner" -msgstr "Właściciel" +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "włączony" -#: templates/admin/filer/folder/directory_table.html:37 -msgid "Select this file" -msgstr "Wybierz ten plik" +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Przenieś zaznaczone pliki do schowka" -#: templates/admin/filer/folder/directory_table.html:39 -#: templates/admin/filer/folder/directory_table.html:43 -#: templates/admin/filer/folder/directory_table.html:44 +#: templates/admin/filer/folder/directory_table_list.html:147 #, python-format -msgid "Change '%(item_label)s' details" -msgstr "Zmodyfikuj dane '%(item_label)s'" +msgid "Canonical url '%(item_label)s'" +msgstr "Kanoniczny url '%(item_label)s'" -#: templates/admin/filer/folder/directory_table.html:42 +#: templates/admin/filer/folder/directory_table_list.html:151 #, python-format -msgid "Delete '%(item_label)s'" -msgstr "" +msgid "Download '%(item_label)s'" +msgstr "Pobierz '%(item_label)s'" -#: templates/admin/filer/folder/directory_table.html:42 -msgid "Delete" -msgstr "" +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Usuń plik" -#: templates/admin/filer/folder/directory_table.html:46 -msgid "Permissions" -msgstr "" +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Upuść pliki tutaj lub kliknij na przycisk \"Wyślij Pliki\" " -#: templates/admin/filer/folder/directory_table.html:46 -msgid "disabled" -msgstr "" +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Upuść plik by wysłać go do:" -#: templates/admin/filer/folder/directory_table.html:46 -msgid "enabled" -msgstr "" +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Upload" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "anuluj" -#: templates/admin/filer/folder/directory_table.html:50 -msgid "Move to clipboard" -msgstr "Przenieś do schowka" +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Wysłano pomyślnie!" -#: templates/admin/filer/folder/directory_table.html:58 -msgid "there are no files or subfolders" -msgstr "Nie dodano tutaj jeszcze żadnych plików, bądź katalogów" +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Wysyłanie anulowane!" -#: templates/admin/filer/folder/directory_table.html:65 +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 msgid "previous" -msgstr "" +msgstr "poprzedni" -#: templates/admin/filer/folder/directory_table.html:69 +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 #, python-format -msgid "" -"\n" -" Page %(number)s of %(num_pages)s.\n" -" " -msgstr "" +msgid "Page %(number)s of %(num_pages)s." +msgstr "Strona %(number)s z %(num_pages)s." -#: templates/admin/filer/folder/directory_table.html:75 +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 msgid "next" +msgstr "następny" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Wybierz wszystkie %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" msgstr "" #: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 msgid "Add new" msgstr "Dodaj nowy" -#: templates/admin/filer/folder/new_folder_form.html:13 +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Proszę naprawić poniższy błąd." +msgstr[1] "Proszę naprawić poniższe błędy." +msgstr[2] "Proszę naprawić poniższe błędy." +msgstr[3] "Proszę naprawić poniższe błędy." -#: templates/admin/filer/folder/new_folder_form.html:28 +#: templates/admin/filer/folder/new_folder_form.html:30 msgid "Save" msgstr "Zapisz" -#: templates/admin/filer/image/change_form.html:21 -msgid "Full size preview" -msgstr "Pełnowymiarowy podgląd" +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" -#: templates/admin/filer/tools/search_form.html:8 -#: templates/admin/filer/tools/search_form.html:14 -msgid "Search" -msgstr "Szukaj" +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Schowek" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Wklej tutaj wszystkie elementy" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Przenieś wszystkie elementy schowka do" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Wyczyść Schowek" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "schowek jest pusty" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "Nie udało się przesłać pliku" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" -#: templates/admin/filer/tools/search_form.html:13 -msgid "Enter your search phrase here" -msgstr "Wprowadź kryteria wyszukiwania" +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" -#: templates/admin/filer/tools/search_form.html:14 -msgid "Click here to" -msgstr "Kliknij tutaj by" +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" -#: templates/admin/filer/tools/search_form.html:14 -msgid "run search for entered phrase" -msgstr "wyszukaj wprowadzoną frazę" +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Typ" -#: templates/admin/filer/tools/search_form.html:15 -msgid "Check it to" -msgstr "Zaznacz by" +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Rozmiar pliku" -#: templates/admin/filer/tools/search_form.html:15 -#: templates/admin/filer/tools/search_form.html:16 -msgid "limit the search to current folder" -msgstr "wyszukaj tylko w tym katalogu" +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modyfikowano" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Utworzono" + +#: templates/admin/filer/tools/search_form.html:5 msgid "found" msgstr "znaleziono" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/search_form.html:5 msgid "and" msgstr "i" -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/tools/search_form.html:7 msgid "cancel search" msgstr "anuluj wyszukiwanie" -#: templates/admin/filer/tools/upload_button_js.html:24 -#: templates/admin/filer/widgets/admin_file.html:7 -#: templates/admin/filer/widgets/admin_file.html:8 -msgid "file missing" -msgstr "" +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Usuń" -#: templates/admin/filer/tools/clipboard/clipboard.html:7 -msgid "Clipboard" -msgstr "Schowek" +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "lub upuść swój plik tutaj" -#: templates/admin/filer/tools/clipboard/clipboard.html:19 -msgid "Paste all items here" -msgstr "Wklej tutaj wszystkie elementy" +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "brak zaznaczonych plików" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "discard" -msgstr "odrzuć" +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Wyszukaj" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "Move all clipboard files to" -msgstr "Przenieś wszystkie el. schowka do" +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Wybierz plik" -#: templates/admin/filer/tools/clipboard/clipboard.html:43 -msgid "the clipboard is empty" -msgstr "schowek jest pusty" +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" -#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:11 -msgid "upload failed" -msgstr "Nie udało się przesłać pliku" +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:11 -msgid "no file selected" +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" msgstr "" -#: templates/admin/filer/widgets/admin_file.html:14 -#: templates/admin/filer/widgets/admin_file.html:15 -#: templates/admin/filer/widgets/admin_folder.html:7 -#: templates/admin/filer/widgets/admin_folder.html:8 -msgid "Lookup" -msgstr "Wyszukaj" +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:17 -#: templates/admin/filer/widgets/admin_folder.html:10 -msgid "Clear" -msgstr "Usuń" +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" -#: templates/admin/filer/widgets/admin_folder.html:5 -msgid "none selected" +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" msgstr "" -#: templates/image_filer/folder.html:3 -#, python-format -msgid "Folder '%(folder_label)s' files" -msgstr "Pliki w katalogu '%(folder_label)s' " +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" -#: templates/image_filer/folder.html:6 -msgid "File name" -msgstr "Nazwa pliku" +#~ msgid "none selected" +#~ msgstr "none selected" -#: templates/image_filer/image_export_form.html:17 -msgid "export" -msgstr "eksport" +#~ msgid "Add Folder" +#~ msgstr "Add Folder" -#: templates/image_filer/image_export_form.html:27 -msgid "download image" -msgstr "pobierz obrazek" +#~ msgid "Subject Location" +#~ msgstr "Subject location" -#: templates/image_filer/include/export_dialog.html:13 -msgid "Folder name already taken." -msgstr "Katalog o podanej nazwie juz istnieje" +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" -#: templates/image_filer/include/export_dialog.html:15 -msgid "Submit" -msgstr "Wyślij" +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/pt/LC_MESSAGES/django.mo b/filer/locale/pt/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..6a145895ce3b9d7cab453fcf43dcae737f5a9929 GIT binary patch literal 492 zcmYLF+e!m55LNVPAAR;=1eJ=WyW1kx)U{p=O$ zfxcAek`Y?t0vq^Bmh7&sJR2Jh$?%1Za4BO0dk_IRw6eU#vI~~CAwTEm*=a_RJPRM# z*a_{G2*z=^)fFlO4^m6Gno2Dc4MR1zH!~9!LaOG(EUu|fSGA~+jZrK(49P=X)#wo# zvk)v#Q(-_WL^eH;_s3)eBy5i7zmmwLd+6l$_#w|PtZP%qQ t+FjVBMMFbTKn9)HryWML}+!BtzTEIj\n" +"Language-Team: Portuguese (http://app.transifex.com/divio/django-filer/" +"language/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/pt_BR/LC_MESSAGES/django.mo b/filer/locale/pt_BR/LC_MESSAGES/django.mo index c65986b6080585678dad0f177f234d17d5e938ff..423ed55ba18f37a39fe306efff1327954aafd8ec 100644 GIT binary patch literal 17504 zcmcJW36xz$na2wyqLE#81TKLj-O$}hSQHyFAqfcy(jjI67c|~}?{>eNy!YBk!L26zlS0=^fjygT6O@FA%0AA@JWe}}5)m}ePt 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 qez;US!Z=*s244&ILX#, 2017 +# Julio Lucchese , 2018 +# Rodrigo , 2013 msgid "" msgstr "" -"Project-Id-Version: django-filer\n" +"Project-Id-Version: django Filer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 19:10+0200\n" -"PO-Revision-Date: 2012-09-03 20:12+0100\n" -"Last-Translator: Stefan Foulis \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Julio Lucchese , 2018\n" +"Language-Team: Portuguese (Brazil) (http://app.transifex.com/divio/django-" +"filer/language/pt_BR/)\n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % " +"1000000 == 0 ? 1 : 2;\n" -#: views.py:103 -msgid "Folder with this name already exists." +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." msgstr "" -#: admin/fileadmin.py:41 +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 msgid "Advanced" msgstr "Avançado" -#: admin/folderadmin.py:324 admin/folderadmin.py:427 +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "URL canônico" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 msgid "" "Items must be selected in order to perform actions on them. No items have " "been changed." msgstr "" +"itens precisam ser selecionar para que a ação seja executada. Nenhuma " +"alteração foi efetuada." -#: admin/folderadmin.py:344 +#: admin/folderadmin.py:434 #, python-format msgid "%(total_count)s selected" msgid_plural "All %(total_count)s selected" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(total_count)s selecionado" +msgstr[1] "Todos %(total_count)s selecionados" +msgstr[2] "Todos %(total_count)s selecionados" -#: admin/folderadmin.py:377 +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Listando diretório para %(folder_name)s" + +#: admin/folderadmin.py:475 #, python-format msgid "0 of %(cnt)s selected" -msgstr "" +msgstr "0 de %(cnt)s selecionados" -#: admin/folderadmin.py:456 +#: admin/folderadmin.py:612 msgid "No action selected." -msgstr "" +msgstr "Nenhuma ação selecionada." -#: admin/folderadmin.py:497 +#: admin/folderadmin.py:664 #, python-format msgid "Successfully moved %(count)d files to clipboard." -msgstr "" +msgstr "%(count)d arquivo(s) movidos para a área de transferência com sucesso." -#: admin/folderadmin.py:503 +#: admin/folderadmin.py:669 msgid "Move selected files to clipboard" -msgstr "" +msgstr "Mover os arquivos selecionados para a área de transferência" -#: admin/folderadmin.py:537 +#: admin/folderadmin.py:709 #, python-format msgid "Successfully disabled permissions for %(count)d files." -msgstr "" +msgstr "%(count)d arquivo(s) tiveram suas permissões desativadas com sucesso." -#: admin/folderadmin.py:541 +#: admin/folderadmin.py:711 #, python-format msgid "Successfully enabled permissions for %(count)d files." -msgstr "" +msgstr "%(count)d arquivo(s) tiveram suas permissões ativadas com sucesso." -#: admin/folderadmin.py:550 +#: admin/folderadmin.py:719 msgid "Enable permissions for selected files" -msgstr "" +msgstr "Habilitar as permissões para os arquivos selecionados" -#: admin/folderadmin.py:555 +#: admin/folderadmin.py:725 msgid "Disable permissions for selected files" -msgstr "" +msgstr "Desabilitar as permissões para os arquivos selecionados" -#: admin/folderadmin.py:623 +#: admin/folderadmin.py:789 #, python-format msgid "Successfully deleted %(count)d files and/or folders." -msgstr "" +msgstr "%(count)d arquivo(s) e/ou pasta(s) foram removidos com sucesso." -#: admin/folderadmin.py:630 +#: admin/folderadmin.py:794 msgid "Cannot delete files and/or folders" -msgstr "" +msgstr "Não é possível remover arquivo(s) e/ou pasta(s)" -#: admin/folderadmin.py:632 +#: admin/folderadmin.py:796 msgid "Are you sure?" -msgstr "" +msgstr "Você tem certeza?" -#: admin/folderadmin.py:637 +#: admin/folderadmin.py:802 msgid "Delete files and/or folders" -msgstr "" +msgstr "Remover arquivo(s) e/ou pasta(s)" -#: admin/folderadmin.py:656 +#: admin/folderadmin.py:823 msgid "Delete selected files and/or folders" -msgstr "" +msgstr "Remover arquivo(s) e/ou pasta(s) selecionados" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Pastas com os nomes %s s já existem no local selecionado" -#: admin/folderadmin.py:771 +#: admin/folderadmin.py:934 #, python-format msgid "" "Successfully moved %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" +"%(count)d arquivo(s) e/ou pasta(s) foram movidos para a pasta " +"'%(destination)s' com sucesso." -#: admin/folderadmin.py:778 admin/folderadmin.py:780 +#: admin/folderadmin.py:942 admin/folderadmin.py:944 msgid "Move files and/or folders" -msgstr "" +msgstr "Mover arquivo(s) e/ou pasta(s)" -#: admin/folderadmin.py:797 +#: admin/folderadmin.py:959 msgid "Move selected files and/or folders" -msgstr "" +msgstr "Mover arquivo(s) e/ou pasta(s) selecionados" -#: admin/folderadmin.py:854 +#: admin/folderadmin.py:1016 #, python-format msgid "Successfully renamed %(count)d files." -msgstr "" +msgstr "%(count)d arquivo(s) foram renomeados com sucesso." -#: admin/folderadmin.py:862 admin/folderadmin.py:864 admin/folderadmin.py:881 +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 msgid "Rename files" -msgstr "" +msgstr "Renomear arquivos" -#: admin/folderadmin.py:975 +#: admin/folderadmin.py:1137 #, python-format msgid "" "Successfully copied %(count)d files and/or folders to folder " "'%(destination)s'." msgstr "" +"%(count)d arquivo(s) e/ou pasta(s) foram copiados para o pasta " +"'%(destination)s' com sucesso." -#: admin/folderadmin.py:989 admin/folderadmin.py:991 +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 msgid "Copy files and/or folders" -msgstr "" +msgstr "Copiar arquivo(s) e/ou pasta(s)" -#: admin/folderadmin.py:1010 +#: admin/folderadmin.py:1174 msgid "Copy selected files and/or folders" -msgstr "" +msgstr "Copiar arquivo(s) e/ou pasta(s) selecionados" -#: admin/folderadmin.py:1105 +#: admin/folderadmin.py:1279 #, python-format msgid "Successfully resized %(count)d images." -msgstr "" +msgstr "%(count)d imagem(ens) tiveram seu tamanho alterado com sucesso." -#: admin/folderadmin.py:1113 admin/folderadmin.py:1115 +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 msgid "Resize images" -msgstr "" +msgstr "Redimensionar imagens" -#: admin/folderadmin.py:1133 +#: admin/folderadmin.py:1303 msgid "Resize selected images" -msgstr "" +msgstr "Redimensionar imagens selecionadas" -#: admin/forms.py:26 +#: admin/forms.py:24 msgid "Suffix which will be appended to filenames of copied files." -msgstr "" +msgstr "Sufixo que será anexado aos nomes dos arquivos copiados" -#: admin/forms.py:33 +#: admin/forms.py:31 #, python-format msgid "" "Suffix should be a valid, simple and lowercase filename part, like " "\"%(valid)s\"." msgstr "" +"O sufixo precisa ser válido, simples e com letras minúsculas para o nome de " +"um arquivo, como por exemplo: \"%(valid)s\"." -#: admin/forms.py:54 +#: admin/forms.py:52 #, python-format msgid "Unknown rename format value key \"%(key)s\"." msgstr "" +"A chave de valor \"%(key)s\" utilizada para renomear o arquivo é " +"desconhecida." -#: admin/forms.py:56 +#: admin/forms.py:54 #, python-format msgid "Invalid rename format: %(error)s." -msgstr "" +msgstr "Formato inválido para renomear: %(error)s." -#: admin/forms.py:62 +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 msgid "thumbnail option" -msgstr "" +msgstr "opções de miniaturas" -#: admin/forms.py:63 +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 msgid "width" -msgstr "" +msgstr "largura" -#: admin/forms.py:64 +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 msgid "height" -msgstr "" +msgstr "altura" -#: admin/forms.py:65 +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 msgid "crop" -msgstr "" +msgstr "recortar" -#: admin/forms.py:66 +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 msgid "upscale" -msgstr "" +msgstr "aumentar" -#: admin/forms.py:71 +#: admin/forms.py:79 msgid "Thumbnail option or resize parameters must be choosen." msgstr "" +"Escolher entre as opções de miniaturas ou parâmetros de redimensionamento." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Local do assunto" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Localização do tema principal da cena. Formato: \"x, y\"." -#: admin/forms.py:73 -msgid "Resize parameters must be choosen." +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Formato de localização de assunto inválido." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "A localização do assunto está fora da imagem." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Sua entrada: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" msgstr "" -#: admin/imageadmin.py:12 -msgid "Subject location" -msgstr "Local de Assunto" +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" -#: admin/imageadmin.py:13 -msgid "Location of the main subject of the scene." -msgstr "Localização do assunto principal da cena." +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Já existe uma pasta com esse nome." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Biblioteca de Mídia" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "alt text padrão" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "caption padrão" -#: models/clipboardmodels.py:9 models/foldermodels.py:236 +#: models/abstract.py:76 +msgid "subject location" +msgstr "local do assunto" + +#: models/abstract.py:91 +msgid "image" +msgstr "imagem" + +#: models/abstract.py:92 +msgid "images" +msgstr "imagens" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 msgid "user" msgstr "usuário" -#: models/clipboardmodels.py:11 models/filemodels.py:287 +#: models/clipboardmodels.py:17 models/filemodels.py:157 msgid "files" msgstr "arquivos" -#: models/clipboardmodels.py:34 models/clipboardmodels.py:40 +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 msgid "clipboard" msgstr "Área de transferência" -#: models/clipboardmodels.py:35 +#: models/clipboardmodels.py:25 msgid "clipboards" -msgstr "Área de transferência" +msgstr "áreas de transferência" -#: models/clipboardmodels.py:39 models/filemodels.py:35 -#: models/filemodels.py:286 +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 msgid "file" msgstr "arquivo" -#: models/clipboardmodels.py:44 +#: models/clipboardmodels.py:56 msgid "clipboard item" msgstr "item da área de transferência" -#: models/clipboardmodels.py:45 +#: models/clipboardmodels.py:57 msgid "clipboard items" msgstr "itens da área de transferência" -#: models/filemodels.py:33 templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 #: templates/admin/filer/folder/new_folder_form.html:4 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 msgid "folder" msgstr "pasta" -#: models/filemodels.py:36 +#: models/filemodels.py:81 msgid "file size" -msgstr "" +msgstr "tamanho do arquivo" -#: models/filemodels.py:38 +#: models/filemodels.py:87 msgid "sha1" -msgstr "" +msgstr "sha1" -#: models/filemodels.py:40 +#: models/filemodels.py:94 msgid "has all mandatory data" -msgstr "" +msgstr "possui todos os dados necessários" -#: models/filemodels.py:42 +#: models/filemodels.py:100 msgid "original filename" -msgstr "" +msgstr "nome original do arquivo" -#: models/filemodels.py:44 models/foldermodels.py:99 +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 msgid "name" msgstr "nome" -#: models/filemodels.py:46 +#: models/filemodels.py:116 msgid "description" msgstr "descrição" -#: models/filemodels.py:50 +#: models/filemodels.py:125 models/foldermodels.py:108 msgid "owner" msgstr "Proprietário" -#: models/filemodels.py:52 models/foldermodels.py:105 +#: models/filemodels.py:129 models/foldermodels.py:116 msgid "uploaded at" -msgstr "" +msgstr "enviado em" -#: models/filemodels.py:53 models/foldermodels.py:108 +#: models/filemodels.py:134 models/foldermodels.py:126 msgid "modified at" -msgstr "" +msgstr "modificado em" -#: models/filemodels.py:57 +#: models/filemodels.py:140 msgid "Permissions disabled" msgstr "Permissões desabilitadas" -#: models/filemodels.py:58 -msgid "Disable any permission checking for this " -msgstr "Desative qualquer verificação de permissão para este" +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Desative qualquer verificação de permissão para este arquivo. O arquivo " +"estará acessível ao público para que qualquer possa acessar." -#: models/foldermodels.py:107 -msgid "created at" +#: models/foldermodels.py:94 +msgid "parent" msgstr "" -#: models/foldermodels.py:211 -#: templates/admin/filer/widgets/admin_folder.html:3 -#: templates/admin/filer/widgets/admin_folder.html:5 +#: models/foldermodels.py:121 +msgid "created at" +msgstr "criado em" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Folder" msgstr "Pasta" -#: models/foldermodels.py:212 +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 msgid "Folders" msgstr "Pastas" -#: models/foldermodels.py:227 +#: models/foldermodels.py:260 msgid "all items" msgstr "todos os itens" -#: models/foldermodels.py:228 +#: models/foldermodels.py:261 msgid "this item only" msgstr "este item somente" -#: models/foldermodels.py:229 +#: models/foldermodels.py:262 msgid "this item and all children" -msgstr "este item e todas subjacentes" +msgstr "este item e todos subjacentes" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "permitir" -#: models/foldermodels.py:233 +#: models/foldermodels.py:268 +msgid "deny" +msgstr "negar" + +#: models/foldermodels.py:280 msgid "type" msgstr "tipo" -#: models/foldermodels.py:239 +#: models/foldermodels.py:297 msgid "group" msgstr "grupo" -#: models/foldermodels.py:240 +#: models/foldermodels.py:304 msgid "everybody" msgstr "todos" -#: models/foldermodels.py:242 -msgid "can edit" -msgstr "pode editar" - -#: models/foldermodels.py:243 +#: models/foldermodels.py:309 msgid "can read" msgstr "pode ler" -#: models/foldermodels.py:244 +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "pode editar" + +#: models/foldermodels.py:325 msgid "can add children" msgstr "pode adicionar filhos" -#: models/foldermodels.py:273 +#: models/foldermodels.py:333 msgid "folder permission" msgstr "permissão de pasta" -#: models/foldermodels.py:274 +#: models/foldermodels.py:334 msgid "folder permissions" msgstr "permissões de pasta" -#: models/imagemodels.py:39 -msgid "date taken" -msgstr "data de tomada" +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" -#: models/imagemodels.py:42 -msgid "default alt text" +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." msgstr "" -#: models/imagemodels.py:43 -msgid "default caption" +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." msgstr "" -#: models/imagemodels.py:45 templates/image_filer/image.html:6 -msgid "author" -msgstr "autor" +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" -#: models/imagemodels.py:47 -msgid "must always publish author credit" +#: models/foldermodels.py:360 +msgid "All Folders" msgstr "" -#: models/imagemodels.py:48 -msgid "must always publish copyright" +#: models/foldermodels.py:362 +msgid "Logical Path" msgstr "" -#: models/imagemodels.py:50 -msgid "subject location" +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" msgstr "" -#: models/imagemodels.py:200 -msgid "image" -msgstr "imagem" +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" -#: models/imagemodels.py:201 -msgid "images" -msgstr "imagens" +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" -#: models/virtualitems.py:45 -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "unfiled files" -msgstr "arquivos unfiled" +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" -#: models/virtualitems.py:59 +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "data de tomada" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "autor" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "necessário sempre publicar os créditos do autor" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "necessário sempre publicar os direitos autorais" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "largura em pixel." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "altura em pixel." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "opções de miniaturas" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Uploads não classificados" + +#: models/virtualitems.py:73 msgid "files with missing metadata" msgstr "arquivos com falta de metadados" -#: models/virtualitems.py:73 templates/admin/filer/breadcrumbs.html:6 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:10 +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 msgid "root" msgstr "raiz" -#: templates/admin/filer/actions.html:4 -msgid "Run the selected action" +#: settings.py:273 +msgid "Show table view" msgstr "" -#: templates/admin/filer/actions.html:4 -msgid "Go" +#: settings.py:278 +msgid "Show thumbnail view" msgstr "" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Executar a ação selecionada" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Avançar" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 msgid "Click here to select the objects across all pages" -msgstr "" +msgstr "Clique aqui para selecionar os objetos em todas as páginas" -#: templates/admin/filer/actions.html:11 +#: templates/admin/filer/actions.html:14 #, python-format msgid "Select all %(total_count)s files and/or folders" -msgstr "" +msgstr "Selecionar todos os %(total_count)s arquivo(s) e/ou pasta(s)" -#: templates/admin/filer/actions.html:13 +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 msgid "Clear selection" -msgstr "" +msgstr "Limpar a seleção" #: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 msgid "Go back to admin homepage" -msgstr "Volte à página inicial de administração" +msgstr "Voltar à página inicial de administração" #: templates/admin/filer/breadcrumbs.html:4 -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 msgid "Home" msgstr "Início" #: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 msgid "Go back to Filer app" -msgstr "Volte para Filer app" - -#: templates/admin/filer/breadcrumbs.html:5 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/image_filer/image_export_form.html:8 -msgid "Filer" -msgstr "Filer" +msgstr "Voltar para Filer app" #: templates/admin/filer/breadcrumbs.html:6 -#: templates/image_filer/image_export_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:35 msgid "Go back to root folder" msgstr "Volte à pasta raiz" #: templates/admin/filer/breadcrumbs.html:8 -#: templates/admin/filer/breadcrumbs.html:11 -#: templates/admin/filer/folder/change_form.html:11 -#: templates/image_filer/image_export_form.html:12 -#: templates/image_filer/image_export_form.html:14 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 #, python-format msgid "Go back to '%(folder_name)s' folder" msgstr "Volte para a pasta '%(folder_name)s'" -#: templates/admin/filer/change_form.html:28 -msgid "duplicates" -msgstr "duplicatas" - -#: templates/admin/filer/delete_confirmation.html:13 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting " -"related objects, but your account doesn't have permission to delete the " -"following types of objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:21 -#, python-format -msgid "" -"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the " -"following protected related objects:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:29 -#, python-format -msgid "" -"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? " -"All of the following related items will be deleted:" -msgstr "" - -#: templates/admin/filer/delete_confirmation.html:34 -#: templates/admin/filer/delete_selected_files_confirmation.html:45 -msgid "Yes, I'm sure" -msgstr "" +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Duplicados" #: templates/admin/filer/delete_selected_files_confirmation.html:11 msgid "" @@ -486,399 +642,633 @@ msgid "" "objects, but your account doesn't have permission to delete the following " "types of objects:" msgstr "" +"Remover os arquivo(s) e/ou pasta(s) selecionados resultará na remoção de " +"objetos relacionados, mas sua conta não tem permissão para remover os " +"seguintes tipos de objetos:" #: templates/admin/filer/delete_selected_files_confirmation.html:19 msgid "" "Deleting the selected files and/or folders would require deleting the " "following protected related objects:" msgstr "" +"Remover os arquivo(s) e/ou pasta(s) selecionados, requer remover os seguites " +"objetos protegidos relacionados:" #: templates/admin/filer/delete_selected_files_confirmation.html:27 msgid "" "Are you sure you want to delete the selected files and/or folders? All of " "the following objects and their related items will be deleted:" msgstr "" +"Você tem certeza que deseja remover os arquivo(s) e/ou pasta(s) " +"selecionados? Todos os seguintes objetos e itens relacionados serão " +"removidos: " -#: templates/admin/filer/folder/change_form.html:7 -#: templates/admin/filer/folder/change_form.html:8 -#: templates/admin/filer/folder/change_form.html:9 -#: templates/admin/filer/folder/directory_listing.html:74 -#: templates/image_filer/image_export_form.html:7 -#: templates/image_filer/image_export_form.html:8 -#: templates/image_filer/image_export_form.html:16 -msgid "Go back to" -msgstr "Volte para" +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Não, me leve de volta" -#: templates/admin/filer/folder/change_form.html:7 -#: templates/image_filer/image_export_form.html:7 -msgid "admin homepage" -msgstr "homepage admin" +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Sim, eu tenho certeza" -#: templates/admin/filer/folder/change_form.html:22 -#: templates/admin/filer/image/change_form.html:9 +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 msgid "History" msgstr "História" +#: templates/admin/filer/file/change_form.html:37 #: templates/admin/filer/folder/change_form.html:23 -#: templates/admin/filer/image/change_form.html:10 +#: templates/admin/filer/image/change_form.html:37 msgid "View on site" -msgstr "Veja no site" +msgstr "Ver no site" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Voltar para" -#: templates/admin/filer/folder/change_form.html:35 -#: templates/admin/filer/folder/directory_listing.html:75 -#: templates/admin/filer/folder/directory_listing.html:85 -#: templates/admin/filer/folder/directory_table.html:23 +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "página inicial de administração" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 msgid "Folder Icon" msgstr "Ícone da Pasta" -#: templates/admin/filer/folder/choose_copy_destination.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:23 msgid "" "Your account doesn't have permissions to copy all of the selected files and/" "or folders." msgstr "" +"Sua conta não possui permissão para copiar todos os arquivo(s) e/ou pasta(s) " +"selecionados." -#: templates/admin/filer/folder/choose_copy_destination.html:15 -#: templates/admin/filer/folder/choose_move_destination.html:15 +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Me leve de volta" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 msgid "There are no destination folders available." -msgstr "" +msgstr "Não existe pasta de destino disponível." -#: templates/admin/filer/folder/choose_copy_destination.html:18 +#: templates/admin/filer/folder/choose_copy_destination.html:35 msgid "There are no files and/or folders available to copy." -msgstr "" +msgstr "Não existem arquivo(s) e/ou pasta(s) disponíveis para copiar." -#: templates/admin/filer/folder/choose_copy_destination.html:20 +#: templates/admin/filer/folder/choose_copy_destination.html:40 msgid "" "The following files and/or folders will be copied to a destination folder " "(retaining their tree structure):" msgstr "" +"Os arquivo(s) e/ou pasta(s) serão copiados para a pasta de destino (mantendo " +"a estrutura de diretórios):" -#: templates/admin/filer/folder/choose_copy_destination.html:32 -#: templates/admin/filer/folder/choose_move_destination.html:32 +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 msgid "Destination folder:" -msgstr "" +msgstr "Pasta de destino:" -#: templates/admin/filer/folder/choose_copy_destination.html:39 +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 msgid "Copy" -msgstr "" +msgstr "Copiar" -#: templates/admin/filer/folder/choose_images_resize_options.html:12 +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Não é permitido copiar arquivos para a mesma pasta" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 msgid "" "Your account doesn't have permissions to resize all of the selected images." msgstr "" +"Sua conta não possui permissão para redimensionar todas as imagens " +"selecionadas." -#: templates/admin/filer/folder/choose_images_resize_options.html:15 +#: templates/admin/filer/folder/choose_images_resize_options.html:18 msgid "There are no images available to resize." -msgstr "" +msgstr "Não existem imagens disponíveis para redimensionar." -#: templates/admin/filer/folder/choose_images_resize_options.html:17 +#: templates/admin/filer/folder/choose_images_resize_options.html:20 msgid "The following images will be resized:" -msgstr "" - -#: templates/admin/filer/folder/choose_images_resize_options.html:30 -msgid "Choose an existing thumbnail option or enter resize parameters:" -msgstr "" +msgstr "As seguintes imagens serão redimensionadas:" #: templates/admin/filer/folder/choose_images_resize_options.html:32 -msgid "Choose resize parameters:" +msgid "Choose an existing thumbnail option or enter resize parameters:" msgstr "" +"Selecionar uma opção de miniatura ou digitar os parâmetros de " +"redimensionamento:" -#: templates/admin/filer/folder/choose_images_resize_options.html:35 +#: templates/admin/filer/folder/choose_images_resize_options.html:36 msgid "" "Warning: Images will be resized in-place and originals will be lost. Maybe " "first make a copy of them to retain the originals." msgstr "" +"Cuidado: as imagens serão redimensionadas no mesmo local e os originais " +"serão perdidos. Uma sugestão seria fazer uma cópia para guardar os originais." -#: templates/admin/filer/folder/choose_images_resize_options.html:36 +#: templates/admin/filer/folder/choose_images_resize_options.html:39 msgid "Resize" -msgstr "" +msgstr "Redimensionar" -#: templates/admin/filer/folder/choose_move_destination.html:12 +#: templates/admin/filer/folder/choose_move_destination.html:35 msgid "" "Your account doesn't have permissions to move all of the selected files and/" "or folders." msgstr "" +"Sua conta não possui permissão para mover todos os arquivo(s) e/ou pasta(s) " +"selecionados." -#: templates/admin/filer/folder/choose_move_destination.html:18 +#: templates/admin/filer/folder/choose_move_destination.html:47 msgid "There are no files and/or folders available to move." -msgstr "" +msgstr "Não existem arquivo(s) e/ou pasta(s) disponíveis para mover." -#: templates/admin/filer/folder/choose_move_destination.html:20 +#: templates/admin/filer/folder/choose_move_destination.html:52 msgid "" "The following files and/or folders will be moved to a destination folder " "(retaining their tree structure):" msgstr "" +"Os arquivo(s) e/ou pasta(s) serão movidos para a pasta de destino (mantendo " +"a estrutura de diretórios):" -#: templates/admin/filer/folder/choose_move_destination.html:38 +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 msgid "Move" -msgstr "" +msgstr "Mover" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Não é permitido mover arquivos na mesma pasta" -#: templates/admin/filer/folder/choose_rename_format.html:12 +#: templates/admin/filer/folder/choose_rename_format.html:15 msgid "" "Your account doesn't have permissions to rename all of the selected files." msgstr "" +"Sua conta não possui permissão para renomear todos os arquivos selecionados." -#: templates/admin/filer/folder/choose_rename_format.html:15 +#: templates/admin/filer/folder/choose_rename_format.html:18 msgid "There are no files available to rename." -msgstr "" +msgstr "Não existem arquivos disponíveis para renomear." -#: templates/admin/filer/folder/choose_rename_format.html:17 +#: templates/admin/filer/folder/choose_rename_format.html:20 msgid "" "The following files will be renamed (they will stay in their folders and " "keep original filename, only displayed filename will be changed):" msgstr "" +"Os seguintes arquivos serão renomeados (estes arquivos serão mantidos em " +"suas pastas e os nomes originais serão mantidos, apenas o nome de " +"apresentação será alterado):" -#: templates/admin/filer/folder/choose_rename_format.html:54 +#: templates/admin/filer/folder/choose_rename_format.html:59 msgid "Rename" -msgstr "" +msgstr "Renomear" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Volte para a pasta pai" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Alterar os detalhes da pasta atual" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Alterar" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Clique aqui para pesquisar pela frase inserida" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Pesquisar" -#: templates/admin/filer/folder/directory_listing.html:66 +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Fechar" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Limite" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Marque para limitar a pesquisa na pasta atual" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Limitar a pesquisa na pasta atual" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Remover" + +#: templates/admin/filer/folder/directory_listing.html:203 msgid "Adds a new Folder" msgstr "Adiciona uma nova pasta" -#: templates/admin/filer/folder/directory_listing.html:66 -#: templates/image_filer/include/export_dialog.html:34 +#: templates/admin/filer/folder/directory_listing.html:206 msgid "New Folder" msgstr "Nova Pasta" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "upload files" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Enviar arquivos" -#: templates/admin/filer/folder/directory_listing.html:67 -msgid "Upload" -msgstr "" +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Você precisa selecionar a pasta primeiro" -#: templates/admin/filer/folder/directory_listing.html:74 -msgid "Go back to the parent folder" -msgstr "Volte para a pasta pai" +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Nome" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Proprietário" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Tamanho" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Ação" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 #, python-format -msgid "1 folder" +msgid "Change '%(item_label)s' folder details" +msgstr "Alterar os detalhes da pasta '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" msgid_plural "%(counter)s folders" msgstr[0] "%(counter)s pasta" msgstr[1] "%(counter)s pastas" +msgstr[2] "%(counter)s pastas" -#: templates/admin/filer/folder/directory_listing.html:76 -#: templates/admin/filer/folder/directory_table.html:29 -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 #, python-format -msgid "1 file" +msgid "%(counter)s file" msgid_plural "%(counter)s files" msgstr[0] "%(counter)s arquivo" msgstr[1] "%(counter)s arquivos" - -#: templates/admin/filer/folder/directory_listing.html:80 -msgid "Change current folder details" -msgstr "Alterar os detalhes da pasta atual" - -#: templates/admin/filer/folder/directory_listing.html:80 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:43 -msgid "Change" -msgstr "Alterar" - -#: templates/admin/filer/folder/directory_table.html:13 -msgid "Name" -msgstr "Nome" - -#: templates/admin/filer/folder/directory_table.html:23 -#: templates/admin/filer/folder/directory_table.html:27 -#: templates/admin/filer/folder/directory_table.html:29 -#, python-format -msgid "Change '%(item_label)s' folder details" -msgstr "Alterar os detalhes da pasta '%(item_label)s'" - -#: templates/admin/filer/folder/directory_table.html:30 -#: templates/admin/filer/folder/directory_table.html:45 -msgid "Owner" -msgstr "Proprietário" - -#: templates/admin/filer/folder/directory_table.html:37 +msgstr[2] "%(counter)s arquivos" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Alterar detalhes da pasta" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Remover pasta" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 msgid "Select this file" -msgstr "Selecione este arquivo" +msgstr "Selecionar este arquivo" -#: templates/admin/filer/folder/directory_table.html:39 -#: templates/admin/filer/folder/directory_table.html:43 -#: templates/admin/filer/folder/directory_table.html:44 +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 #, python-format msgid "Change '%(item_label)s' details" msgstr "Alterar os detalhes de '%(item_label)s'" -#: templates/admin/filer/folder/directory_table.html:42 -#, python-format -msgid "Delete '%(item_label)s'" -msgstr "" - -#: templates/admin/filer/folder/directory_table.html:42 -msgid "Delete" -msgstr "" - -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "Permissions" msgstr "Permissões" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "disabled" msgstr "desabilitado" -#: templates/admin/filer/folder/directory_table.html:46 +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 msgid "enabled" msgstr "habilitado" -#: templates/admin/filer/folder/directory_table.html:50 -msgid "Move to clipboard" -msgstr "Mover para a área de transferência" +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Mover os arquivos selecionados para a área de transferência" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "URL Canônico '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Baixar '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Remover arquivo" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Arraste os arquivos aqui ou use o botão \"Enviar arquivos\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Arraste seu arquivo para enviar em:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Upload" -#: templates/admin/filer/folder/directory_table.html:58 -msgid "there are no files or subfolders" -msgstr "não existem arquivos ou subpastas" +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "Cancelar" -#: templates/admin/filer/folder/directory_table.html:65 +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Envio realizado com sucesso!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Envio cancelado!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 msgid "previous" -msgstr "" +msgstr "anterior" -#: templates/admin/filer/folder/directory_table.html:69 +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 #, python-format -msgid "" -"\n" -" Page %(number)s of %(num_pages)s.\n" -" " -msgstr "" +msgid "Page %(number)s of %(num_pages)s." +msgstr "Página %(number)s de %(num_pages)s." -#: templates/admin/filer/folder/directory_table.html:75 +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 msgid "next" +msgstr "próximo" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Selecione todos %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" msgstr "" #: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 msgid "Add new" msgstr "Adicionar novo" -#: templates/admin/filer/folder/new_folder_form.html:13 +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Administração Django" + +#: templates/admin/filer/folder/new_folder_form.html:15 msgid "Please correct the error below." msgid_plural "Please correct the errors below." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Favor corrigir o erro abaixo." +msgstr[1] "Favor corrigir os erros abaixo." +msgstr[2] "Favor corrigir os erros abaixo." -#: templates/admin/filer/folder/new_folder_form.html:28 +#: templates/admin/filer/folder/new_folder_form.html:30 msgid "Save" msgstr "Salvar" -#: templates/admin/filer/image/change_form.html:21 -msgid "Full size preview" -msgstr "visualização de tamanho completo" +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" -#: templates/admin/filer/tools/search_form.html:8 -#: templates/admin/filer/tools/search_form.html:14 -msgid "Search" -msgstr "Pesquisa" +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" -#: templates/admin/filer/tools/search_form.html:13 -msgid "Enter your search phrase here" -msgstr "Digite sua frase de busca aqui" +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Área de transferência" -#: templates/admin/filer/tools/search_form.html:14 -msgid "Click here to" -msgstr "Clique aqui para" +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Colar todos os itens aqui" -#: templates/admin/filer/tools/search_form.html:14 -msgid "run search for entered phrase" -msgstr "executar pesquisa para a frase inscrita" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Mova todos os arquivos da área de transferência para" -#: templates/admin/filer/tools/search_form.html:15 -msgid "Check it to" -msgstr "Verifique se a" +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Esvaziar área de transferência" -#: templates/admin/filer/tools/search_form.html:15 -#: templates/admin/filer/tools/search_form.html:16 -msgid "limit the search to current folder" -msgstr "limitar a pesquisa a pasta atual" +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "a área de transferência está vazia" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "Falha no upload" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tipo" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Tamanho do arquivo" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Modificado" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Criado" + +#: templates/admin/filer/tools/search_form.html:5 msgid "found" msgstr "encontrados" -#: templates/admin/filer/tools/search_form.html:18 +#: templates/admin/filer/tools/search_form.html:5 msgid "and" msgstr "e" -#: templates/admin/filer/tools/search_form.html:19 +#: templates/admin/filer/tools/search_form.html:7 msgid "cancel search" msgstr "cancelar a busca de" -#: templates/admin/filer/tools/upload_button_js.html:24 -#: templates/admin/filer/widgets/admin_file.html:7 -#: templates/admin/filer/widgets/admin_file.html:8 -msgid "file missing" -msgstr "arquivo faltando" +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Limpar" -#: templates/admin/filer/tools/clipboard/clipboard.html:7 -msgid "Clipboard" -msgstr "Área de transferência" +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "ou arraste seu arquivo aqui" -#: templates/admin/filer/tools/clipboard/clipboard.html:19 -msgid "Paste all items here" -msgstr "Colar todos os itens aqui" +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "nenhum arquivo selecionado" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "discard" -msgstr "descartar" +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Pesquisar" -#: templates/admin/filer/tools/clipboard/clipboard.html:26 -msgid "Move all clipboard files to" -msgstr "Mova todos os arquivos da área de transferência para" +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Alterar Arquivo" -#: templates/admin/filer/tools/clipboard/clipboard.html:43 -msgid "the clipboard is empty" -msgstr "a área de transferência está vazia" +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" -#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:11 -msgid "upload failed" -msgstr "Falha no upload" +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:11 -msgid "no file selected" -msgstr "nenhum arquivo selecionado" +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:14 -#: templates/admin/filer/widgets/admin_file.html:15 -#: templates/admin/filer/widgets/admin_folder.html:7 -#: templates/admin/filer/widgets/admin_folder.html:8 -msgid "Lookup" -msgstr "Pesquisa" +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" -#: templates/admin/filer/widgets/admin_file.html:17 -#: templates/admin/filer/widgets/admin_folder.html:10 -msgid "Clear" -msgstr "Limpar" +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" -#: templates/admin/filer/widgets/admin_folder.html:5 -msgid "none selected" +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" msgstr "" -#: templates/image_filer/folder.html:3 -#, python-format -msgid "Folder '%(folder_label)s' files" -msgstr "Arquivos da pasta '%(folder_label)s'" +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" -#: templates/image_filer/folder.html:6 -msgid "File name" -msgstr "Nome do arquivo" +#~ msgid "none selected" +#~ msgstr "none selected" -#: templates/image_filer/image_export_form.html:17 -msgid "export" -msgstr "exportação" +#~ msgid "Add Folder" +#~ msgstr "Add Folder" -#: templates/image_filer/image_export_form.html:27 -msgid "download image" -msgstr "download da imagem" +#~ msgid "Subject Location" +#~ msgstr "Subject location" -#: templates/image_filer/include/export_dialog.html:13 -msgid "Folder name already taken." -msgstr "Nome da pasta já existe." +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" -#: templates/image_filer/include/export_dialog.html:15 -msgid "Submit" -msgstr "Enviar" +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/ru/LC_MESSAGES/django.mo b/filer/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..05996b220420defedc6d7f8b144439b71c75eca5 GIT binary patch literal 21137 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, 2020 +# Oleg Fish , 2017 +# Pavel , 2012 +# Pavel , 2012 +# Vladimir Puzakov , 2019 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Alexander Naydenko , 2020\n" +"Language-Team: Russian (http://app.transifex.com/divio/django-filer/language/" +"ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Дополнительно" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "канонический URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Для выполнения действий нужно выбрать хотя бы один объект. Не произведено " +"никаких изменений." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "%(total_count)s выбран" +msgstr[1] "%(total_count)s выбрано" +msgstr[2] "Все %(total_count)s выбраны" +msgstr[3] "Все %(total_count)s выбраны" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Содержимое %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 из %(cnt)s выбрано" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Действие не выбрано." + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Успешно перемещено %(count)d файлов в буфер обмена." + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Переместить выбранные файлы в буфер обмена" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Разрешения успешно отключены для %(count)d файлов." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Разрешения успешно применены для %(count)d файлов." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Включить разрешения для выбранных файлов" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Отключить разрешения для выбранных файлов" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Успешно удалено %(count)d файлов/папок." + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Невозможно удалить файлы/папки" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Вы уверены?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Удалить файлы/папки" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Удалить выбранные файлы/папки" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Папки с именами %s уже существуют в указанном месте" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "Успешно перемещено %(count)d файлов/папок в папку '%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Переместить файлы/папки" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Переместить выбранные файлы/папки" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Успешно переименовано %(count)d файлов." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Переименовать файлы" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "Успешно скопировано %(count)d файлов/папок в папку '%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Скопировать файлы/папки" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Скопировать выбранные файлы/папки" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Успешно изменен размер %(count)d изображений." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Изменить размер изображений" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Изменить размер выбранных изображений" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Окончание, которое будет добавлено к именам скопированных файлов." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Окончание должно быть правильной, простой и в нижнем регистре частью имени " +"файла, например \"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Неизвестный ключ форматирования \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Неверный формат переименования: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "опция миниатюры" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "ширина" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "высота" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "обрезать" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "увеличивать" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Опция миниатюры или параметры изменения размера должны быть указаны." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Расположение объекта" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Расположение главного объекта сцены. Формат: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Неверный формат расположения объекта." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Расположение объекта указано за пределами изображения." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Вы ввели: \"{subject_location}\". " + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Папка с таким именем уже существует" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Медиа-библиотека" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "альтернативный текст" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "описание" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "расположение объекта" + +#: models/abstract.py:91 +msgid "image" +msgstr "изображение" + +#: models/abstract.py:92 +msgid "images" +msgstr "изображения" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "пользователь" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "файлы" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "буфер обмена" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "буферы обмена" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "файл" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "элемент буфера обмена" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "элементы буфера обмена" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "папка" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "размер файла" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "это обязательные данные" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "оригинальное имя файла" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "имя" + +#: models/filemodels.py:116 +msgid "description" +msgstr "описание" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "владелец" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "загружено" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "изменено" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Разрешения отключены" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Отменить все проверки разрешений для этого файла. Файл будет доступен " +"публично для каждого." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "создан" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Папка" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Папки" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "все элементы" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "только этот элемент" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "этот элемент и потомки" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "разрешить" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "запретить" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "тип" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "группа" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "все" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "могут читать" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "могут редактировать" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "могут добавлять потомков" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "разрешение папки" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "разрешения папки" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "дата создания" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "автор" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "необходимо всегда указывать авторство" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "необходимо всегда указывать copyright" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "ширина в пикселях." + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "высота в пикселях." + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "опции миниатюры" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Несортированные загрузки" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "файлы с отсутсвующими метаданными" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "корень" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Выполнить выбранное действие" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Выполнить" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Нажмите здесь, чтобы выбрать объекты на всех страницах" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Выбрать все %(total_count)s файлов/папок" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Очистить выбор" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Вернуться на главную страницу администрирования" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Домой" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Вернуться на главную Filer'а" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Вернуться в корневую папку" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Вернуться в папку \"%(folder_name)s\"" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Дубликаты" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Удаление выбранных файлов/папок приведет к удалению связанных объектов, но у " +"вас нет прав удалять следующие объекты:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Удаление выбранных файлов/папок потребует удаления следующих защищенных " +"связанных объектов:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Вы уверены, что хотите удалить выбранные файлы/папки? Следующие объекты " +"вместе со связанными объектами будут удалены:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Нет, пустите меня обратно" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Да, я уверен" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "История" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Посмотреть на сайте" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Вернуться к" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "главная страница администрирования" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Иконка папки" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "У вас нет прав на копирование выбранных файлов/папок" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Пустите меня обратно" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Нет доступной целевой папки." + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Нет файлов для копирования." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Эти файлы/папки будут скопированы в целевую папку (с сохранением " +"иерархичности):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Целевая папка:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Копировать" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Копирование файлов в ту же самую папку запрещено" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "Вы не имеете прав для изменения размеров выбранных изображений." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Нет доступных изображений для изменения размеров." + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "У этих изображений будет изменен размер:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "Выберите опцию миниатюры или введите параметры изменения размеров:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Внимание: изображения будут изменены в размерах с заменой оригиналов. " +"Возможно, лучше будет сперва сделать копии." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Изменить размеры" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "Вы не имеете прав для перемещения выбранных файлов/папок." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Нет файлов/папок для перемещения." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Следующие файлы/папки будут перемещены в целевую папку (сохраняя " +"иерархичность):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Переместить" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Перемещение файлов в ту же самую папку запрещено" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "У вас нет прав на переименование выбранных файлов." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Нет файлов для переименовывания." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Эти файлы будут переименованы (они остануться в их папках и сохранят имена " +"оригинальных файлов, только отображаемое имя измениться):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Переименовать" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Возвратиться к родительской папке" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Изменить текущую папку" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Изменить" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Нажмите здесь для поиска по введенной фразе" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Поиск" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Закрыть" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Ограничить" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Отметьте, чтобы ограничить поиск текущей папкой" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Ограничить поиск текущей папкой" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Удалить" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Добавляет новую папку" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Новая папка" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Загрузить файлы" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Сначала надо выбрать папку" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Имя" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Владелец" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Размер" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Действие" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Изменить данные папки \"%(item_label)s\"" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s папка" +msgstr[1] "%(counter)s папки" +msgstr[2] "%(counter)s папок" +msgstr[3] "%(counter)s папок" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s файл" +msgstr[1] "%(counter)s файла" +msgstr[2] "%(counter)s файлов" +msgstr[3] "%(counter)s файлов" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Изменить свойства папки" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Удалить папку" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Выбрать этот файл" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Изменить данные \"%(item_label)s\"" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Разрешения" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "отключены" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "включены" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Переместить выбранные файлы в буфер обмена" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "Канонический URL '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Скачать '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Удалить файл" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "\"Скиньте\" сюда файлы или используйте кнопку \"Загрузить файлы\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "\"Скиньте\" ваши файлы сюда для загрузки в:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Загрузить" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "отмена" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Загрузка успешно завершена!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Загрузка отменена!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "предыдущая" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Страница %(number)s из %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "следующая" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Выбрать все %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Добавить новую" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Система администрирования Django" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Пожалуйста, исправьте указанную ошибку." +msgstr[1] "Пожалуйста, исправьте указанные ошибки." +msgstr[2] "Пожалуйста, исправьте указанные ошибки." +msgstr[3] "Пожалуйста, исправьте указанные ошибки." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Сохранить" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Буфер обмена" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Вставить все элементы здесь" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Переместить элементы буфера обмена в" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Пустой буфер обмена" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "буфер обмена пуст" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "загрузка не удалась" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Тип" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Размер файла" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Изменен" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Создан" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "найдено" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "и" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "закрыть поиск" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Очистить" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "или \"скиньте\" ваш файл сюда" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "файл не выбран" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Выбрать" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Выбрать файл" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/sk/LC_MESSAGES/django.mo b/filer/locale/sk/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4398907147f346e366cd74d14edbdd355e63cd8b GIT binary patch literal 512 zcmZ8c+fD*85Y_0@KKks#m?(j0*JFSiEc?;g}6@Z(RG9fo|$!I zVwkd$Ic+FBsEkVuU7-ZDW( z%<&e-w=T>j6RHW*IWv~K\n" +"Language-Team: Slovak (http://app.transifex.com/divio/django-filer/language/" +"sk/)\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n " +">= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" +#~ msgstr[2] "15c0f2d28d6dab1af1f6d94906beb627_pl_2" +#~ msgstr[3] "15c0f2d28d6dab1af1f6d94906beb627_pl_3" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/tr/LC_MESSAGES/django.mo b/filer/locale/tr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..d1049348f92742c8601e96d3f90dd493b5d6ac08 GIT binary patch literal 7360 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, 2013,2015-2016 +# Cihad GÜNDOĞDU , 2013 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Cihad GÜNDOĞDU , 2013,2015-2016\n" +"Language-Team: Turkish (http://app.transifex.com/divio/django-filer/language/" +"tr/)\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Gelişmiş" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "standart URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" +msgstr[1] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "%(cnt)s 0 adet seçildi" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "İşlem seçilmedi" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "%(count)d adet dosya arabelleğe taşındı" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Seçili dosyalar ara belleğe alındı" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "%(count)d adet dosyanın yetkilendirmesi pasif hale getirildi." + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "%(count)d adet dosyanın yetkilendirmesi pasif hale getirildi." + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Seçili dosyalar için yetkilendirmeyi aktif yap" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Seçili dosyalar için yetkilendirmeyi pasif yap" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "%(count)d dosya veya klasörler başarıyla silindi" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Seçili dosya veya klasörler silinemedi" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Eminmisiniz?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Dosya veya klasörleri sil" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Seçili dosya veya klasörleri sil" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "%s isimli klasörler seçili hedefte var." + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d adet dosya/klasör başarıyla '%(destination)s' klasörüne taşındı" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Dosya veya klasörleri taşı" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Seçili dosya veya klasörleri taşı" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "%(count)d adet dosya yeniden adlandırıldı." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Dosyaları yeniden adlandır" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"%(count)d adet dosya veya klasör '%(destination)s' klasörüne kopyalandı" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Dosya veya klasörleri kopyala" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Seçili dosya veya klasörleri kopyala" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "%(count)d adet resim başarıyla yeniden boyutlandırıldı." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Resimleri yeniden boyutlandır" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Seçili resimleri yeniden boyutlandır" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "genişlil" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "yükseklik" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "kırp" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Bu isimde dizin zaten var" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "kullanıcı" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "dosyalar" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "ara bellek" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "ara bellekler" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "dosya" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "arabellek nesnesi" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "klasör" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "dosya boyutu" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "orjinal dosya adı" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "isim" + +#: models/filemodels.py:116 +msgid "description" +msgstr "açıklama" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "sahib" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "yüklendi" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "düzenlendi" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Yetkiler pasifleştirildi" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "tüm elemanlar" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "sadece bu eleman" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "bu eleman ve alt elemanlar" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "izin ver" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "engelle" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "tip" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "grup" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "herkes" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "okuyabilir" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "düzenleyebilir" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "alt eleman ekleyebilir" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "dizin yetki" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "dizin yetkileri" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "kök" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Seçili aksiyonu çalışıtır" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Git" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Yeniden adlandır" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Ara" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Geçerli klasörün aramalarını sınırla" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Sil" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Yeni Klasör Ekle" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Yeni Klasör" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Dosyaları Yükle" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Önce bir klasör seçmelisin" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "İsim" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Sahip" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Boyut" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "İşlem" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "'%(item_label)s' klasör detaylarını değiştir" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Klasör detaylarını değiştir" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Klasörü kaldır" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Bu dosyayı seç" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "'%(item_label)s' detaylarını değiştir" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Yetkiler" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "pasif" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "aktif" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Seçili dosyalar ara belleğe alındı" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Dosyayı kaldır" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Buraya dosya yüklemek için \"Dosyaları Yükle\" düğmesine tıklayın" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Yüklenecek dosyayı buraya bırakın" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Yükle" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "iptal" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Yükleme Başarılı" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Yükleme iptal!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "önceki" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Sayfa %(number)s / %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "sonraki" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "%(total_count)s Tümünü seç" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Yeni ekle" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" +msgstr[1] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Kaydet" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Ara bellek" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Tüm elemanları buraya yapıştır" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Arabellekteki tüm dosyaları kopyala" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Bellek boş" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "Arabellek boş" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "Yükleme başarısız" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Tip" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Dosya-Boyut" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Düzenlendi" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Oluşturuldu" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "bulundu" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "ve" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "arama iptal" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Temizle" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "Seçili dosya yok" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Dosya Seç" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" +#~ msgstr[1] "15c0f2d28d6dab1af1f6d94906beb627_pl_1" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/vi_VN/LC_MESSAGES/django.mo b/filer/locale/vi_VN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..c784f9621b9060a17d61a652971e85a732823d3b GIT binary patch literal 18089 zcmcJV3$$ESdB-;rKqD$3s9=#pAdtYlHwh2Hi%3X9NFWJ;Bs_fKxicqshRmEZnK_f> zirQkd3NcEgh=@u;jN#cp0hN2P*bbsqt4nK_w#(wWwOzVst<}~?UAk6(|GoD)bLQR& z39fclzWYCq{rL9x-uvX)V`kiL_izQ}9gi_uv9>?y<(a1bhpqb`dxO+yEXA zHbC)n3n=~{0>#hc;A_Dr!BfHSgExS`2ls*%m|_ZZ)T@k{4W0_V8N3V>|9e2m;Txdl zc@~@x{sz>#=f2vQncy-|e6ImDP6-shH-qB$Hc z-Sl$^f?9tA!N zYTloL;`5iF*7s@#m3#(3-JcIG1Xud!9|o=cf#UC8P$s_5-#_W!cRSG!27^+!2bbX4-R46@}me`1>OZpzR!Wu z?`tuV)4+>C^{;>zfL{Q`_kV*Mz(a5v*<~HP1^hm!{-wbA!OfuNeca=7;OX3-gz)Bo zmxAJ_0gC^-^WTB8+n1p{JwFkAH+TjpyT2Eti5UlFFF){j z4n}zy_a6c;2fqjM%A9hlF)s&~g0la0p!9q_cqkZw;-d26hHsq-#_P{|0gJZ zeho_Aho0u*=4?=WEcUnzRR5Kr#(g`e`P<-O;0HjhXFI5VAMa-VW{t?*_%^VmhA(z8#dEeGF8;C&077FN1Fae*-Fh zop+}5n~mVb+J_;%>d=ZpC{TJ8)Hx4;FId>kpgZpLRMz9IWzyAePJUxECliS(g zLhdgE)qWc&c|Q&k(#-@&7xP{4Sa1eR>HYDb_&N!c{LTPblDPzwoi@Q`;QK-O^FLcZ1T?4?G@wwtKz;+{p9ygOcm7 zL9KTNf7XC+05#rrQ2uo%cntWsfBsd_t`o$x%nXF9`368ek3h-)cJL_h6QI`d07xh{ z-vwU@{sNT#4u8E{&j5G?_sjkLl^~(l#GvHyVel2;ouK%;4?G%t9F!cs0tVnegP4># zl*Oz6JW%{x0jl3xP=5Um@IvstpvL(UDF6EocpNwhB0BSHFapnDk+SPsLD}`UK&CP; z;pWZYLQv1|;t!@}{vOo$Glt0};39Ad_%NvPe+k|QzLX^N9`FO;-QeMGbn|=`l%D?; zgaz{=2GjV%;3;4VYW|Od*MZ*x4+rPMa6Q0>?G_v=CFW248dpzQQ^e}4}sdwdK$7W@jR{yzYv=bwV={|iuZnz7i~ z#~e`Y7K1Ma*MjQ*Hc;)G;PK%5K>6*b{rk^=FXR3RQ1<>6Q0w>^C_a7*o&dfK<;uS1 zfa-q^I2#-W6|dd_YP~mrYIhSTIcx`|hh3ojXB$U8;9=mWLG}L(D0{mPRJ*6ZS>WG+>i;YM{s@BZiQJzE%8o7o^?nhk{%b(3 zqYBDTTA=juUQlxT2zUr68~HFK8EZZIY26=y?$-@J+4HH;cHQ{jd%;`%bp@1e^xF*W zuvadA6LxI;eFVG|lI;ElIv1)!pM|6!{r(b)pasx9&?le~NWW(sn9qQclYHy*5N>E5 zhU5#`4_CJ}|goZd}tiP_02~h{Ume!mN_uDgQxiG zuY#M-G`RgYhhV(nhfq5MK8uWf>A@oUz zFkpXQ^;bgAJ zA&*ysv!K(U0caG`?>cA=^rz4}p{F4IPKM?{H$iRaPUut6tD!TY`=H&BekG^{-3VO* z>35+68>e5v^-<8-&|gDmKy~OzsQ6pK%|*}#=w9eJ=rKsY#n4LV&!8h9{c6yW&}Gn9 zpxdBhpeD2w(r*{^5EMdRhGs)%_MB4Ej?<_)w-v0f)}m<-TD?z_S~+U=d8B4(l7_YG z?RbpVifU0QjmqZYS}oY`%lSdFp0}kq?deiVt4VAwE|-Hi+AM4Zp)P}^j)9BIo5HxH z!JAPqmb8Ob+h1%B<1|Q4MiE;5V5I8M@x2?=)UylRrf)lygs z+Ra*U`s_Ix`1)En64mCmPB)7yVLTdnnD&~H)391=?f1P~-PC5KcC#5FpZ;&BJ&j5m zSgxd5tJZa4g&8(W6+P=63{H}y6$MLWME*LAgJ?^&l}ey#rClG1;WU?q}Z zTh(_)K_hI2byU`D4V%TaC~UgFUVAc!#kDF7RU$Oa^v!n6JIl=aY%J8%s5HYC9Q3qx zwrKg!66TeND0BejTVFjkzpRKe&aD)mV#RTmY9tXbzy z-)N6uUbQhTB!Xp)1J4YV#L-YbbazFJ!f?ITVwT*1hbKV`zYoH4y&9V($>zA0gym`O zZk9BYhPNDR|BTkg+2oM3)-`M&IbLg)gq-3lwu2S6f{(asyJpomO^^|H#GVwpzogzs z$AYf)UlLon9DsSvHYmR}x@wxGE-pI=mX~0`UvI9agbPVhlE>ljit?BX46PyGs+A!! zrny?Sg4uGI~17ZxEO+DdIDFnnRth0OGGMf9MW#klAJwzeLK_>{7rVz!eOU% zP>`HlqgquD3*RZ*oyM!5u^stu33ztU@VfRkwmcR!)Ao zjEBssWFSbx4N-vpWXa}=%`v{U8uP92D7(m4Hmk|91d&ogQBZQOWla&qV_S^6pZBe-!BtUiNhZ5?ao{Rz<2-bxE>q*i z#tR2QwQjSnzsrT2Jtn!kYQwv_la*ORrZ8)4)(7;?u6jy&`8==sE7%W}$9uCzk!{Ts zH=OoBzL>PrR<#^u6{O`KM_tplsbPJ)Mw-Auu|SmOYU6TWCgfSpX%(^xp^a*AsCPV9 z+a74Zshzyq3)#-4r73Jp>4pYLZ`4&?Yf?Cxx|k`wWEThG?*%Nl|8PbBnlitOvC}x1 z)=CyxY~{>P&DO84ZV6fyTSpNH!@vgb0n&B7VatXx;dyh^EXjow60D^Y{?h?s4?a9= z_8i+~Zi~?5$J<<~QafjR2l7o6mziIh_aoTy#@mYxG(%=>F(Rz(*`@RgMfvc46b28A znKCo7IZbULVqX@r!AYAD0Y7cFODUVFxx?lK%;gmHe>+tsrc9S}2nb_tb*(fUQ?1Dp z7`BIbqzf~f*z3r3P++lbUzO#JWeQ5?FSwHw(7#j0hlX~doYKxOv4;n@PBomqYjf`k z`?b7UDA_GwOg9R3vo78cQ_%L-J949T6l_3~I0#_fV_n=zn%Z2uTDD~zda&hL_ADrA z<4;67IeXi3q4s2Rb(Qo=F`|mvToX2B+rz=;SS8Ta5r0zs2FS5xhGdmLUbx~^|Sbo|mXTRZsx;>jP*KtT;%Ocd^ zvK@o@cyA|AivwFS4J3L^|!)4MiWj1TJ zIE+m>S|4h&9YSfeCCwj{LVL8reLTjWR;gL_53-WaXLA#6ikf31NqNjD9@#&*4K)n{Kx(@Gpvm0*~6rablf?(ygYa{2XO4_hJ&&@o>sGxV1#(I&5mJkZ4}mr z144Z&O;CHy(RHvYtj`VRRMNCDJZ~O_)ljP0s_UaI8f9L&il*kdB@Ifm&3QFH;=E1O z>#trlZ*D%taA2RzT)BMZC0%hW7@9wGal(OR%t{dWuywt8+ z^SkZD!}_Q>cu8Esf|ZTVAE~A@SJ&Fjur{deYil@&8}_z!;erbScX{Fb3uc<)$$UCF z@qtF~lgcv>2ldH`Jtebta(qu3lqSb_Q%e{L>t&staV2H3KHno4bs&fxYTpT85(d76p_WYek zHR1Ta5|zQ^#Ev-F(s?ut>>`3qot^V4$>jLwOT~en-qG3ZnY<_{EGUNWeGD$1c2tAZ zE{A(Y39@%7ZSJGy*1|Tn3D`6qe@aIWopGABCda=Rj7&~!vs?^kJUad?n`+7s7n#c| zoyX{*0k=AyOPyWtDd`s(cTaOMm~|ZB(`R>sf!dSf_r=o>@YYtSShb4VCCvPqx!jZl zJ|aMnR$)DT-tPP9QqaoOZwbLc%vk7Nsj^-w8g%J-EsN~~&daI4jLfcbYcR?vcU2LK zEF$eZSPwR6ZFQEJFjQ_rJ+t`{oVoiO3{Xbbd4heko1io~u@`g71LM;>aAj%fHqSMO zcGkeKknx8avxH7 z-fh=CzN>DYzP0lx&(?(OA1a;u8r`eu=G&G2!L@SBal+R`yRB^`MTs4hn@GY0hlB8_ zpqz&Tr;=$d*j+=BJLl|(uB~{ux9yyGe?smF89q>sAk-w-ga>ep+ICjaUxEZTh2QDZ zmnX*`$b*oLd{edCop=BXc;;bgv9q%pY>?gVCK6Z!hZXE;g9{LfsT^fxX476Z_cja@tM7SKle?$5!~IxJLTYf8UG|;i>ds?<^-;Dj(jQ!rZ8l6! zbos%tC$_Q~YNA~^H{&&exU+L?h)}L;8-h7lz=N$r=6Q#(e0Q}tWLO*%yOf+rPXlF zSxB`zKv7{5|5kYjv#RB=SwS#rm=&F!^#I21U`$z=l#c4^=5iZ|H1n=B*Rce-pQXC? zS>SR@@LyrNnl_81ly)~`b{(c@4;VT@I#sNZ!kjU)$}Ey{CQZy$1}^kpY+bl(RE0ri zx26qYLmy4HsrGoN=q|*Ps=2aFNUq6-(V-M!ucfaZJ3PI}K(Qf-8}7WWY_Zxij>^DM z#q5c_K|Cra|5UZdOnO^)7d1-crM4=t)Rh3^g=lqR8wo_FLbH4p7R3w7D8j%lrj|J< zc}m3Imtlrdp@wVpeEpfyu`4piy#~5z`Vd1|)gp^&DD)G!d=l{HjXqIwsq;jy8hy3X z?N_EzMKOj9<}BSNziAyald$`j+?QQ`uq!m7dT=9$IfnD=}S*HOIY6nG(;<%p!XU`9z$Hx_GUKkk#@|1I0)o zrBI6(`gYYcy{2~4_SNb1#yxI1eS$)ybp=t8EwdKeE(R61Whkh&SN~Hi#@p`zEIjit zWnJenIcOdfR%K3$;On7s9lYEZVtVpY<*hcjAR&{#eB%RGG8DB#_`c= zD)QbE*1hl1T|w|HKg%*W441fTun zwkpF-!B4v$+W)CdEF(5`jV3CeDxC*$Fz2(*`q^D6@|5fzs~Z-(U%c`#*T*HSw-wTk za?;e#a<&?_HQqsvSzw5R$mcJ0@*y3U#l`HWXt1&C`MOzti!mW@{CsNDJCzB!dG`}V zF>2(a=JHik@76pF)m2O%RTYzFK9=Kfs893#Z|ii@q5t1Fx18CcE&k8(&o3Te0?M9H)l_9oHBc{uIRO--f21Hvm4)onZD0_wsI&M&m4aU zv}sa%GKK%N$r)o|HCftshebM9assegu|?p3Egx@oW}%`&>~LPtQ51EhuDFeUdR}H)=o7pogst65uv;Z+&;#}>M2J2;-Pi>&_p~WQ zVR#l7cCGy~7OAIus?$Bs@tZKZ9q`yD^Wogg<&)d_0(rUg)Xt4(#q7 zJGsygX>~*6$>v%<5qOiehdzs$os6bn$^m@Q(E8gJ-0F0IY3{Hw%XPPQU9iTw%Fdx+ zv9-8Kw|(7}_!!ZR99ijX&sCjnowK+-TT%0Nh9Sd<1HoFAbg-ZUVGFT8gk=aF(xmq2 z)<W1Ui4f{*yi!uhq~gRZtA z-NSxUtZa}f0>i#DO>BvC)<_uJhYP2dmW+aJmlKWeX)s0buJU*Jaw0uj6Gqt zJy{w_g;kC}g~RBRiWWeGGoS>o+nc7mBF5<>M^|ulc0EkEn@*g%PTd39hi;?cj;IW6 zvpp(B#P(`_uEHBi5i@01;vQxz?sKQpRuv@v1GD75O+4>OP1j#cb_!T{l#SWvl~tGo zvu6xpcOI=fC3iU|9qr?r5e&B}3-(Hi*bb!@gExL+eklf8hTnR7HS23n>&59 zA+oC@8$7Mw;%_%I1rBc;vg|%}L#~hhZ|x~{Th^PUZ@Z^we)mBmd+K}-6R{}yRqml6 literal 0 HcmV?d00001 diff --git a/filer/locale/vi_VN/LC_MESSAGES/django.po b/filer/locale/vi_VN/LC_MESSAGES/django.po new file mode 100644 index 000000000..24ac1a3a7 --- /dev/null +++ b/filer/locale/vi_VN/LC_MESSAGES/django.po @@ -0,0 +1,1252 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Duong Vu Hong , 2021 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Duong Vu Hong , 2021\n" +"Language-Team: Vietnamese (Viet Nam) (http://app.transifex.com/divio/django-" +"filer/language/vi_VN/)\n" +"Language: vi_VN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "Nâng Cao" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "URL hợp chuẩn" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" +"Những item được chọn để thực hiện hành động trên đó. Không có item nào bị " +"thay đổi." + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "Tất cả %(total_count)s được chọn" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "Thư mục liệt kê cho %(folder_name)s" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "0 trên %(cnt)sđược chọn" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "Không có hành động được chọn" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "Di chuyển %(count)dtệp vào bảng tạm thành công" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "Di chuyển tệp đã chọn vào bảng tạm" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "Vô hiệu hóa quyền của %(count)dtệp thành công" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "Kích hoạt quyền của %(count)dtệp thành công" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "Kích hoạt quyền cho các tệp đã chọn" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "Vô hiệu hóa quyền của các tệp đã chọn" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "Đã xóa %(count)d tệp và/hoặc thư mục thành công. " + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "Không thể xóa các tệp và/hoặc các thư mục" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "Bạn chắc chắn chứ?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "Xóa các tệp và/hoặc các thư mục" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "Xóa các tệp và/hoặc các thư mục dã chọn" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "Các thư mục với tên %s đã tồn tại ở vị trí đã chọn" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Đã di chuyển %(count)d tệp và/hoặc thư mục tới thư mục '%(destination)s'." + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "Di chuyển tệp và/hoặc thư mục" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "Đã di chuyển tệp và/hoặc thư mục đã chọn" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "Đã thành công đổi tên %(count)d tệp." + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "Đổi tên tệp" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" +"Đã thành công sao chép %(count)d tệp và/hoặc thư mục tới thư mục " +"'%(destination)s'." + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "Sao chép tệp và/hoặc thư mục" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "Sao chép tệp và/hoặc thư mục đã chọn" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "Đã thành công thay đổi kích thước %(count)d ảnh." + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "Thay đổi kích thước ảnh" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "Thay dổi kích thước ảnh đã chọn" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "Hậu tố sẽ được nối vào tên của tệp đã sao chép." + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" +"Hậu tố phải là một phần tên tệp hợp lệ, đơn giản và chữ thường, như " +"\"%(valid)s\"." + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "Không biết định dạng đổi tên của khóa giá trị \"%(key)s\"." + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "Định dạng đổi tên không hợp lệ: %(error)s." + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "tùy chọn thumbnail" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "Độ rộng" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "Độ cao" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "Xén" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "cao cấp" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "Tùy chọn thumbnail hoặc tham số thay đổi kích thước phải được chọn." + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "Vị trí chủ đề" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "Vị trí của chủ đề chính của của quang cảnh. Định dạng: \"x,y\"." + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "Định dạng vị trí chủ đề không hợp lệ." + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "Vị trí chủ đề ở bên ngoài hình ảnh." + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "Đầu vào của bạn: \"{subject_location}\"." + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "Thư mục với tên này đã tồn tại." + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "Filer" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "Thư viện phương tiện" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "văn bản thay thế mặc định" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "đầu đề mặc định" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "vị trí chủ đề" + +#: models/abstract.py:91 +msgid "image" +msgstr "hình ảnh" + +#: models/abstract.py:92 +msgid "images" +msgstr "những hình ảnh" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "người dùng" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "những tệp" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "bảng tạm" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "những bảng tạm" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "tệp" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "item bảng tạm" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "items bảng tạm" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "thư mục" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "kích thước tệp" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "sha1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "có tất cả dữ liệu ủy thác" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "tên tệp gốc" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "tên" + +#: models/filemodels.py:116 +msgid "description" +msgstr "mô tả" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "người sở hữu" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "đã tải lên tại" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "đã chỉnh sửa tại" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "Quyền bị vô hiệu hóa" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" +"Vô hiệu hóa bất kỳ quyền kiểm tra cho tệp này. Tệp sẽ truy cập được bởi bất " +"kỳ ai." + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "đã tạo tại" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "Thư mục" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "Những thư mục" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "tất cả đồ" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "chỉ đồ này" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "đồ này và tất cả các con" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "cho phép" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "không cho phép" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "kiểu" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "nhóm" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "tất cả mọi người" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "có thể đọc" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "có thể tùy chỉnh" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "có thể thêm con" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "quyền thư mục" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "những quyền thư mục" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "ngày nắm giữ" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "tác giả" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "phải luôn công khai tài khoản tác giả" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "phải luôn công khai bản quyền" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "độ rộng bằng pixel" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "độ cao bằng pixel" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "những tùy chọn thumbnail" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "Những tải lên chưa sắp xếp" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "những tệp với metadata bị mất" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "gốc" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "Chạy hành dộng đã chọn" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "Đi" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "Bấn ở đây để chọn những đối tượng xuyên suốt tất cả các trang" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "Chọn tất cả %(total_count)s tệp và/hoặc thư mục" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "Xóa chọn" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "Trở lại trang chủ người quản trị" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "Trang chủ" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "Trở lại ứng dụng Filer" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "Trở lại thư mục gốc" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "Trở lại '%(folder_name)s' thư mục" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "Lặp" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" +"Xóa tệp và/hoặc thưc mục đã chọn sẽ dẫn đến xóa đối tượng liên quan, nhưng " +"tài khoản của bạn không có quyền xóa những loại của các đối tượng:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" +"Xóa tệp và/hoặc thư mục đã chọn sẽ yêu cầu xóa những đối tượng liên quan " +"được bảo vệ sau:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" +"Bạn có chắc muốn xóa tệp và/hoặc thư mục đã chọn? Tất cả những đối tượng và " +"những thứ liên quan đến chúng sẽ bị xóa:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "Không, đưa tôi quay lại" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "Có, Tôi chắc chắn" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "Lịch sử" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "Xem trong trang" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "Quay lại" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "trang chủ người quản trị" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "Biểu tượng thư mục" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" +"Tài khoản của bạn không có quyền để sao chép tất cả tệp và thư mục được chọn." + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "Đưa tôi quay lại" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "Không có thư mục đích" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "Không có tệp và/hoặc thư mục để sao chép." + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Những tệp và thư mục sau sẽ được sao chép tới một thư mục đích (giữ cấu trúc " +"cây thư mục):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "Thư mục đích:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "Sao chép" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "Không cho phép sao chép tệp tới cùng thư mục" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" +"Tài khoản của bạn không có quyền để thay đổi kích thước của tất cả hình ảnh " +"đã chọn." + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "Không có hình ảnh để thay dổi kích thước" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "Hình ảnh dưới đay sẽ bị thay đổi kích thước:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" +"Chọn một tùy chọn của thumbnail đang tồn tại hoặc nhập tham số thay đổi kích " +"thước:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" +"Cảnh bảo: Hình ảnh sẽ bị thay đổi tại chỗ và ảnh gốc sẽ bị mất. Có thể tạo " +"một sao chép của chúng để giữ lại hình ảnh gốc." + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "Thay đổi kích thước" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" +"Tài khoản của bạn không có quyền để di chuyển tất cả các tệp và thư mục đã " +"chọn." + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "Không có tệp và/hoặc thư mục để di chuyển." + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" +"Tệp và thư mục dưới đây sẽ được chuyển tới thư mục đích (giữ nguyên cấu trúc " +"cây thư mục):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "Di chuyển" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "Không cho phép di chuyển tệp vào cùng thư mục" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "Tài khoản của bạn không có quyền để đổi tên tất cả các tệp đã chọn." + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "Không có tệp để đổi tên." + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" +"Tệp dưới đây sẽ bị đổi tên (chúng vẫn ở trong thư mục của chúng và giữ tên " +"gốc, chỉ tên hiển thị sẽ bị thay đổi):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "Đổi tên" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "Trở lại thư mục cha" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "Thay đổi thông tin chi tiết thư mục hiện tại" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "Thay đổi" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "Bấm vào đây để chạy tìm kiếm cho đoạn văn đã nhập" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "Tìm kiếm" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "Đóng" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "Giới hạn" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "Chọn để giới hạn tìm kiếm cho thư mục hiện tại" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "Giới hạn tìm kiếm cho thư mục hiện tại" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "Xóa" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "Thêm một thư mục mới" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "Thư mục mới" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "Tải tệp lên" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "Bạn đầu tiên phải chọn một thư mục" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "Tên" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "Người sở hữu" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "Kích thước" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "Hành động" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "Thay đổi thông tin chi tiết thư mục '%(item_label)s' " + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s thư mục" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s tệp" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "Thay dổi thông tin chi tiết thư mục" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "Xóa thư mục" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "Chọn tệp này" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "Thay đổi thông tin chi tiết '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "Quyền" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "đã vô hiệu hóa" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "đã kích hoạt" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, fuzzy +#| msgid "Move selected files to clipboard" +msgid "URL copied to clipboard" +msgstr "Di chuyển tệp đã chọn vào bảng tạm" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "Url hợp chuẩn '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "Tải '%(item_label)s'" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "Xóa tệp" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "Thả tệp ở đây hoặc sử dụng nút \"Tải tệp lên\"" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "Thả tệp của bạn để tải lên:" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "Tải lên" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "hủy bỏ" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "Tải lên thành công!" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "Tải lên đã bị hủy!" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "trước đó" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "Trang %(number)s trên %(num_pages)s." + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "tiếp theo" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "Chọn tất cả %(total_count)s" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "Thêm mới" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Trang quản trị Django" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "Hãy sửa lỗi dưới đây." + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "Lưu" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "Bảng tạm" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "Dán những thứ ở đây" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "Di chuyển tất cả tệp bảng tạm tới" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "Làm rỗng bảng tạm" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "bảng tạm rỗng" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "tải lên lỗi" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "Kiểu" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "Kích thước tệp" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "Đã chỉnh sửa" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "Đã tạo" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "tìm thấy" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "và" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "hủy tìm kiếm" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "Xóa" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "hoặc thả tệp của bạn ở đây" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "không có tệp được chọn" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "Tìm kiếm" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "Chọn tệp" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/zh-Hans/LC_MESSAGES/django.mo b/filer/locale/zh-Hans/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..3ca7065160c39756f1ba99ddfe104f9fba7780fd GIT binary patch literal 15264 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 literal 0 HcmV?d00001 diff --git a/filer/locale/zh-Hans/LC_MESSAGES/django.po b/filer/locale/zh-Hans/LC_MESSAGES/django.po new file mode 100644 index 000000000..20e70e4d0 --- /dev/null +++ b/filer/locale/zh-Hans/LC_MESSAGES/django.po @@ -0,0 +1,1208 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +# Aosp T, 2016-2017 +# node uuz , 2019 +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-20 10:11+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: node uuz , 2019\n" +"Language-Team: Chinese Simplified (http://app.transifex.com/divio/django-filer/language/zh-Hans/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh-Hans\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:16 +#| msgid "" +#| "ccount doesn't have permissions to rename all of the selected files." +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:17 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:19 +msgid "" +"Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:49 +msgid "Advanced" +msgstr "高级" + +#: admin/fileadmin.py:164 +msgid "canonical URL" +msgstr "权威URL" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "要对执行此操作,必须选择项目。没有项目被更改。" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "选择了 %(total_count)s 个" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "%(folder_name)s文件夹列表" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "选择了 %(cnt)s 中的 0 个" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "没有选择任何动作。" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "成功将 %(count)d 个文件移动到剪贴板。" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "移动所选文件到剪贴板" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "成功禁用了权限设置(%(count)d 个文件)。" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "成功启用了权限设置(%(count)d 个文件)。" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "对于所选文件,启用权限设置" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "对于所选文件,禁用权限设置" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "成功删除了 %(count)d 个文件或目录" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "目录或文件删除失败" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "确定吗?" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "删除文件或目录" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "删除所选的文件或目录" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "所选的位置已存在名为 %s 的目录" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "成功移动 %(count)d 个文件或目录到 '%(destination)s'。" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "移动目录或文件" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "移动所选的目录或文件" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "成功重命名 %(count)d 个文件。" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "重命名文件" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "成功将 %(count)d 个文件或目录复制到 '%(destination)s'。" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "复制文件或目录" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "复制所选的文件或目录" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "成功缩放 %(count)d 个图片。" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "缩放图片" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "缩放所选的图片" + +#: admin/forms.py:25 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "所复制文件的文件名将会加上后缀。" + +#: admin/forms.py:32 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "后缀应该类似 \"%(valid)s\",是简单、小写的部分文件名称" + +#: admin/forms.py:53 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "未知重命名格式: \"%(key)s\"." + +#: admin/forms.py:55 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "无效的重命名格式:%(error)s 。" + +#: admin/forms.py:69 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "缩略图选项" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "宽" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "高" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "裁剪" + +#: admin/forms.py:76 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "修改分辨率" + +#: admin/forms.py:80 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "必须选择缩略图选项或缩放参数。" + +#: admin/imageadmin.py:18 admin/imageadmin.py:105 +msgid "Subject location" +msgstr "主题位置" + +#: admin/imageadmin.py:19 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "场景中的主题位置。格式:“x,y”。" + +#: admin/imageadmin.py:57 +msgid "Invalid subject location format. " +msgstr "错误的主题位置格式" + +#: admin/imageadmin.py:65 +msgid "Subject location is outside of the image. " +msgstr "主题位置超出了图片范围" + +#: admin/imageadmin.py:74 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "你输入的:\"{subject_location}\"。" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "这个名称的目录已经存在。" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "文件管理器" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "媒体库" + +#: models/abstract.py:49 +msgid "default alt text" +msgstr "默认提示文本" + +#: models/abstract.py:56 +msgid "default caption" +msgstr "默认标题" + +#: models/abstract.py:63 +msgid "subject location" +msgstr "主题位置" + +#: models/abstract.py:78 +msgid "image" +msgstr "图片" + +#: models/abstract.py:79 +msgid "images" +msgstr "图片" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "用户" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "文件" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "剪贴板" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "剪贴板" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "文件" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "剪贴板对象" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "剪贴板对象" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "目录" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "文件大小" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "SHA1" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "存在强制性数据" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "原始文件名" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "名称" + +#: models/filemodels.py:116 +msgid "description" +msgstr "描述" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "所有者" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "上传于" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "修改于" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "已禁用权限设置" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "对此文件禁用所有权限设置。此文件将可以被任何人公开访问。" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "创建于" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "目录" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "目录" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "所有项目" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "仅此项目" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "此项目和所有子项目" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "允许" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "拒绝" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "类型" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "组" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "所有人" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "可读" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "可编辑" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "可增加子项目" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "目录权限" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "目录权限" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +#| msgid "Folders" +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +#| msgid "everybody" +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +#| msgid "can add children" +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "日期令牌" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "作者" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "必须发布作者信息" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "必须发布版权" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "像素宽度" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "像素高度" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "缩略图选项" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:167 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "未分类的上传" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "确实元数据的文件" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "根目录" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +#| msgid "thumbnail option" +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "运行所选的动作" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "开始" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:232 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "选择所有页面的对象" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "选择 %(total_count)s 个文件或目录" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:234 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "清空选择" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "回到管理首页" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "首页" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "回到文件管理器首页" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "回到根目录" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "回到 '%(folder_name)s' 目录" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "重复" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "删除所选的文件或目录会将相关的对象同时删除,但是你的账号没有删除下面这些类型对象的权限:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "删除所选的文件或目录会将询问是否删除以下保护对象:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "确认删除所选的文件或目录吗?以下所有相关的对象都会删除:" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "不,返回" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "是的,我确定" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "历史" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "查看站点" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "后退到" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "管理首页" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "目录图标" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files " +"and/or folders." +msgstr "你的账户没有权限复制所有所选的目录或文件。" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "返回" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "目标目录无效" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "没有文件或目录可以复制" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "以下的文件将复制到目标目录(包含它们的树结构):" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "目标目录:" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "复制" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "不允许将文件复制到相同目录" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "你的账号没有权限缩放所有所选的图片。" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "没有图片可缩放。" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "以下图片将被缩放:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "选择一个缩略图选项或输入缩放参数:" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "警告:图片将被缩放,并且源文件将被覆盖。你应该先将它们做个备份。" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "缩放" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files " +"and/or folders." +msgstr "你的账号没有移动所有所选文件或目录的权限。" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "没有文件或目录可移动。" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "以下的文件将移动到目标目录(包含它们的树结构):" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "移动" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "不允许将文件移动到相同目录。" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "你的账号没有重命名所有所选文件的权限。" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "没有文件可重命名。" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "以下文件将被重命名(源文件不变,只是显示名称被修改而已):" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "重命名" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "回到父目录" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "修改当前目录属性" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "修改" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "点击开始搜索" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "搜索" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "关闭" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "限定" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "将搜索限定在当前目录" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "将搜索限定在当前目录" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "删除" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "新增一个目录" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "新增目录" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "上传文件" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "必须先选择一个目录" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "名称" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:49 +msgid "Owner" +msgstr "所有者" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:33 +msgid "Size" +msgstr "大小" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "动作" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "修改 '%(item_label)s' 目录的属性" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "%(counter)s 个目录" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "%(counter)s 个文件" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "修改目录属性" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "删除目录" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "选择这个文件" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:151 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "修改 '%(item_label)s' 的属性" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "权限" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "禁用" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "激活" + +#: templates/admin/filer/folder/directory_table_list.html:144 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Canonical url '%(item_label)s'" +msgstr "权威URL %(item_label)s" + +#: templates/admin/filer/folder/directory_table_list.html:148 +#, python-format +#| msgid "Change '%(item_label)s' details" +msgid "Download '%(item_label)s'" +msgstr "下载 %(item_label)s" + +#: templates/admin/filer/folder/directory_table_list.html:152 +msgid "Remove file" +msgstr "删除文件" + +#: templates/admin/filer/folder/directory_table_list.html:160 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "拖放文件到这里或使用“上传文件”按钮" + +#: templates/admin/filer/folder/directory_table_list.html:175 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "拖放文件到:" + +#: templates/admin/filer/folder/directory_table_list.html:185 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "上传" + +#: templates/admin/filer/folder/directory_table_list.html:197 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "取消" + +#: templates/admin/filer/folder/directory_table_list.html:201 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "上传成功!" + +#: templates/admin/filer/folder/directory_table_list.html:205 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "取消上传!" + +#: templates/admin/filer/folder/directory_table_list.html:212 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "上一个" + +#: templates/admin/filer/folder/directory_table_list.html:217 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "第 %(number)s 页,共 %(num_pages)s 页" + +#: templates/admin/filer/folder/directory_table_list.html:222 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "下一个" + +#: templates/admin/filer/folder/directory_table_list.html:232 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "选择了 %(total_count)s 个" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +#| msgid "Select this file" +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +#| msgid "Filer" +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "新增" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "Django 网站管理" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "请更正下面的错误。" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "保存" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "剪贴板" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "粘贴所有对象到这里" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "移动所有剪贴板文件到" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "清空剪贴板" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "剪贴板是空的" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "上传失败" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:15 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:20 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:107 +#| msgid "file missing" +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:29 +msgid "Type" +msgstr "类型" + +#: templates/admin/filer/tools/detail_info.html:37 +msgid "File-size" +msgstr "文件大小" + +#: templates/admin/filer/tools/detail_info.html:41 +msgid "Modified" +msgstr "修改时间" + +#: templates/admin/filer/tools/detail_info.html:45 +msgid "Created" +msgstr "创建时间" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "已找到" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "与" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "取消搜索" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "清空" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "或在此放入你的文件" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "没选择文件" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "查找" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "选择文件" + +#: templates/admin/filer/widgets/admin_folder.html:16 +#| msgid "Choose File" +msgid "Choose Folder" +msgstr "" + +#: validation.py:19 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:22 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:33 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:71 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/zh/LC_MESSAGES/django.mo b/filer/locale/zh/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..1f47492f0d020fb800ca7dad4f151a6154d6c533 GIT binary patch literal 431 zcmYL^%}N6?6oo6gnx$(OS-4O%%}k|OQ!8qJpkT3-(S4k`lS#=WA<2~5_we<67848Y zfsZ8Qo^$X0JwN;D1f2vf0+)f)z-=IE5NN~aLpWp2K})OGPa=pd!o2u=2*<0_6$VsgwNyP8}d5-Hl%$zr~k9v9BKX)@Nzg9@{Lo3M\n" +"Language-Team: Chinese (http://app.transifex.com/divio/django-filer/language/" +"zh/)\n" +"Language: zh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/zh_CN/LC_MESSAGES/django.mo b/filer/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0da366bff1c38dff1833cf1b4ba54bf870ac3fc0 GIT binary patch literal 445 zcmYLEO-}+b5XIY}{ucq$K?v|8x(-wkW{SE#-e~T?7 z_>z}S+j(#1{hpruG(3(x&pgjPk3BCv1A3m{{`1D4q33|P(M!x6ndamTjTKrk$d_D| z8YV)bi56IEq=gk~ss z3!0U4HKUZ*b=w7ZQQ$TxX)ZQG(|rU|ga|ZD2wwE7dLKU1*1?>??j@Q{XXF3)Njr{) zS~*mH^UvBxbGUW1mRzVlWED3S-QYEyklue^*r7l}#wydfP$h%jhj7tct__!DqRq-O RQ1$L=2T33H\n" +"Language-Team: Chinese (China) (http://app.transifex.com/divio/django-filer/" +"language/zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/locale/zh_TW/LC_MESSAGES/django.mo b/filer/locale/zh_TW/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..fdfa8142790fc8f4aa518251c3ad4542bfaad6e0 GIT binary patch literal 446 zcmYLEO-}+b6vXIhkDfjB-~pngyBH!CF)AMki9|wHJ({}vcDJP4Hf=%l>|gNj`CDuu zfk`HPZQsm$^LKjk+weH@Jo7yFJodcw4Cs0O_|F@EhMqmibH$nsL$2RDI`lvRttea0;xZXjpLx7Em)~ z{FBKRYF5r^N(j@s?SefoU=ySy=WDLWE(0z?1`V#b0SyrdJ{JM@Je3NUyqGnI2$Qq=q4E}Dy#VFFK- UsVzlPZ?ATc^wF*y#Qmu84~LnCj{pDw literal 0 HcmV?d00001 diff --git a/filer/locale/zh_TW/LC_MESSAGES/django.po b/filer/locale/zh_TW/LC_MESSAGES/django.po new file mode 100644 index 000000000..a14b91d38 --- /dev/null +++ b/filer/locale/zh_TW/LC_MESSAGES/django.po @@ -0,0 +1,1219 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Translators: +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: django Filer\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-30 18:10+0200\n" +"PO-Revision-Date: 2012-07-13 15:50+0000\n" +"Last-Translator: Angelo Dini \n" +"Language-Team: Chinese (Taiwan) (http://app.transifex.com/divio/django-filer/" +"language/zh_TW/)\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: admin/clipboardadmin.py:17 +msgid "You do not have permission to upload files." +msgstr "" + +#: admin/clipboardadmin.py:18 +msgid "Can't find folder to upload. Please refresh and try again" +msgstr "" + +#: admin/clipboardadmin.py:20 +msgid "Can't use this folder, Permission Denied. Please select another folder." +msgstr "" + +#: admin/fileadmin.py:73 +msgid "Advanced" +msgstr "" + +#: admin/fileadmin.py:188 +msgid "canonical URL" +msgstr "" + +#: admin/folderadmin.py:411 admin/folderadmin.py:582 +msgid "" +"Items must be selected in order to perform actions on them. No items have " +"been changed." +msgstr "" + +#: admin/folderadmin.py:434 +#, python-format +msgid "%(total_count)s selected" +msgid_plural "All %(total_count)s selected" +msgstr[0] "" + +#: admin/folderadmin.py:460 +#, python-format +msgid "Directory listing for %(folder_name)s" +msgstr "" + +#: admin/folderadmin.py:475 +#, python-format +msgid "0 of %(cnt)s selected" +msgstr "" + +#: admin/folderadmin.py:612 +msgid "No action selected." +msgstr "" + +#: admin/folderadmin.py:664 +#, python-format +msgid "Successfully moved %(count)d files to clipboard." +msgstr "" + +#: admin/folderadmin.py:669 +msgid "Move selected files to clipboard" +msgstr "" + +#: admin/folderadmin.py:709 +#, python-format +msgid "Successfully disabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:711 +#, python-format +msgid "Successfully enabled permissions for %(count)d files." +msgstr "" + +#: admin/folderadmin.py:719 +msgid "Enable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:725 +msgid "Disable permissions for selected files" +msgstr "" + +#: admin/folderadmin.py:789 +#, python-format +msgid "Successfully deleted %(count)d files and/or folders." +msgstr "" + +#: admin/folderadmin.py:794 +msgid "Cannot delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:796 +msgid "Are you sure?" +msgstr "" + +#: admin/folderadmin.py:802 +msgid "Delete files and/or folders" +msgstr "" + +#: admin/folderadmin.py:823 +msgid "Delete selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:930 +#, python-format +msgid "Folders with names %s already exist at the selected destination" +msgstr "" + +#: admin/folderadmin.py:934 +#, python-format +msgid "" +"Successfully moved %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:942 admin/folderadmin.py:944 +msgid "Move files and/or folders" +msgstr "" + +#: admin/folderadmin.py:959 +msgid "Move selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1016 +#, python-format +msgid "Successfully renamed %(count)d files." +msgstr "" + +#: admin/folderadmin.py:1025 admin/folderadmin.py:1027 +#: admin/folderadmin.py:1042 +msgid "Rename files" +msgstr "" + +#: admin/folderadmin.py:1137 +#, python-format +msgid "" +"Successfully copied %(count)d files and/or folders to folder " +"'%(destination)s'." +msgstr "" + +#: admin/folderadmin.py:1155 admin/folderadmin.py:1157 +msgid "Copy files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1174 +msgid "Copy selected files and/or folders" +msgstr "" + +#: admin/folderadmin.py:1279 +#, python-format +msgid "Successfully resized %(count)d images." +msgstr "" + +#: admin/folderadmin.py:1286 admin/folderadmin.py:1288 +msgid "Resize images" +msgstr "" + +#: admin/folderadmin.py:1303 +msgid "Resize selected images" +msgstr "" + +#: admin/forms.py:24 +msgid "Suffix which will be appended to filenames of copied files." +msgstr "" + +#: admin/forms.py:31 +#, python-format +msgid "" +"Suffix should be a valid, simple and lowercase filename part, like " +"\"%(valid)s\"." +msgstr "" + +#: admin/forms.py:52 +#, python-format +msgid "Unknown rename format value key \"%(key)s\"." +msgstr "" + +#: admin/forms.py:54 +#, python-format +msgid "Invalid rename format: %(error)s." +msgstr "" + +#: admin/forms.py:68 models/thumbnailoptionmodels.py:37 +msgid "thumbnail option" +msgstr "" + +#: admin/forms.py:72 models/thumbnailoptionmodels.py:15 +msgid "width" +msgstr "" + +#: admin/forms.py:73 models/thumbnailoptionmodels.py:20 +msgid "height" +msgstr "" + +#: admin/forms.py:74 models/thumbnailoptionmodels.py:25 +msgid "crop" +msgstr "" + +#: admin/forms.py:75 models/thumbnailoptionmodels.py:30 +msgid "upscale" +msgstr "" + +#: admin/forms.py:79 +msgid "Thumbnail option or resize parameters must be choosen." +msgstr "" + +#: admin/imageadmin.py:20 admin/imageadmin.py:112 +msgid "Subject location" +msgstr "" + +#: admin/imageadmin.py:21 +msgid "Location of the main subject of the scene. Format: \"x,y\"." +msgstr "" + +#: admin/imageadmin.py:59 +msgid "Invalid subject location format. " +msgstr "" + +#: admin/imageadmin.py:67 +msgid "Subject location is outside of the image. " +msgstr "" + +#: admin/imageadmin.py:76 +#, python-brace-format +msgid "Your input: \"{subject_location}\". " +msgstr "" + +#: admin/permissionadmin.py:10 models/foldermodels.py:380 +msgid "Who" +msgstr "" + +#: admin/permissionadmin.py:11 models/foldermodels.py:401 +msgid "What" +msgstr "" + +#: admin/views.py:55 +msgid "Folder with this name already exists." +msgstr "" + +#: apps.py:11 templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/directory_listing.html:33 +msgid "Filer" +msgstr "" + +#: contrib/django_cms/cms_toolbars.py:44 +msgid "Media library" +msgstr "" + +#: models/abstract.py:62 +msgid "default alt text" +msgstr "" + +#: models/abstract.py:69 +msgid "default caption" +msgstr "" + +#: models/abstract.py:76 +msgid "subject location" +msgstr "" + +#: models/abstract.py:91 +msgid "image" +msgstr "" + +#: models/abstract.py:92 +msgid "images" +msgstr "" + +#: models/abstract.py:148 +#, python-format +msgid "" +"Image format not recognized or image size exceeds limit of %(max_pixels)d " +"million pixels by a factor of two or more. Before uploading again, check " +"file format or resize image to %(width)d x %(height)d resolution or lower." +msgstr "" + +#: models/abstract.py:156 +#, python-format +msgid "" +"Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " +"million pixels. Before uploading again, resize image to %(width)d x " +"%(height)d resolution or lower." +msgstr "" + +#: models/clipboardmodels.py:11 models/foldermodels.py:289 +msgid "user" +msgstr "" + +#: models/clipboardmodels.py:17 models/filemodels.py:157 +msgid "files" +msgstr "" + +#: models/clipboardmodels.py:24 models/clipboardmodels.py:50 +msgid "clipboard" +msgstr "" + +#: models/clipboardmodels.py:25 +msgid "clipboards" +msgstr "" + +#: models/clipboardmodels.py:44 models/filemodels.py:74 +#: models/filemodels.py:156 +msgid "file" +msgstr "" + +#: models/clipboardmodels.py:56 +msgid "clipboard item" +msgstr "" + +#: models/clipboardmodels.py:57 +msgid "clipboard items" +msgstr "" + +#: models/filemodels.py:66 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "folder" +msgstr "" + +#: models/filemodels.py:81 +msgid "file size" +msgstr "" + +#: models/filemodels.py:87 +msgid "sha1" +msgstr "" + +#: models/filemodels.py:94 +msgid "has all mandatory data" +msgstr "" + +#: models/filemodels.py:100 +msgid "original filename" +msgstr "" + +#: models/filemodels.py:110 models/foldermodels.py:102 +#: models/thumbnailoptionmodels.py:10 +msgid "name" +msgstr "" + +#: models/filemodels.py:116 +msgid "description" +msgstr "" + +#: models/filemodels.py:125 models/foldermodels.py:108 +msgid "owner" +msgstr "" + +#: models/filemodels.py:129 models/foldermodels.py:116 +msgid "uploaded at" +msgstr "" + +#: models/filemodels.py:134 models/foldermodels.py:126 +msgid "modified at" +msgstr "" + +#: models/filemodels.py:140 +msgid "Permissions disabled" +msgstr "" + +#: models/filemodels.py:141 +msgid "" +"Disable any permission checking for this file. File will be publicly " +"accessible to anyone." +msgstr "" + +#: models/foldermodels.py:94 +msgid "parent" +msgstr "" + +#: models/foldermodels.py:121 +msgid "created at" +msgstr "" + +#: models/foldermodels.py:136 templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Folder" +msgstr "" + +#: models/foldermodels.py:137 +#: templates/admin/filer/folder/directory_thumbnail_list.html:12 +msgid "Folders" +msgstr "" + +#: models/foldermodels.py:260 +msgid "all items" +msgstr "" + +#: models/foldermodels.py:261 +msgid "this item only" +msgstr "" + +#: models/foldermodels.py:262 +msgid "this item and all children" +msgstr "" + +#: models/foldermodels.py:266 +msgid "inherit" +msgstr "" + +#: models/foldermodels.py:267 +msgid "allow" +msgstr "" + +#: models/foldermodels.py:268 +msgid "deny" +msgstr "" + +#: models/foldermodels.py:280 +msgid "type" +msgstr "" + +#: models/foldermodels.py:297 +msgid "group" +msgstr "" + +#: models/foldermodels.py:304 +msgid "everybody" +msgstr "" + +#: models/foldermodels.py:309 +msgid "can read" +msgstr "" + +#: models/foldermodels.py:317 +msgid "can edit" +msgstr "" + +#: models/foldermodels.py:325 +msgid "can add children" +msgstr "" + +#: models/foldermodels.py:333 +msgid "folder permission" +msgstr "" + +#: models/foldermodels.py:334 +msgid "folder permissions" +msgstr "" + +#: models/foldermodels.py:348 +msgid "Folder cannot be selected with type \"all items\"." +msgstr "" + +#: models/foldermodels.py:350 +msgid "Folder has to be selected when type is not \"all items\"." +msgstr "" + +#: models/foldermodels.py:352 +msgid "User or group cannot be selected together with \"everybody\"." +msgstr "" + +#: models/foldermodels.py:354 +msgid "At least one of user, group, or \"everybody\" has to be selected." +msgstr "" + +#: models/foldermodels.py:360 +msgid "All Folders" +msgstr "" + +#: models/foldermodels.py:362 +msgid "Logical Path" +msgstr "" + +#: models/foldermodels.py:371 +#, python-brace-format +msgid "User: {user}" +msgstr "" + +#: models/foldermodels.py:373 +#, python-brace-format +msgid "Group: {group}" +msgstr "" + +#: models/foldermodels.py:375 +msgid "Everybody" +msgstr "" + +#: models/foldermodels.py:388 templates/admin/filer/widgets/admin_file.html:45 +msgid "Edit" +msgstr "" + +#: models/foldermodels.py:389 +msgid "Read" +msgstr "" + +#: models/foldermodels.py:390 +msgid "Add children" +msgstr "" + +#: models/imagemodels.py:18 +msgid "date taken" +msgstr "" + +#: models/imagemodels.py:25 +msgid "author" +msgstr "" + +#: models/imagemodels.py:32 +msgid "must always publish author credit" +msgstr "" + +#: models/imagemodels.py:37 +msgid "must always publish copyright" +msgstr "" + +#: models/thumbnailoptionmodels.py:16 +msgid "width in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:21 +msgid "height in pixel." +msgstr "" + +#: models/thumbnailoptionmodels.py:38 +msgid "thumbnail options" +msgstr "" + +#: models/virtualitems.py:46 +#: templates/admin/filer/folder/directory_table_list.html:4 +#: templates/admin/filer/folder/directory_table_list.html:170 +#: templates/admin/filer/folder/directory_thumbnail_list.html:5 +#: templates/admin/filer/folder/directory_thumbnail_list.html:146 +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Unsorted Uploads" +msgstr "" + +#: models/virtualitems.py:73 +msgid "files with missing metadata" +msgstr "" + +#: models/virtualitems.py:87 templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "root" +msgstr "" + +#: settings.py:273 +msgid "Show table view" +msgstr "" + +#: settings.py:278 +msgid "Show thumbnail view" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Run the selected action" +msgstr "" + +#: templates/admin/filer/actions.html:5 +msgid "Go" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +msgid "Click here to select the objects across all pages" +msgstr "" + +#: templates/admin/filer/actions.html:14 +#, python-format +msgid "Select all %(total_count)s files and/or folders" +msgstr "" + +#: templates/admin/filer/actions.html:16 +#: templates/admin/filer/folder/directory_table_list.html:237 +#: templates/admin/filer/folder/directory_thumbnail_list.html:212 +msgid "Clear selection" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/directory_listing.html:28 +msgid "Go back to admin homepage" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:4 +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/directory_listing.html:29 +msgid "Home" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:5 +#: templates/admin/filer/folder/directory_listing.html:32 +msgid "Go back to Filer app" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:6 +#: templates/admin/filer/folder/directory_listing.html:35 +msgid "Go back to root folder" +msgstr "" + +#: templates/admin/filer/breadcrumbs.html:8 +#: templates/admin/filer/breadcrumbs.html:18 +#: templates/admin/filer/folder/change_form.html:10 +#: templates/admin/filer/folder/directory_listing.html:39 +#: templates/admin/filer/folder/directory_listing.html:47 +#, python-format +msgid "Go back to '%(folder_name)s' folder" +msgstr "" + +#: templates/admin/filer/change_form.html:26 +msgid "Duplicates" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:11 +msgid "" +"Deleting the selected files and/or folders would result in deleting related " +"objects, but your account doesn't have permission to delete the following " +"types of objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:19 +msgid "" +"Deleting the selected files and/or folders would require deleting the " +"following protected related objects:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:27 +msgid "" +"Are you sure you want to delete the selected files and/or folders? All of " +"the following objects and their related items will be deleted:" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:46 +#: templates/admin/filer/folder/choose_copy_destination.html:64 +#: templates/admin/filer/folder/choose_move_destination.html:72 +msgid "No, take me back" +msgstr "" + +#: templates/admin/filer/delete_selected_files_confirmation.html:47 +msgid "Yes, I'm sure" +msgstr "" + +#: templates/admin/filer/file/change_form.html:35 +#: templates/admin/filer/folder/change_form.html:21 +#: templates/admin/filer/image/change_form.html:35 +msgid "History" +msgstr "" + +#: templates/admin/filer/file/change_form.html:37 +#: templates/admin/filer/folder/change_form.html:23 +#: templates/admin/filer/image/change_form.html:37 +msgid "View on site" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +#: templates/admin/filer/folder/change_form.html:7 +#: templates/admin/filer/folder/change_form.html:8 +#: templates/admin/filer/folder/directory_listing.html:102 +msgid "Go back to" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:6 +msgid "admin homepage" +msgstr "" + +#: templates/admin/filer/folder/change_form.html:37 +#: templates/admin/filer/folder/directory_listing.html:95 +#: templates/admin/filer/folder/directory_listing.html:103 +#: templates/admin/filer/folder/directory_table_list.html:29 +#: templates/admin/filer/folder/directory_table_list.html:59 +#: templates/admin/filer/folder/directory_table_list.html:181 +#: templates/admin/filer/folder/directory_thumbnail_list.html:27 +#: templates/admin/filer/folder/directory_thumbnail_list.html:61 +#: templates/admin/filer/folder/directory_thumbnail_list.html:156 +msgid "Folder Icon" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:23 +msgid "" +"Your account doesn't have permissions to copy all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:25 +#: templates/admin/filer/folder/choose_copy_destination.html:31 +#: templates/admin/filer/folder/choose_copy_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:37 +#: templates/admin/filer/folder/choose_move_destination.html:43 +#: templates/admin/filer/folder/choose_move_destination.html:49 +msgid "Take me back" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:29 +#: templates/admin/filer/folder/choose_move_destination.html:41 +msgid "There are no destination folders available." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:35 +msgid "There are no files and/or folders available to copy." +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:40 +msgid "" +"The following files and/or folders will be copied to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:54 +#: templates/admin/filer/folder/choose_move_destination.html:64 +msgid "Destination folder:" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:65 +#: templates/admin/filer/folder/choose_copy_destination.html:68 +#: templates/admin/filer/folder/directory_listing.html:178 +msgid "Copy" +msgstr "" + +#: templates/admin/filer/folder/choose_copy_destination.html:67 +msgid "It is not allowed to copy files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:15 +msgid "" +"Your account doesn't have permissions to resize all of the selected images." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:18 +msgid "There are no images available to resize." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:20 +msgid "The following images will be resized:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:32 +msgid "Choose an existing thumbnail option or enter resize parameters:" +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:36 +msgid "" +"Warning: Images will be resized in-place and originals will be lost. Maybe " +"first make a copy of them to retain the originals." +msgstr "" + +#: templates/admin/filer/folder/choose_images_resize_options.html:39 +msgid "Resize" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:35 +msgid "" +"Your account doesn't have permissions to move all of the selected files and/" +"or folders." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:47 +msgid "There are no files and/or folders available to move." +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:52 +msgid "" +"The following files and/or folders will be moved to a destination folder " +"(retaining their tree structure):" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:73 +#: templates/admin/filer/folder/choose_move_destination.html:76 +#: templates/admin/filer/folder/directory_listing.html:181 +msgid "Move" +msgstr "" + +#: templates/admin/filer/folder/choose_move_destination.html:75 +msgid "It is not allowed to move files into same folder" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:15 +msgid "" +"Your account doesn't have permissions to rename all of the selected files." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:18 +msgid "There are no files available to rename." +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:20 +msgid "" +"The following files will be renamed (they will stay in their folders and " +"keep original filename, only displayed filename will be changed):" +msgstr "" + +#: templates/admin/filer/folder/choose_rename_format.html:59 +msgid "Rename" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:94 +msgid "Go back to the parent folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change current folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:131 +msgid "Change" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:141 +msgid "Click here to run search for entered phrase" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:144 +msgid "Search" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:151 +msgid "Close" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:153 +msgid "Limit" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:158 +msgid "Check it to limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:159 +msgid "Limit the search to current folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:175 +msgid "Delete" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:203 +msgid "Adds a new Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:206 +msgid "New Folder" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:211 +#: templates/admin/filer/folder/directory_listing.html:218 +#: templates/admin/filer/folder/directory_listing.html:221 +#: templates/admin/filer/folder/directory_listing.html:228 +#: templates/admin/filer/folder/directory_listing.html:235 +msgid "Upload Files" +msgstr "" + +#: templates/admin/filer/folder/directory_listing.html:233 +msgid "You have to select a folder first" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:16 +msgid "Name" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:17 +#: templates/admin/filer/tools/detail_info.html:50 +msgid "Owner" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:18 +#: templates/admin/filer/tools/detail_info.html:34 +msgid "Size" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:19 +msgid "Action" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:28 +#: templates/admin/filer/folder/directory_table_list.html:35 +#: templates/admin/filer/folder/directory_table_list.html:58 +#: templates/admin/filer/folder/directory_table_list.html:65 +#: templates/admin/filer/folder/directory_thumbnail_list.html:26 +#: templates/admin/filer/folder/directory_thumbnail_list.html:32 +#: templates/admin/filer/folder/directory_thumbnail_list.html:60 +#: templates/admin/filer/folder/directory_thumbnail_list.html:66 +#, python-format +msgid "Change '%(item_label)s' folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:76 +#: templates/admin/filer/tools/search_form.html:5 +#, python-format +msgid "%(counter)s folder" +msgid_plural "%(counter)s folders" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:77 +#: templates/admin/filer/tools/search_form.html:6 +#, python-format +msgid "%(counter)s file" +msgid_plural "%(counter)s files" +msgstr[0] "" + +#: templates/admin/filer/folder/directory_table_list.html:83 +msgid "Change folder details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:84 +msgid "Remove folder" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:96 +#: templates/admin/filer/folder/directory_table_list.html:104 +#: templates/admin/filer/folder/directory_table_list.html:119 +#: templates/admin/filer/folder/directory_thumbnail_list.html:95 +#: templates/admin/filer/folder/directory_thumbnail_list.html:104 +#: templates/admin/filer/folder/directory_thumbnail_list.html:119 +msgid "Select this file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:107 +#: templates/admin/filer/folder/directory_table_list.html:122 +#: templates/admin/filer/folder/directory_table_list.html:154 +#: templates/admin/filer/folder/directory_thumbnail_list.html:107 +#: templates/admin/filer/folder/directory_thumbnail_list.html:122 +#, python-format +msgid "Change '%(item_label)s' details" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "Permissions" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "disabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:131 +#: templates/admin/filer/folder/directory_thumbnail_list.html:130 +msgid "enabled" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:144 +msgid "URL copied to clipboard" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:147 +#, python-format +msgid "Canonical url '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:151 +#, python-format +msgid "Download '%(item_label)s'" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:155 +msgid "Remove file" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:163 +#: templates/admin/filer/folder/directory_thumbnail_list.html:138 +msgid "Drop files here or use the \"Upload Files\" button" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:178 +#: templates/admin/filer/folder/directory_thumbnail_list.html:153 +msgid "Drop your file to upload into:" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:188 +#: templates/admin/filer/folder/directory_thumbnail_list.html:163 +msgid "Upload" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:200 +#: templates/admin/filer/folder/directory_thumbnail_list.html:175 +msgid "cancel" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:204 +#: templates/admin/filer/folder/directory_thumbnail_list.html:179 +msgid "Upload success!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:208 +#: templates/admin/filer/folder/directory_thumbnail_list.html:183 +msgid "Upload canceled!" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:215 +#: templates/admin/filer/folder/directory_thumbnail_list.html:190 +msgid "previous" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:220 +#: templates/admin/filer/folder/directory_thumbnail_list.html:195 +#, python-format +msgid "Page %(number)s of %(num_pages)s." +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:225 +#: templates/admin/filer/folder/directory_thumbnail_list.html:200 +msgid "next" +msgstr "" + +#: templates/admin/filer/folder/directory_table_list.html:235 +#: templates/admin/filer/folder/directory_thumbnail_list.html:210 +#, python-format +msgid "Select all %(total_count)s" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:15 +#: templates/admin/filer/folder/directory_thumbnail_list.html:80 +msgid "Select all" +msgstr "" + +#: templates/admin/filer/folder/directory_thumbnail_list.html:77 +msgid "Files" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +#: templates/admin/filer/folder/new_folder_form.html:7 +msgid "Add new" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:4 +msgid "Django site admin" +msgstr "" + +#: templates/admin/filer/folder/new_folder_form.html:15 +msgid "Please correct the error below." +msgid_plural "Please correct the errors below." +msgstr[0] "" + +#: templates/admin/filer/folder/new_folder_form.html:30 +msgid "Save" +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:9 +msgid "Your browser does not support audio." +msgstr "" + +#: templates/admin/filer/templatetags/file_icon.html:14 +msgid "Your browser does not support video." +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:9 +msgid "Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:21 +msgid "Paste all items here" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Move all clipboard files to" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:27 +msgid "Empty Clipboard" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard.html:50 +msgid "the clipboard is empty" +msgstr "" + +#: templates/admin/filer/tools/clipboard/clipboard_item_rows.html:16 +msgid "upload failed" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:11 +msgid "Download" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:16 +msgid "Expand" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:21 +#: templates/admin/filer/widgets/admin_file.html:32 +#: templatetags/filer_admin_tags.py:108 +msgid "File is missing" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:30 +msgid "Type" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:38 +msgid "File-size" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:42 +msgid "Modified" +msgstr "" + +#: templates/admin/filer/tools/detail_info.html:46 +msgid "Created" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "found" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:5 +msgid "and" +msgstr "" + +#: templates/admin/filer/tools/search_form.html:7 +msgid "cancel search" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:10 +#: templates/admin/filer/widgets/admin_file.html:39 +#: templates/admin/filer/widgets/admin_folder.html:18 +msgid "Clear" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:22 +msgid "or drop your file here" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:35 +msgid "no file selected" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:50 +#: templates/admin/filer/widgets/admin_folder.html:14 +msgid "Lookup" +msgstr "" + +#: templates/admin/filer/widgets/admin_file.html:51 +msgid "Choose File" +msgstr "" + +#: templates/admin/filer/widgets/admin_folder.html:16 +msgid "Choose Folder" +msgstr "" + +#: validation.py:20 +#, python-brace-format +msgid "File \"{file_name}\": Upload denied by site security policy" +msgstr "" + +#: validation.py:23 +#, python-brace-format +msgid "File \"{file_name}\": {file_type} upload denied by site security policy" +msgstr "" + +#: validation.py:34 +#, python-brace-format +msgid "File \"{file_name}\": HTML upload denied by site security policy" +msgstr "" + +#: validation.py:72 +#, python-brace-format +msgid "" +"File \"{file_name}\": Rejected due to potential cross site scripting " +"vulnerability" +msgstr "" + +#: validation.py:84 +#, python-brace-format +msgid "File \"{file_name}\": SVG file format not recognized" +msgstr "" + +#~ msgid "Resize parameters must be choosen." +#~ msgstr "Resize parameters must be choosen." + +#~ msgid "Choose resize parameters:" +#~ msgstr "Choose resize parameters:" + +#~ msgid "Open file" +#~ msgstr "Open file" + +#~ msgid "Full size preview" +#~ msgstr "Full size preview" + +#~ msgid "Add Description" +#~ msgstr "Add Description" + +#~ msgid "Author" +#~ msgstr "Author" + +#~ msgid "Add Alt-Text" +#~ msgstr "Add Alt-Text" + +#~ msgid "Add caption" +#~ msgstr "Add caption" + +#~ msgid "Add Tags" +#~ msgstr "Add Tags" + +#~ msgid "Change File" +#~ msgstr "Change File" + +#~ msgid "none selected" +#~ msgstr "none selected" + +#~ msgid "Add Folder" +#~ msgstr "Add Folder" + +#~ msgid "Subject Location" +#~ msgstr "Subject location" + +#~ msgid "" +#~ "\n" +#~ " %(counter)s file" +#~ msgid_plural "" +#~ "%(counter)s files\n" +#~ " " +#~ msgstr[0] "15c0f2d28d6dab1af1f6d94906beb627_pl_0" + +#~ msgid "Upload File" +#~ msgstr "Upload File" diff --git a/filer/static/filer/css/admin_filer.cms.icons.css b/filer/static/filer/css/admin_filer.cms.icons.css new file mode 100644 index 000000000..836885eba --- /dev/null +++ b/filer/static/filer/css/admin_filer.cms.icons.css @@ -0,0 +1 @@ +@font-face{font-family:"django-filer-iconfont";src:url("../fonts/django-filer-iconfont.eot?v=3.2.0");src:url("../fonts/django-filer-iconfont.eot?v=3.2.0#iefix") format("eot"),url("../fonts/django-filer-iconfont.woff2?v=3.2.0") format("woff2"),url("../fonts/django-filer-iconfont.woff?v=3.2.0") format("woff"),url("../fonts/django-filer-iconfont.ttf?v=3.2.0") format("truetype"),url("../fonts/django-filer-iconfont.svg?v=3.2.0#django-filer-iconfont") format("svg");font-weight:normal;font-style:normal}.filer-icon{display:inline-block;font-family:django-filer-iconfont;font-size:inherit;text-rendering:auto;line-height:1;transform:translate(0, 0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.filer-icon-arrow-down:before{content:"\E001"}.filer-icon-caret-down:before{content:"\E002"}.filer-icon-chevron-right:before{content:"\E003"}.filer-icon-download:before{content:"\E004"}.filer-icon-expand:before{content:"\E005"}.filer-icon-link:before{content:"\E006"}.filer-icon-move-to-folder:before{content:"\E007"}.filer-icon-picture:before{content:"\E008"}.filer-icon-remove-selection:before{content:"\E009"}.filer-icon-select:before{content:"\E00A"}.filer-icon-th-large:before{content:"\E00B"}.filer-icon-th-list:before{content:"\E00C"}.filer-icon-upload:before{content:"\E00D"} \ No newline at end of file diff --git a/filer/static/filer/css/admin_filer.css b/filer/static/filer/css/admin_filer.css new file mode 100644 index 000000000..a149b7ae1 --- /dev/null +++ b/filer/static/filer/css/admin_filer.css @@ -0,0 +1,3 @@ +/*! + * @copyright: https://github.com/divio/django-filer + */html,body{min-width:320px;height:100% !important}.text-left{text-align:left}.text-right{text-align:right}.clearfix:after{content:"";display:table;clear:both}.related-widget-wrapper{float:none !important}.related-lookup.hidden{display:none !important}.tiny{font-size:12px !important;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important}.nav-pages{position:relative;font-size:12px;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;padding-left:10px;padding-right:20px;padding-top:15px;padding-bottom:15px;box-sizing:border-box;background:var(--dca-white, var(--body-bg, #fff))}.nav-pages span{font-size:12px;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important}.nav-pages .actions{float:right}#id_upload_button:before{display:none}#content #content-main{margin-top:0}.filebrowser.cms-admin-sideframe #container .breadcrumbs+#content,.filebrowser.cms-admin-sideframe #container .breadcrumbs+.messagelist+#content{margin-left:0 !important;margin-right:0 !important}.filebrowser.cms-admin-sideframe #container .breadcrumbs{left:0 !important;padding-left:20px !important}.filebrowser #container{min-width:auto}.filebrowser #container #content{padding:0;box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.filebrowser #container .breadcrumbs+#content,.filebrowser #container .breadcrumbs+.messagelist+#content{margin-left:3% !important}.filebrowser h1.folder_header{position:relative;top:6px}.filebrowser h2{display:none}.filebrowser #content-main{background-color:var(--dca-white, var(--body-bg, #fff))}.filer-widget{width:100%}.field-file,.field-sha1{word-wrap:break-word;word-break:break-all}.well.img-preview{display:none;margin-top:0}.img-wrapper{width:180px;height:180px}.file-duplicates{clear:both;padding:20px 0 0}form .cancel-link{height:auto !important;line-height:inherit !important;padding:10px 15px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.hidden{display:none !important}.filer-info-bar{min-height:15px;margin:0 0 2px !important;padding:15px 20px;box-shadow:0 0 10px -2px rgba(0,0,0,.2);background-color:var(--dca-white, var(--body-bg, #fff))}.navigator .actions span.all,.navigator .actions span.clear,.navigator .actions span.question{font-size:13px;margin:0 .5em;display:none}#all-items-action-toggle{display:none !important}.image-info{position:relative;float:right;box-sizing:border-box;width:28%;margin-top:0;border:0;border-radius:3px;background:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.image-info .image-details,.image-info .actions-list{margin:0;padding:0}.image-info .image-details.image-details,.image-info .actions-list.image-details{margin:10px 0;padding:0 10px}.image-info .image-details li,.image-info .actions-list li{list-style-type:none}.image-info .image-details a,.image-info .actions-list a{cursor:pointer}.image-info.image-info-detail:before,.image-info.image-info-detail:after{content:" ";display:table}.image-info.image-info-detail:after{clear:both}.image-info.image-info-detail{position:static;float:none;width:100%;margin-bottom:20px;padding:25px;border-radius:0}.image-info.image-info-detail+#content-main .object-tools{margin-top:20px;margin-right:20px;background-color:rgba(0,0,0,0)}.image-info.image-info-detail+#content-main .object-tools:before{display:none}.image-info.image-info-detail .image-details-left{float:left}.image-info.image-info-detail .image-details-right{float:left;margin-left:50px}.image-info.image-info-detail .image-details,.image-info.image-info-detail .actions-list{margin-top:0;border:0 !important}.image-info.image-info-detail .image-details.image-details,.image-info.image-info-detail .actions-list.image-details{margin-top:20px;margin-bottom:15px;padding:0}.image-info.image-info-detail .image-details dt,.image-info.image-info-detail .actions-list dt{float:left;color:var(--dca-gray-light, var(--body-quiet-color, #999));font-size:13px;line-height:1rem !important;font-weight:normal;margin-top:0}.image-info.image-info-detail .image-details dd,.image-info.image-info-detail .actions-list dd{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:13px;line-height:16px !important;padding-left:80px;margin-bottom:5px}.image-info.image-info-detail .image-details .text,.image-info.image-info-detail .actions-list .text{font-size:13px;margin-right:15px}.image-info.image-info-detail .image-details .text strong,.image-info.image-info-detail .actions-list .text strong{font-size:13px}.image-info.image-info-detail .image-details li,.image-info.image-info-detail .actions-list li{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:13px !important;font-weight:normal !important;padding:1px 0 !important;border:0 !important}.image-info.image-info-detail .image-details a,.image-info.image-info-detail .actions-list a{padding:0}.image-info.image-info-detail .image-info-title{overflow:hidden;color:var(--dca-gray, var(--body-quiet-color, #666));white-space:nowrap;text-overflow:ellipsis;padding:0 0 5px}.image-info.image-info-detail .image-info-title .icon{float:left;margin-right:5px}.image-info.image-info-detail .image-preview-container{text-align:left;margin:20px 0 0;padding:0}.image-info.image-info-detail .image-preview-container>img{margin-bottom:15px}.image-info.image-info-detail .actions-list .icon{font-size:16px}.image-info.image-info-detail .actions-list .icon:last-child{float:none}@media screen and (max-width: 720px){.image-info{float:none;width:100%}.image-info.image-info-detail .image-details-left,.image-info.image-info-detail .image-details-right{float:none;margin-left:0}}.image-info-close{position:absolute;top:-10px;right:-7px;font-size:20px;cursor:pointer}.image-info-title{padding:5px 10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.image-info-title a{margin-left:5px}.image-preview-container{text-align:center;margin:10px 0;padding:0 10px}.image-preview-container .image-preview{display:inline-block;position:relative;margin-bottom:15px;outline:1px solid var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));background-image:url("data:image/gif;base64,R0lGODlhCAAIAKECAOPj4/z8/P///////yH5BAEKAAIALAAAAAAIAAgAAAINhBEZh8q6DoTPSWvoKQA7")}.image-preview-container .image-preview img{display:block}.image-preview-container .image-preview-field{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.image-preview-container .image-preview-circle{position:relative;z-index:1;width:26px;height:26px;border:solid 2px red;margin:-13px;border-radius:30px;cursor:move;background:hsla(0,0%,100%,.5)}.image-preview-container audio,.image-preview-container video{margin-bottom:15px}.image-preview-container audio:focus,.image-preview-container video:focus{outline:none}.button-group .button{margin-right:10px;padding:10px 15px}.actions-list-dropdown a{display:block;padding:5px 10px}.actions-list-dropdown .caret-down{display:inline-block}.actions-list-dropdown .caret-right{display:none}.actions-list-dropdown.js-collapsed{border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list-dropdown.js-collapsed .caret-down{display:none}.actions-list-dropdown.js-collapsed .caret-right{display:inline-block}.actions-list{border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list:last-child{border-top:none}.actions-list:last-child a{border-bottom:none}.actions-list a{display:block;font-size:20px;padding:5px 10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list .icon:first-child{width:20px}.actions-list .icon:last-child{float:right;margin-top:3px}.actions-separated-list{display:inline-block;margin:0;padding-left:0}@media screen and (max-width: 720px){.actions-separated-list{float:left;margin-left:0}}.actions-separated-list li{display:inline-block;line-height:34px;vertical-align:middle;padding:0 10px;list-style:none}@media screen and (max-width: 720px){.actions-separated-list li:first-child{padding-left:0}}.actions-separated-list li span{vertical-align:middle}.actions-separated-list li a{color:var(--dca-gray, var(--body-quiet-color, #666))}.actions-separated-list span:before{font-size:18px}.search-is-focused .filter-files-container{position:static}.search-is-focused .filter-filers-container-inner{position:absolute;top:0;left:0;right:0}@media screen and (max-width: 720px){.search-is-focused .filter-filers-container-inner{position:static}}.search-is-focused .breadcrumbs-container{position:relative}.search-is-focused.breadcrumb-min-width .filter-filers-container-inner{position:static}.filter-files-container:before,.filter-files-container:after{content:" ";display:table}.filter-files-container:after{clear:both}.filter-files-container{display:table-cell;vertical-align:middle;position:relative;width:245px;margin:0;padding:0;background:none;box-shadow:none;z-index:1000}@media screen and (max-width: 720px){.filter-files-container{display:block;width:auto;margin-right:0;margin-top:10px}.filter-files-container .filter-files-button{float:none}}.filter-files-container .filer-dropdown-container{position:absolute;top:0;right:0}.filter-files-container .filer-dropdown-container>a,.filter-files-container .filer-dropdown-container>a:visited,.filter-files-container .filer-dropdown-container>a:link:visited,.filter-files-container .filer-dropdown-container>a:link{display:inline-block;line-height:34px;text-align:center;width:34px;height:34px;padding:0}.filter-files-container .filer-dropdown-container.open+.filer-dropdown-menu-checkboxes{display:block;width:calc(100% - 30px)}.filter-files-container .filer-dropdown-container.open+.filer-dropdown-menu-checkboxes li{margin:0;padding:0;list-style-type:none}.filter-files-container .filter-search-wrapper{position:relative;float:left;text-align:right;width:calc(100% - 43px);margin-right:5px}@media screen and (max-width: 720px){.filter-files-container .filter-search-wrapper{float:left}}.filter-files-container .filter-search-wrapper .filer-dropdown-container span{line-height:34px !important;height:34px !important}.filter-files-container .filter-files-button{float:right;text-align:center;white-space:nowrap;height:35px;margin:0;padding:8px !important}.filter-files-container .filter-files-button .icon{position:relative;left:2px;font-size:16px !important;vertical-align:top}.filter-files-container .filter-files-field{color:var(--dca-gray-darkest, var(--body-fg, #333));font-size:12px !important;line-height:35px;font-weight:normal;box-sizing:border-box;min-width:200px !important;height:35px;margin:0;padding:0 35px 0 10px !important;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:max-width 200ms}.filter-files-container .filter-files-field::-ms-clear{display:none}.filter-files-container .filer-dropdown-menu{margin-top:0 !important;margin-right:-1px !important}.filter-files-cancel{margin:5px 20px}body.dz-drag-hover .drag-hover-border{display:none !important}body.dz-drag-hover .navigator-table tbody td,body.dz-drag-hover .navigator-table tbody .unfiled td{background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}body.reset-hover td{background-color:var(--dca-white, var(--body-bg, #fff)) !important}.drag-hover-border{position:fixed;border-top:solid 2px var(--dca-primary, var(--primary, #0bf));border-bottom:solid 2px var(--dca-primary, var(--primary, #0bf));pointer-events:none;z-index:100;display:none}.thumbnail-drag-hover-border{border:solid 2px var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-list,.filebrowser .navigator-table{width:100%;margin:0;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd)) !important;border-collapse:collapse !important}.filebrowser .navigator-list .navigator-header,.filebrowser .navigator-list thead th,.filebrowser .navigator-list tbody td,.filebrowser .navigator-table .navigator-header,.filebrowser .navigator-table thead th,.filebrowser .navigator-table tbody td{text-align:left;font-weight:normal;vertical-align:middle;padding:5px !important;border-left:0 !important;border-bottom:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));border-top:1px solid rgba(0,0,0,0);background:none !important}.filebrowser .navigator-list tbody tr.selected .action-button span,.filebrowser .navigator-table tbody tr.selected .action-button span{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important}.filebrowser .navigator-list .navigator-body,.filebrowser .navigator-list .unfiled td,.filebrowser .navigator-table .navigator-body,.filebrowser .navigator-table .unfiled td{padding:12px 5px !important;background-color:var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7)) !important}.filebrowser .navigator-list .navigator-body a,.filebrowser .navigator-list .navigator-body a:hover,.filebrowser .navigator-list .unfiled td a,.filebrowser .navigator-list .unfiled td a:hover,.filebrowser .navigator-table .navigator-body a,.filebrowser .navigator-table .navigator-body a:hover,.filebrowser .navigator-table .unfiled td a,.filebrowser .navigator-table .unfiled td a:hover{color:var(--dca-gray, var(--body-quiet-color, #666)) !important}.filebrowser .navigator-list .column-checkbox,.filebrowser .navigator-table .column-checkbox{text-align:center;width:20px;padding-left:20px !important}.filebrowser .navigator-list .column-checkbox input,.filebrowser .navigator-table .column-checkbox input{vertical-align:middle;margin:0}.filebrowser .navigator-list .column-name a,.filebrowser .navigator-table .column-name a{color:var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-list .column-icon,.filebrowser .navigator-table .column-icon{width:50px;padding-top:0 !important;padding-bottom:0 !important}.filebrowser .navigator-list .column-action,.filebrowser .navigator-table .column-action{text-align:center;width:90px;white-space:nowrap;padding-right:20px !important}.filebrowser .navigator-list .column-action a,.filebrowser .navigator-table .column-action a{font-size:16px !important;margin:0}.filebrowser .navigator-list .column-action .action-button,.filebrowser .navigator-table .column-action .action-button{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}.filebrowser .navigator-list .column-action .action-button:focus,.filebrowser .navigator-list .column-action .action-button.focus,.filebrowser .navigator-list .column-action .action-button:hover,.filebrowser .navigator-table .column-action .action-button:focus,.filebrowser .navigator-table .column-action .action-button.focus,.filebrowser .navigator-table .column-action .action-button:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}.filebrowser .navigator-list .column-action .action-button:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-active,.filebrowser .navigator-table .column-action .action-button:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}.filebrowser .navigator-list .column-action .action-button:active:hover,.filebrowser .navigator-list .column-action .action-button:active:focus,.filebrowser .navigator-list .column-action .action-button:active.focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-active:hover,.filebrowser .navigator-list .column-action .action-button.cms-btn-active:focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-active.focus,.filebrowser .navigator-table .column-action .action-button:active:hover,.filebrowser .navigator-table .column-action .action-button:active:focus,.filebrowser .navigator-table .column-action .action-button:active.focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-active:hover,.filebrowser .navigator-table .column-action .action-button.cms-btn-active:focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}.filebrowser .navigator-list .column-action .action-button:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-active,.filebrowser .navigator-table .column-action .action-button:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-active{background-image:none !important}.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:hover,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.cms-btn-active,.filebrowser .navigator-list .column-action .action-button[disabled],.filebrowser .navigator-list .column-action .action-button[disabled]:hover,.filebrowser .navigator-list .column-action .action-button[disabled]:focus,.filebrowser .navigator-list .column-action .action-button[disabled].focus,.filebrowser .navigator-list .column-action .action-button[disabled]:active,.filebrowser .navigator-list .column-action .action-button[disabled].cms-btn-active,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:hover,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.cms-btn-active,.filebrowser .navigator-table .column-action .action-button[disabled],.filebrowser .navigator-table .column-action .action-button[disabled]:hover,.filebrowser .navigator-table .column-action .action-button[disabled]:focus,.filebrowser .navigator-table .column-action .action-button[disabled].focus,.filebrowser .navigator-table .column-action .action-button[disabled]:active,.filebrowser .navigator-table .column-action .action-button[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:hover:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:focus:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.focus:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:active:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.cms-btn-active:before,.filebrowser .navigator-list .column-action .action-button[disabled]:before,.filebrowser .navigator-list .column-action .action-button[disabled]:hover:before,.filebrowser .navigator-list .column-action .action-button[disabled]:focus:before,.filebrowser .navigator-list .column-action .action-button[disabled].focus:before,.filebrowser .navigator-list .column-action .action-button[disabled]:active:before,.filebrowser .navigator-list .column-action .action-button[disabled].cms-btn-active:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:hover:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:focus:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.focus:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:active:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.cms-btn-active:before,.filebrowser .navigator-table .column-action .action-button[disabled]:before,.filebrowser .navigator-table .column-action .action-button[disabled]:hover:before,.filebrowser .navigator-table .column-action .action-button[disabled]:focus:before,.filebrowser .navigator-table .column-action .action-button[disabled].focus:before,.filebrowser .navigator-table .column-action .action-button[disabled]:active:before,.filebrowser .navigator-table .column-action .action-button[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}.filebrowser .navigator-list .column-action .action-button,.filebrowser .navigator-table .column-action .action-button{margin:3px;padding:2px 6px 8px !important}.filebrowser .navigator-list .column-action .action-button span,.filebrowser .navigator-table .column-action .action-button span{font-size:17px;line-height:33px;vertical-align:middle}.filebrowser .navigator-list .no-files,.filebrowser .navigator-table .no-files{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:14px;text-align:center;padding:40px 0 !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}.filebrowser .navigator-list .no-files span,.filebrowser .navigator-table .no-files span{font-size:20px;margin-right:10px}.filebrowser .navigator-list .no-files span:before,.filebrowser .navigator-table .no-files span:before{vertical-align:sub}.filebrowser .navigator-list .dz-drag-hover td,.filebrowser .navigator-table .dz-drag-hover td{position:relative;background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;box-sizing:border-box !important}.filebrowser .navigator-list .dz-drag-hover td a.icon,.filebrowser .navigator-table .dz-drag-hover td a.icon{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important;background-color:var(--dca-white, var(--body-bg, #fff)) !important}.filebrowser .navigator-list .dz-drag-hover td a,.filebrowser .navigator-table .dz-drag-hover td a{color:var(--dca-primary, var(--primary, #0bf)) !important}.filebrowser .navigator-list.dz-drag-hover,.filebrowser .navigator-table.dz-drag-hover{position:relative}.filebrowser .navigator-list.dz-drag-hover .drag-hover-border,.filebrowser .navigator-table.dz-drag-hover .drag-hover-border{display:none !important}.filebrowser .navigator-list.dz-drag-hover td,.filebrowser .navigator-table.dz-drag-hover td{background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;box-sizing:border-box !important}.filebrowser .navigator-list .reset-hover td,.filebrowser .navigator-list.reset-hover td,.filebrowser .navigator-table .reset-hover td,.filebrowser .navigator-table.reset-hover td{background-color:var(--dca-white, var(--body-bg, #fff)) !important}.filebrowser .navigator-list .reset-hover .dz-drag-hover td,.filebrowser .navigator-list.reset-hover .dz-drag-hover td,.filebrowser .navigator-table .reset-hover .dz-drag-hover td,.filebrowser .navigator-table.reset-hover .dz-drag-hover td{background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}.navigator-top-nav{position:relative;clear:both;min-height:35px;padding:15px 20px;background:var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7));border-bottom:var(--dca-gray-lighter, var(--border-color, #ddd)) solid 1px}.navigator-top-nav .breadcrumbs-container-wrapper{display:table;width:100%}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container-wrapper{display:block}}.navigator-top-nav .breadcrumbs-container-inner{display:table;table-layout:fixed;width:100%}.navigator-top-nav .breadcrumbs-container-inner .filer-dropdown-container{display:table-cell;width:30px;height:35px;vertical-align:middle}.navigator-top-nav .breadcrumbs-container-inner .filer-dropdown-container span{line-height:35px;height:35px;vertical-align:middle}.navigator-top-nav .breadcrumbs-container{display:table-cell;vertical-align:middle}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container{position:static;margin-right:20px}}.navigator-top-nav .tools-container:before,.navigator-top-nav .tools-container:after{content:" ";display:table}.navigator-top-nav .tools-container:after{clear:both}.navigator-top-nav .tools-container{display:table-cell;vertical-align:middle;text-align:right;margin-top:2px}@media screen and (max-width: 720px){.navigator-top-nav .tools-container{display:inline;text-align:left}}.navigator-top-nav .nav-button{display:inline-block;color:var(--dca-gray, var(--body-quiet-color, #666));font-size:20px;line-height:34px;vertical-align:top;margin:0 10px}.navigator-top-nav .nav-button span{vertical-align:middle}.navigator-top-nav .nav-button-filter{position:relative;top:-1px}.navigator-top-nav .nav-button-dots{margin:0;padding:0 15px}.navigator-top-nav .separator{display:inline-block;position:relative;vertical-align:top;width:1px;height:34px;margin:0 5px}.navigator-top-nav .separator:before{content:"";display:block;position:absolute;top:-14px;bottom:-11px;overflow:hidden;width:1px;background-color:var(--dca-gray-lighter, var(--border-color, #ddd))}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper,.breadcrumb-min-width .breadcrumbs-container-wrapper,.breadcrumb-min-width .breadcrumbs-container,.breadcrumb-min-width .tools-container,.breadcrumb-min-width .filter-files-container,.breadcrumb-min-width .navigator-breadcrumbs,.breadcrumb-min-width .navigator-button-wrapper{display:inline-block;text-align:left}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper .actions-wrapper,.breadcrumb-min-width .breadcrumbs-container-wrapper .actions-wrapper,.breadcrumb-min-width .breadcrumbs-container .actions-wrapper,.breadcrumb-min-width .tools-container .actions-wrapper,.breadcrumb-min-width .filter-files-container .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs .actions-wrapper,.breadcrumb-min-width .navigator-button-wrapper .actions-wrapper{white-space:nowrap;margin-left:0;margin-top:10px}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .breadcrumbs-container-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .breadcrumbs-container .actions-wrapper li:first-child,.breadcrumb-min-width .tools-container .actions-wrapper li:first-child,.breadcrumb-min-width .filter-files-container .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-button-wrapper .actions-wrapper li:first-child{padding-left:0}.breadcrumb-min-width .navigator-button-wrapper{margin-top:10px}.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper{min-height:inherit}.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-container .fa-caret-down{vertical-align:text-top}.breadcrumb-min-width .breadcrumbs-container-inner .filer-dropdown-container{display:inline-block !important}.breadcrumb-min-width .navigator-tools{white-space:normal}.breadcrumb-min-width .filter-files-container{width:100%;margin-top:10px;z-index:auto}.breadcrumb-min-width .breadcrumbs-container{margin-right:0}.breadcrumb-min-width .navigator-breadcrumbs .icon{vertical-align:middle}.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper{float:left;width:calc(100% - 30px)}.navigator-tools:before,.navigator-tools:after{content:" ";display:table}.navigator-tools:after{clear:both}.navigator-tools{white-space:nowrap}@media screen and (max-width: 720px){.navigator-tools{display:inline}}.navigator-tools .actions-wrapper{display:inline-block;margin-bottom:0;margin-left:10px}.navigator-tools .actions-wrapper a,.navigator-tools .actions-wrapper a:hover{color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;cursor:not-allowed}@media screen and (max-width: 720px){.navigator-tools .actions-wrapper:before,.navigator-tools .actions-wrapper:after{content:" ";display:table}.navigator-tools .actions-wrapper:after{clear:both}.navigator-tools .actions-wrapper{float:none;margin-left:0}}.navigator-tools .actions-wrapper.action-selected a{color:var(--dca-gray, var(--body-quiet-color, #666)) !important;cursor:pointer}.navigator-tools .actions-wrapper.action-selected .actions-separated-list{display:inline-block}.navigator-tools .actions-wrapper+.filer-list-type-switcher-wrapper{border-left:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));margin-left:0}.navigator-tools .actions{display:none;float:right}@media screen and (max-width: 720px){.navigator-tools .actions:before,.navigator-tools .actions:after{content:" ";display:table}.navigator-tools .actions:after{clear:both}.navigator-tools .actions{float:none;margin-bottom:10px}}.navigator-tools .actions .all,.navigator-tools .actions .question,.navigator-tools .actions .clear,.navigator-tools .actions .action-counter{font-size:12px;line-height:34px;vertical-align:text-top}.navigator-tools .actions .action-counter,.navigator-tools .actions .all{color:var(--dca-gray-light, var(--body-quiet-color, #999))}.navigator-tools .actions .question,.navigator-tools .actions .clear{margin-left:10px;padding-left:10px;border-left:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.navigator-tools .filer-list-type-switcher-wrapper{display:inline-block;margin-left:10px}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container{float:none}.navigator-top-nav .navigator-tools{float:none}.navigator-top-nav .navigator-tools .separator:before{top:0;bottom:0}}.navigator-button-wrapper{display:inline-block;vertical-align:top;text-align:right;margin-bottom:0;margin-left:10px}@media screen and (max-width: 720px){.navigator-button-wrapper{display:block;float:none;text-align:left;margin-top:0;margin-left:0}}.navigator-button{margin-right:10px}.navigator-button,.navigator-button:visited,.navigator-button:link:visited,.navigator-button:link{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border:1px solid var(--dca-black, var(--body-fg, #000)) !important;background-clip:padding-box;-webkit-appearance:none}.navigator-button:focus,.navigator-button.focus,.navigator-button:hover,.navigator-button:visited:focus,.navigator-button:visited.focus,.navigator-button:visited:hover,.navigator-button:link:visited:focus,.navigator-button:link:visited.focus,.navigator-button:link:visited:hover,.navigator-button:link:focus,.navigator-button:link.focus,.navigator-button:link:hover{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:invert(0.05) !important;text-decoration:none !important}.navigator-button:active,.navigator-button.cms-btn-active,.navigator-button:visited:active,.navigator-button:visited.cms-btn-active,.navigator-button:link:visited:active,.navigator-button:link:visited.cms-btn-active,.navigator-button:link:active,.navigator-button:link.cms-btn-active{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}.navigator-button:active:hover,.navigator-button:active:focus,.navigator-button:active.focus,.navigator-button.cms-btn-active:hover,.navigator-button.cms-btn-active:focus,.navigator-button.cms-btn-active.focus,.navigator-button:visited:active:hover,.navigator-button:visited:active:focus,.navigator-button:visited:active.focus,.navigator-button:visited.cms-btn-active:hover,.navigator-button:visited.cms-btn-active:focus,.navigator-button:visited.cms-btn-active.focus,.navigator-button:link:visited:active:hover,.navigator-button:link:visited:active:focus,.navigator-button:link:visited:active.focus,.navigator-button:link:visited.cms-btn-active:hover,.navigator-button:link:visited.cms-btn-active:focus,.navigator-button:link:visited.cms-btn-active.focus,.navigator-button:link:active:hover,.navigator-button:link:active:focus,.navigator-button:link:active.focus,.navigator-button:link.cms-btn-active:hover,.navigator-button:link.cms-btn-active:focus,.navigator-button:link.cms-btn-active.focus{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}.navigator-button:active,.navigator-button.cms-btn-active,.navigator-button:visited:active,.navigator-button:visited.cms-btn-active,.navigator-button:link:visited:active,.navigator-button:link:visited.cms-btn-active,.navigator-button:link:active,.navigator-button:link.cms-btn-active{background-image:none !important}.navigator-button.cms-btn-disabled,.navigator-button.cms-btn-disabled:hover,.navigator-button.cms-btn-disabled:focus,.navigator-button.cms-btn-disabled.focus,.navigator-button.cms-btn-disabled:active,.navigator-button.cms-btn-disabled.cms-btn-active,.navigator-button[disabled],.navigator-button[disabled]:hover,.navigator-button[disabled]:focus,.navigator-button[disabled].focus,.navigator-button[disabled]:active,.navigator-button[disabled].cms-btn-active,.navigator-button:visited.cms-btn-disabled,.navigator-button:visited.cms-btn-disabled:hover,.navigator-button:visited.cms-btn-disabled:focus,.navigator-button:visited.cms-btn-disabled.focus,.navigator-button:visited.cms-btn-disabled:active,.navigator-button:visited.cms-btn-disabled.cms-btn-active,.navigator-button:visited[disabled],.navigator-button:visited[disabled]:hover,.navigator-button:visited[disabled]:focus,.navigator-button:visited[disabled].focus,.navigator-button:visited[disabled]:active,.navigator-button:visited[disabled].cms-btn-active,.navigator-button:link:visited.cms-btn-disabled,.navigator-button:link:visited.cms-btn-disabled:hover,.navigator-button:link:visited.cms-btn-disabled:focus,.navigator-button:link:visited.cms-btn-disabled.focus,.navigator-button:link:visited.cms-btn-disabled:active,.navigator-button:link:visited.cms-btn-disabled.cms-btn-active,.navigator-button:link:visited[disabled],.navigator-button:link:visited[disabled]:hover,.navigator-button:link:visited[disabled]:focus,.navigator-button:link:visited[disabled].focus,.navigator-button:link:visited[disabled]:active,.navigator-button:link:visited[disabled].cms-btn-active,.navigator-button:link.cms-btn-disabled,.navigator-button:link.cms-btn-disabled:hover,.navigator-button:link.cms-btn-disabled:focus,.navigator-button:link.cms-btn-disabled.focus,.navigator-button:link.cms-btn-disabled:active,.navigator-button:link.cms-btn-disabled.cms-btn-active,.navigator-button:link[disabled],.navigator-button:link[disabled]:hover,.navigator-button:link[disabled]:focus,.navigator-button:link[disabled].focus,.navigator-button:link[disabled]:active,.navigator-button:link[disabled].cms-btn-active{background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}.navigator-button.cms-btn-disabled:before,.navigator-button.cms-btn-disabled:hover:before,.navigator-button.cms-btn-disabled:focus:before,.navigator-button.cms-btn-disabled.focus:before,.navigator-button.cms-btn-disabled:active:before,.navigator-button.cms-btn-disabled.cms-btn-active:before,.navigator-button[disabled]:before,.navigator-button[disabled]:hover:before,.navigator-button[disabled]:focus:before,.navigator-button[disabled].focus:before,.navigator-button[disabled]:active:before,.navigator-button[disabled].cms-btn-active:before,.navigator-button:visited.cms-btn-disabled:before,.navigator-button:visited.cms-btn-disabled:hover:before,.navigator-button:visited.cms-btn-disabled:focus:before,.navigator-button:visited.cms-btn-disabled.focus:before,.navigator-button:visited.cms-btn-disabled:active:before,.navigator-button:visited.cms-btn-disabled.cms-btn-active:before,.navigator-button:visited[disabled]:before,.navigator-button:visited[disabled]:hover:before,.navigator-button:visited[disabled]:focus:before,.navigator-button:visited[disabled].focus:before,.navigator-button:visited[disabled]:active:before,.navigator-button:visited[disabled].cms-btn-active:before,.navigator-button:link:visited.cms-btn-disabled:before,.navigator-button:link:visited.cms-btn-disabled:hover:before,.navigator-button:link:visited.cms-btn-disabled:focus:before,.navigator-button:link:visited.cms-btn-disabled.focus:before,.navigator-button:link:visited.cms-btn-disabled:active:before,.navigator-button:link:visited.cms-btn-disabled.cms-btn-active:before,.navigator-button:link:visited[disabled]:before,.navigator-button:link:visited[disabled]:hover:before,.navigator-button:link:visited[disabled]:focus:before,.navigator-button:link:visited[disabled].focus:before,.navigator-button:link:visited[disabled]:active:before,.navigator-button:link:visited[disabled].cms-btn-active:before,.navigator-button:link.cms-btn-disabled:before,.navigator-button:link.cms-btn-disabled:hover:before,.navigator-button:link.cms-btn-disabled:focus:before,.navigator-button:link.cms-btn-disabled.focus:before,.navigator-button:link.cms-btn-disabled:active:before,.navigator-button:link.cms-btn-disabled.cms-btn-active:before,.navigator-button:link[disabled]:before,.navigator-button:link[disabled]:hover:before,.navigator-button:link[disabled]:focus:before,.navigator-button:link[disabled].focus:before,.navigator-button:link[disabled]:active:before,.navigator-button:link[disabled].cms-btn-active:before{color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1)}.navigator-button,.navigator-button:visited,.navigator-button:link:visited,.navigator-button:link{display:inline-block;vertical-align:top;padding:10px 20px !important}.navigator-button .icon{position:relative;margin-right:3px}.navigator-button .fa-folder{top:0}.navigator-button.navigator-button-upload{margin-right:0}.upload-button-disabled{display:inline-block}.navigator-button+.filer-dropdown-menu{margin-top:-2px}.navigator{position:relative;overflow-x:auto;width:100%}.navigator form{margin:0;padding:0;box-shadow:none}.filer-dropdown-container{display:inline-block;position:relative;vertical-align:top}.filer-dropdown-container .fa-caret-down,.filer-dropdown-container .cms-icon-caret-down{font-size:14px}.filer-dropdown-container .filer-dropdown-menu,.filer-dropdown-container+.filer-dropdown-menu{display:none;right:0;left:auto;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-dropdown-container .filer-dropdown-menu>li>a,.filer-dropdown-container+.filer-dropdown-menu>li>a{display:block;color:var(--dca-primary, var(--primary, #0bf));font-weight:normal;white-space:normal;padding:12px 20px !important}@media screen and (min-width: 720px){.filer-dropdown-container .filer-dropdown-menu>li>a,.filer-dropdown-container+.filer-dropdown-menu>li>a{white-space:nowrap}}.filer-dropdown-container .filer-dropdown-menu label,.filer-dropdown-container+.filer-dropdown-menu label{display:block;line-height:20px !important;text-transform:none;width:auto;margin:5px 0 !important;padding:0 10px !important}.filer-dropdown-container .filer-dropdown-menu input,.filer-dropdown-container+.filer-dropdown-menu input{position:relative;top:4px;vertical-align:top;margin-right:5px}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes{width:0;min-height:50px;padding:15px;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes:before,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes:before{display:none}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close{position:absolute;top:10px;right:10px;color:var(--dca-gray, var(--body-quiet-color, #666));cursor:pointer}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close:hover,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close:hover{color:var(--dca-primary, var(--primary, #0bf))}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes p,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes p{color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;font-weight:normal;text-transform:uppercase;margin-bottom:5px}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes label,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes label{color:var(--dca-gray, var(--body-quiet-color, #666)) !important;font-weight:normal;padding:0 !important;margin-top:0 !important}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes label input,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes label input{margin-left:0}.filer-dropdown-container .filer-dropdown-menu a:hover,.filer-dropdown-container+.filer-dropdown-menu a:hover{color:var(--dca-white, var(--body-bg, #fff)) !important;background:var(--dca-primary, var(--primary, #0bf)) !important}.filer-dropdown-container.open .filer-dropdown-menu{display:block}.filer-dropdown-container.open .filer-dropdown-menu li{margin:0;padding:0;list-style-type:none}.filer-dropdown-container+.separator{margin-right:10px}.filer-dropdown-container-down>a,.filer-dropdown-container-down>a:link,.filer-dropdown-container-down>a:visited,.filer-dropdown-container-down>a:link:visited{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:20px;line-height:35px;height:35px;padding:0 10px}.filer-dropdown-container-down .filer-dropdown-menu{right:auto;left:-14px;margin-right:10px}.filer-dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;float:left;min-width:160px;margin:2px 0 0;margin-top:0 !important;padding:0;list-style:none;font-size:14px;text-align:left;background-color:var(--dca-white, var(--body-bg, #fff));border-radius:4px;background-clip:padding-box}.filer-dropdown-menu:before{position:absolute;top:-5px;left:35px;z-index:-1;content:"";width:10px;height:10px;margin-left:-5px;transform:rotate(45deg);background-color:var(--dca-white, var(--body-bg, #fff))}.filer-dropdown-menu.create-menu-dropdown:before{left:auto;right:17px}.navigator-breadcrumbs:before,.navigator-breadcrumbs:after{content:" ";display:table}.navigator-breadcrumbs:after{clear:both}.navigator-breadcrumbs{display:table-cell;vertical-align:middle;font-size:16px;white-space:nowrap;width:60px}.navigator-breadcrumbs>a{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important}.navigator-breadcrumbs .icon{color:var(--dca-gray-light, var(--body-quiet-color, #999));line-height:35px;height:35px;margin:0 5px}.navigator-breadcrumbs .icon:before{vertical-align:middle}.navigator-breadcrumbs li{list-style-type:none}.navigator-breadcrumbs-folder-name-wrapper{display:table-cell;overflow:hidden;font-size:16px;font-weight:bold;vertical-align:middle;white-space:nowrap}.navigator-breadcrumbs-folder-name{display:block;overflow:hidden;white-space:normal;line-height:35px;width:100%;height:35px}.navigator-breadcrumbs-folder-name-inner{display:block;position:relative;overflow:hidden;line-height:35px;height:35px;width:100%;text-overflow:ellipsis}.filer-navigator-breadcrumbs-dropdown-container{position:relative;float:left;vertical-align:middle;margin:0 7px 0 0}.filer-navigator-breadcrumbs-dropdown-container>a img{padding:3px 0}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown{left:-15px !important;min-width:200px;padding:0;margin-top:0;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li{padding:0}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li>a{color:var(--dca-primary, var(--primary, #0bf));padding:12px 20px 3px !important;border-bottom:solid 1px var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2))}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li>a:hover{color:var(--dca-white, var(--body-bg, #fff)) !important;background:var(--dca-primary, var(--primary, #0bf)) !important}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li:last-child>a{border-bottom:none}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown img{position:relative;top:-5px;vertical-align:top;margin:0 10px 0 0}.navigator-dropdown-arrow-up{position:relative;left:20px;overflow:hidden;width:20px;height:20px;margin-top:-20px;z-index:1001}.navigator-dropdown-arrow-up:after{content:"";position:absolute;top:15px;left:5px;width:10px;height:10px;background:#fff;transform:rotate(45deg);box-shadow:0 1px 10px rgba(0,0,0,.25)}.navigator-breadcrumbs-name-dropdown-wrapper{display:table;min-height:35px}.navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-menu{left:auto;right:-80px}.navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-menu:before{right:80px;left:auto}.navigator-breadcrumbs-name-dropdown-wrapper a{display:inline-block}.empty-filer-header-cell{display:table-cell;vertical-align:middle}.filebrowser .navigator-thumbnail-list{overflow:hidden}.filebrowser .navigator-thumbnail-list .navigator-list{border-top:0 !important}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header>*{display:inline-block;text-transform:uppercase;margin:0;padding:0;padding-left:10px}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header .navigator-checkbox{float:right;padding-right:20px;text-transform:initial;color:var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header .navigator-checkbox input[type=checkbox]{margin-left:5px;vertical-align:middle}.filebrowser .navigator-thumbnail-list .navigator-body:before,.filebrowser .navigator-thumbnail-list .navigator-body:after{content:" ";display:table}.filebrowser .navigator-thumbnail-list .navigator-body:after{clear:both}.filebrowser .navigator-thumbnail-list .navigator-body{padding:0 !important}.filebrowser .navigator-thumbnail-list .thumbnail-item{float:left;display:inline-block;padding:10px;width:calc(var(--thumbnail-size, 120px) + 5px);height:calc(var(--thumbnail-size, 120px) + 5px);border:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));margin:16px 12px;background-color:var(--dca-white, var(--body-bg, #fff));position:relative;overflow:hidden}.filebrowser .navigator-thumbnail-list .thumbnail-item .thumbnail-file-item-box{padding:10px;width:calc(var(--thumbnail-size, 120px) + 5px);height:calc(var(--thumbnail-size, 120px) + 5px);border:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));margin:16px 12px;background-color:var(--dca-white, var(--body-bg, #fff))}.filebrowser .navigator-thumbnail-list .thumbnail-item .thumbnail-file-item-box:hover{background-color:#f1faff}.filebrowser .navigator-thumbnail-list .thumbnail-item .navigator-checkbox{position:absolute;top:5px;left:5px}.filebrowser .navigator-thumbnail-list .thumbnail-item .navigator-checkbox input{margin:0;vertical-align:top}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon{height:50%;width:50%;margin:10px auto;margin-bottom:18px}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail a,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon a{display:block;height:100%;width:100%}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail img,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon img{width:100%;height:100%}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-name{background:rgba(0,0,0,0);text-align:center;word-break:break-word}.filebrowser .navigator-thumbnail-list .thumbnail-virtual-item{background-color:initial}.filebrowser .navigator-thumbnail-list .thumbnail-folder-item:hover{background-color:#f1faff}.filebrowser .navigator-thumbnail-list .thumbnail-file-item{float:none;width:calc(var(--thumbnail-size, 120px) + 27px);height:calc(var(--thumbnail-size, 120px) + 80px);border:0;padding:0;background-color:rgba(0,0,0,0)}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .thumbnail-file-item-box{float:none;margin:0;margin-bottom:5px}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .item-thumbnail{margin:0;height:100%;width:100%}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .item-name{position:relative;word-break:break-word}.insertlinkButton:before{content:"" !important}.insertlinkButton span{font-size:17px}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box,.popup.app-cmsplugin_filer_image .field-box.field-free_link,.popup.app-cmsplugin_filer_image .field-box.field-page_link,.popup.app-cmsplugin_filer_image .field-box.field-file_link{float:none !important;margin-right:0 !important;margin-top:20px !important}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box:first-child,.popup.app-cmsplugin_filer_image .field-box.field-free_link:first-child,.popup.app-cmsplugin_filer_image .field-box.field-page_link:first-child,.popup.app-cmsplugin_filer_image .field-box.field-file_link:first-child{margin-top:0 !important}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box input,.popup.app-cmsplugin_filer_image .field-box.field-free_link input,.popup.app-cmsplugin_filer_image .field-box.field-page_link input,.popup.app-cmsplugin_filer_image .field-box.field-file_link input{width:100% !important}.popup.app-cmsplugin_filer_image .form-row .field-box.field-crop,.popup.app-cmsplugin_filer_image .form-row .field-box.field-upscale{margin-top:30px}.popup.delete-confirmation .colM ul{margin-bottom:25px !important}.popup .image-info-detail{padding:0;padding-bottom:25px;margin-bottom:30px;box-shadow:none;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.popup.change-list.filebrowser #result_list tbody th,.popup.change-list.filebrowser #result_list tbody td{height:auto}.popup .filer-dropzone{padding:5px 20px}.popup form .form-row .filer-dropzone .filerFile{top:8px}.popup.filebrowser #container #content{margin:0 !important}.popup .navigator-button-wrapper{float:right}@media screen and (max-width: 720px){.popup .navigator-button-wrapper{float:none}}.popup .navigator-top-nav .tools-container{width:70%}.popup .navigator-top-nav .breadcrumbs-container{width:30%}@media screen and (max-width: 720px){.popup .navigator-top-nav .tools-container,.popup .navigator-top-nav .breadcrumbs-container{width:100%}}form .form-row[class*=file] .related-widget-wrapper-link,form .form-row[class*=folder] .related-widget-wrapper-link,form .form-row[class*=img] .related-widget-wrapper-link,form .form-row[class*=image] .related-widget-wrapper-link,form .form-row[class*=visual] .related-widget-wrapper-link{display:none}form .form-row .filer-widget+.related-widget-wrapper-link,form .form-row .filer-widget+*+.related-widget-wrapper-link{display:none}form .form-row .related-widget-wrapper:has(.filer-widget,.filer-dropzone){width:100%}form .form-row .filer-dropzone:before,form .form-row .filer-dropzone:after{content:" ";display:table}form .form-row .filer-dropzone:after{clear:both}form .form-row .filer-dropzone{position:relative;min-width:320px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:var(--dca-border-radius, 5px);background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));box-sizing:border-box !important}form .form-row .filer-dropzone .z-index-fix{position:absolute;top:0;right:0;bottom:0;left:0}form .form-row .filer-dropzone.dz-drag-hover{background-color:var(--dca-primary, var(--primary, #0bf));filter:brightness(1.5);border:solid 2px var(--dca-primary, var(--primary, #0bf)) !important}form .form-row .filer-dropzone.dz-drag-hover .z-index-fix{z-index:1}form .form-row .filer-dropzone.dz-drag-hover .dz-message{opacity:1;display:block !important;visibility:visible}form .form-row .filer-dropzone.dz-drag-hover .filerFile{display:none}form .form-row .filer-dropzone.dz-drag-hover .dz-message,form .form-row .filer-dropzone.dz-drag-hover .dz-message .icon{color:var(--dca-primary, var(--primary, #0bf)) !important}form .form-row .filer-dropzone.dz-started .fileUpload{display:none}form .form-row .filer-dropzone .dz-preview{width:100%;min-height:auto;margin-right:0;margin-bottom:0;margin-left:0;padding-bottom:10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}form .form-row .filer-dropzone .dz-preview.dz-error{position:relative}form .form-row .filer-dropzone .dz-preview.dz-error .dz-error-message{display:none}form .form-row .filer-dropzone .dz-preview.dz-error:hover .dz-error-message{display:block}form .form-row .filer-dropzone .dz-preview .dz-details{min-width:calc(100% - 80px);max-width:calc(100% - 80px);margin-top:7px;margin-left:40px;padding:0;opacity:1}form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename,form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename:hover,form .form-row .filer-dropzone .dz-preview .dz-details .dz-size{float:left;text-align:left}form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename span,form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename:hover span,form .form-row .filer-dropzone .dz-preview .dz-details .dz-size span{color:var(--dca-gray, var(--body-quiet-color, #666));border:0 !important;background-color:rgba(0,0,0,0) !important}form .form-row .filer-dropzone .dz-preview .dz-remove{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-trash' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E%0A");background-size:contain;display:inline-block;position:absolute;top:7px;right:25px;font:0/0 a;width:18px;height:18px}form .form-row .filer-dropzone .dz-preview .dz-error-message{top:65px;left:0;width:100%}form .form-row .filer-dropzone .dz-preview .dz-success-mark,form .form-row .filer-dropzone .dz-preview .dz-error-mark{top:5px;right:0;left:auto;margin-top:0}form .form-row .filer-dropzone .dz-preview .dz-success-mark:before,form .form-row .filer-dropzone .dz-preview .dz-error-mark:before{color:var(--dca-gray, var(--body-quiet-color, #666))}form .form-row .filer-dropzone .dz-preview .dz-success-mark svg,form .form-row .filer-dropzone .dz-preview .dz-error-mark svg{display:none}form .form-row .filer-dropzone .dz-preview .dz-success-mark{width:16px;height:16px;background-image:url("data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2370bf2b' d='M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A");background-size:contain}form .form-row .filer-dropzone .dz-preview .dz-error-mark{background-image:url("data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23dd4646' d='M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A");width:16px;height:16px;background-size:contain}form .form-row .filer-dropzone .dz-preview.dz-image-preview,form .form-row .filer-dropzone .dz-preview.dz-file-preview{background-color:rgba(0,0,0,0)}form .form-row .filer-dropzone .dz-preview.dz-image-preview .dz-image,form .form-row .filer-dropzone .dz-preview.dz-file-preview .dz-image{overflow:hidden;width:36px;height:36px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0}form .form-row .filer-dropzone .dz-preview.dz-image-preview .dz-image img,form .form-row .filer-dropzone .dz-preview.dz-file-preview .dz-image img{width:100%;height:auto}form .form-row .filer-dropzone .dz-preview .dz-progress{top:18px;left:0;width:calc(100% - 40px);height:10px;margin-left:40px}form .form-row .filer-dropzone .dz-message{float:right;color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));width:100%;margin:15px 0 0}form .form-row .filer-dropzone .icon{position:relative;top:3px;color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));font-size:24px;margin-right:10px}form .form-row .filer-dropzone .filerFile .related-lookup{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border:1px solid var(--dca-black, var(--body-fg, #000)) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile .related-lookup:focus,form .form-row .filer-dropzone .filerFile .related-lookup.focus,form .form-row .filer-dropzone .filerFile .related-lookup:hover{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:invert(0.05) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile .related-lookup:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile .related-lookup:active:hover,form .form-row .filer-dropzone .filerFile .related-lookup:active:focus,form .form-row .filer-dropzone .filerFile .related-lookup:active.focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active.focus{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile .related-lookup:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile .related-lookup[disabled],form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:hover,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:focus,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].focus,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:active,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].cms-btn-active{background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].focus:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:active:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].cms-btn-active:before{color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile .related-lookup{float:left !important;overflow:hidden;line-height:14px;width:auto !important;height:auto !important;padding:10px 20px !important;margin-top:24px;margin-left:10px;text-align:center !important;cursor:pointer}form .form-row .filer-dropzone .filerFile .related-lookup .cms-icon{color:var(--dca-white, var(--body-bg, #fff));font-size:17px;margin:0 10px 0 0;vertical-align:middle}form .form-row .filer-dropzone .filerFile .related-lookup:before{display:none}form .form-row .filer-dropzone .filerFile .related-lookup .choose-file,form .form-row .filer-dropzone .filerFile .related-lookup .replace-file,form .form-row .filer-dropzone .filerFile .related-lookup .edit-file{color:var(--dca-white, var(--body-bg, #fff));margin:0}form .form-row .filer-dropzone .filerFile .related-lookup .replace-file{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.edit{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled],form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change{float:right !important;padding:5px 0 !important;width:36px !important;height:36px !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:focus{background-color:var(--dca-white, var(--body-bg, #fff)) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change span{text-align:center;line-height:24px}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .cms-icon{color:var(--dca-gray-light, var(--button-fg, #999));margin-right:0 !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .choose-file{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .replace-file{display:block}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.lookup{display:block !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.edit{display:block}form .form-row .filer-dropzone .filerClearer{width:36px !important;height:36px !important;color:red}form .form-row .filer-dropzone .filerFile{position:absolute;top:9px;left:20px;width:calc(100% - 40px)}form .form-row .filer-dropzone .filerFile img[src*=nofile]{background-color:var(--dca-white, var(--body-bg, #fff))}form .form-row .filer-dropzone .filerFile span:not(:empty):not(.choose-file):not(.replace-file):not(.edit-file){overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 260px);height:80px;line-height:80px}form .form-row .filer-dropzone .filerFile img{width:80px;height:80px;margin-right:10px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0;vertical-align:top}form .form-row .filer-dropzone .filerFile img[src*=nofile]{box-sizing:border-box;margin-right:0;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0}form .form-row .filer-dropzone .filerFile a{box-sizing:border-box;padding-top:10px !important}form .form-row .filer-dropzone .filerFile span{display:inline-block;color:var(--dca-gray, var(--body-quiet-color, #666));font-weight:normal;margin-bottom:6px;text-align:left}form .form-row .filer-dropzone .filerFile span:empty+.related-lookup{float:none !important;margin-left:0 !important}form .form-row .filer-dropzone .filerFile a.filerClearer{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile a.filerClearer:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.focus,form .form-row .filer-dropzone .filerFile a.filerClearer:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active:hover,form .form-row .filer-dropzone .filerFile a.filerClearer:active:focus,form .form-row .filer-dropzone .filerFile a.filerClearer:active.focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled],form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:hover,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:focus,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].focus,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:active,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:hover:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:active:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile a.filerClearer{float:right;padding:5px 0 !important;margin:24px 0 0 10px;width:36px;height:36px;text-align:center;cursor:pointer}form .form-row .filer-dropzone .filerFile a.filerClearer span:before{color:red !important}form .form-row .filer-dropzone .filerFile a.filerClearer span{text-align:center;line-height:24px}form .form-row .filer-dropzone.filer-dropzone-mobile .filerFile{text-align:center}form .form-row .filer-dropzone.filer-dropzone-mobile .dz-message{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-top:75px}form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile{text-align:center}@media screen and (max-width: 810px){form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector .description_text{text-overflow:ellipsis;width:calc(100% - 250px);overflow:hidden}}form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector>span:not(.choose-file):not(.replace-file):not(.edit-file),form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector .dz-name{width:calc(100% - 250px)}form .form-row .filer-dropzone.filer-dropzone-folder .filerFile{top:8px}form .form-row .filer-dropzone.filer-dropzone-folder .filerFile #id_folder_description_txt{float:left}@media(max-width: 767px){form .form-row .filer-dropzone{flex-grow:1}}.filer-dropzone{min-height:100px !important}.filer-dropzone .dz-upload{height:5px;background-color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone .dz-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 145px)}.filer-dropzone .dz-thumbnail{display:inline-block;overflow:hidden;vertical-align:top;width:80px;height:80px;margin-right:10px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:3px;background:var(--dca-white, var(--body-bg, #fff)) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%232980b9' d='M5 2c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V8l-6-6z'/%3E%3Cpath fill='%233498db' d='M5 1c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V7l-6-6z'/%3E%3Cpath fill='%232980b9' d='m21 7-6-6v4c0 1.1.895 2 2 2z'/%3E%3C/svg%3E");background-size:contain}.filer-dropzone .dz-thumbnail img{background:var(--dca-white, var(--body-bg, #fff))}.filer-dropzone .dz-thumbnail img[src=""],.filer-dropzone .dz-thumbnail img:not([src]){width:104%;height:104%;margin:-2%}.filer-dropzone-info-message{position:fixed;bottom:35px;left:50%;z-index:2;text-align:center;width:270px;max-height:300px;overflow-y:auto;margin:-50px 0 0 -150px;padding:15px 15px 0;border-radius:var(--dca-btn-radius, 3px);background:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.filer-dropzone-info-message .icon{font-size:35px;color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone-info-message .text{margin:5px 0 10px}.filer-dropzone-upload-info{margin-top:10px}.filer-dropzone-upload-info .filer-dropzone-file-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.filer-dropzone-upload-info:empty{margin-top:0}.filer-dropzone-progress{height:5px;margin-top:5px;background-color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone-upload-welcome .folder{color:var(--dca-primary, var(--primary, #0bf));padding:10px 0 0;margin:0 -15px;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.filer-dropzone-upload-welcome .folder img,.filer-dropzone-upload-welcome .folder span{vertical-align:middle}.filer-dropzone-upload-welcome .folder img{margin-right:5px}.filer-dropzone-upload-welcome .folder .folder-inner{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 10px}.filer-dropzone-cancel{padding-top:10px;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));margin:15px -15px 10px}.filer-dropzone-cancel a{font-size:12px;color:var(--dca-gray, var(--body-quiet-color, #666)) !important}.filer-dropzone-upload-success,.filer-dropzone-upload-canceled{margin:0 -15px 10px}.filer-dropzone-upload-count{padding-bottom:10px;margin:10px -15px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.filer-tooltip-wrapper{position:relative}.filer-tooltip{position:absolute;left:-30px;right:-30px;color:var(--dca-gray, var(--body-quiet-color, #666));text-align:center;font-size:12px !important;line-height:15px !important;white-space:normal;margin-top:5px;padding:10px;background-color:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 10px rgba(0,0,0,.25);border-radius:5px;z-index:10;cursor:default}.filer-tooltip:before{position:absolute;top:-3px;left:50%;z-index:-1;content:"";width:9px;height:9px;margin-left:-5px;transform:rotate(45deg);background-color:var(--dca-white, var(--body-bg, #fff))}.disabled-btn-tooltip{display:none;outline:none}@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.filer-dropzone,.filer-dropzone *{box-sizing:border-box}.filer-dropzone{min-height:150px;padding:20px 20px;border:2px solid rgba(0,0,0,.3);background:#fff}.filer-dropzone.dz-clickable{cursor:pointer}.filer-dropzone.dz-clickable *{cursor:default}.filer-dropzone.dz-clickable .dz-message,.filer-dropzone.dz-clickable .dz-message *{cursor:pointer}.filer-dropzone.dz-drag-hover{border-style:solid}.filer-dropzone.dz-drag-hover .dz-message{opacity:.5}.filer-dropzone .dz-message{text-align:center;margin:2em 0}.filer-dropzone .dz-preview{display:inline-block;position:relative;vertical-align:top;min-height:100px;margin:16px}.filer-dropzone .dz-preview:hover{z-index:1000}.filer-dropzone .dz-preview:hover .dz-details{opacity:1}.filer-dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:var(--dca-gray-light, var(--body-quiet-color, #999));background:linear-gradient(to bottom, var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)), var(--dca-gray-lighter, var(--border-color, #ddd)))}.filer-dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.filer-dropzone .dz-preview.dz-image-preview{background:#fff}.filer-dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.filer-dropzone .dz-preview .dz-remove{display:block;font-size:14px;text-align:center;border:none;cursor:pointer}.filer-dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.filer-dropzone .dz-preview:hover .dz-details{opacity:1}.filer-dropzone .dz-preview .dz-details{position:absolute;top:0;left:0;z-index:20;color:rgba(0,0,0,.9);font-size:13px;line-height:150%;text-align:center;min-width:100%;max-width:100%;padding:2em 1em;opacity:0}.filer-dropzone .dz-preview .dz-details .dz-size{font-size:16px;margin-bottom:1em}.filer-dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.filer-dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:hsla(0,0%,100%,.8)}.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid rgba(0,0,0,0)}.filer-dropzone .dz-preview .dz-details .dz-filename span,.filer-dropzone .dz-preview .dz-details .dz-size span{padding:0 .4em;border-radius:3px;background-color:hsla(0,0%,100%,.4)}.filer-dropzone .dz-preview:hover .dz-image img{transform:scale(1.05, 1.05);filter:blur(8px)}.filer-dropzone .dz-preview .dz-image{display:block;position:relative;overflow:hidden;z-index:10;width:120px;height:120px;border-radius:20px}.filer-dropzone .dz-preview .dz-image img{display:block}.filer-dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.filer-dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.filer-dropzone .dz-preview .dz-success-mark,.filer-dropzone .dz-preview .dz-error-mark{display:block;position:absolute;top:50%;left:50%;z-index:500;margin-top:-27px;margin-left:-27px;pointer-events:none;opacity:0}.filer-dropzone .dz-preview .dz-success-mark svg,.filer-dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.filer-dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.filer-dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.filer-dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.filer-dropzone .dz-preview .dz-progress{position:absolute;top:50%;left:50%;overflow:hidden;z-index:1000;width:80px;height:16px;margin-top:-8px;margin-left:-40px;border-radius:8px;pointer-events:none;opacity:1;background:hsla(0,0%,100%,.9)}.filer-dropzone .dz-preview .dz-progress .dz-upload{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--dca-gray-darkest, var(--body-fg, #333));background:linear-gradient(to bottom, var(--dca-gray, var(--body-quiet-color, #666)), var(--dca-gray-darkest, var(--body-fg, #333)));transition:width 300ms ease-in-out}.filer-dropzone .dz-preview.dz-error .dz-error-message{display:block}.filer-dropzone .dz-preview.dz-error:hover .dz-error-message{pointer-events:auto;opacity:1}.filer-dropzone .dz-preview .dz-error-message{display:block;display:none;position:absolute;top:130px;left:-10px;z-index:1000;color:var(--dca-white, var(--body-bg, #fff));font-size:13px;width:140px;padding:.5em 1.2em;border-radius:8px;pointer-events:none;opacity:0;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);transition:opacity .3s ease}.filer-dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #be2626;border-left:6px solid rgba(0,0,0,0)} \ No newline at end of file diff --git a/filer/static/filer/css/admin_filer.fa.icons.css b/filer/static/filer/css/admin_filer.fa.icons.css new file mode 100644 index 000000000..e99c3e677 --- /dev/null +++ b/filer/static/filer/css/admin_filer.fa.icons.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:"FontAwesome";src:url("../fonts/fontawesome-webfont.eot?v=4.4.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.4.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.4.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.4.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""} \ No newline at end of file diff --git a/filer/static/filer/css/admin_folderpermissions.css b/filer/static/filer/css/admin_folderpermissions.css new file mode 100644 index 000000000..7741fdc6f --- /dev/null +++ b/filer/static/filer/css/admin_folderpermissions.css @@ -0,0 +1,6 @@ +#id_folder { + width: calc(100% - 25px); +} +.field-folder .select2 { + min-width: 240px; +} diff --git a/filer/static/filer/css/maps/admin_filer.cms.icons.css.map b/filer/static/filer/css/maps/admin_filer.cms.icons.css.map new file mode 100644 index 000000000..ed4f8531f --- /dev/null +++ b/filer/static/filer/css/maps/admin_filer.cms.icons.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/_iconography.scss"],"names":[],"mappings":"AAIA,WACI,mCAAA,CACA,qDAAA,CACA,0WAAA,CAKA,kBAAA,CACA,iBAAA,CAGJ,YACI,oBAAA,CACA,iCAAA,CACA,iBAAA,CACA,mBAAA,CACA,aAAA,CACA,yBAAA,CACA,kCAAA,CACA,iCAAA,CAqDA,8BACI,eAAA,CADJ,8BACI,eAAA,CADJ,iCACI,eAAA,CADJ,4BACI,eAAA,CADJ,0BACI,eAAA,CADJ,wBACI,eAAA,CADJ,kCACI,eAAA,CADJ,2BACI,eAAA,CADJ,oCACI,eAAA,CADJ,0BACI,eAAA,CADJ,4BACI,eAAA,CADJ,2BACI,eAAA,CADJ,0BACI,eAAA","file":"../admin_filer.cms.icons.css","sourcesContent":["//######################################################################################################################\n// #ICONOGRAPHY#\n\n// default font file generated by gulp\n@font-face {\n font-family: \"django-filer-iconfont\";\n src: url(\"../fonts/django-filer-iconfont.eot?v=3.2.0\");\n src: url(\"../fonts/django-filer-iconfont.eot?v=3.2.0#iefix\") format(\"eot\"),\n url(\"../fonts/django-filer-iconfont.woff2?v=3.2.0\") format(\"woff2\"),\n url(\"../fonts/django-filer-iconfont.woff?v=3.2.0\") format(\"woff\"),\n url(\"../fonts/django-filer-iconfont.ttf?v=3.2.0\") format(\"truetype\"),\n url(\"../fonts/django-filer-iconfont.svg?v=3.2.0#django-filer-iconfont\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n%icon {\n display: inline-block;\n font-family: django-filer-iconfont;\n font-size: inherit;\n text-rendering: auto;\n line-height: 1;\n transform: translate(0, 0);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n@function icon-char($filename) {\n $char: \"\";\n\n @if $filename == arrow-down {\n $char: \"E001\";\n }\n @if $filename == caret-down {\n $char: \"E002\";\n }\n @if $filename == chevron-right {\n $char: \"E003\";\n }\n @if $filename == download {\n $char: \"E004\";\n }\n @if $filename == expand {\n $char: \"E005\";\n }\n @if $filename == link {\n $char: \"E006\";\n }\n @if $filename == move-to-folder {\n $char: \"E007\";\n }\n @if $filename == picture {\n $char: \"E008\";\n }\n @if $filename == remove-selection {\n $char: \"E009\";\n }\n @if $filename == select {\n $char: \"E00A\";\n }\n @if $filename == th-large {\n $char: \"E00B\";\n }\n @if $filename == th-list {\n $char: \"E00C\";\n }\n @if $filename == upload {\n $char: \"E00D\";\n }\n\n @return $char;\n}\n\n.filer-icon {\n @extend %icon;\n}\n@mixin icon($filename, $insert: before) {\n &:#{$insert} {\n content: #{\"\\\"\\\\\"}#{icon-char($filename) + \"\\\"\"};\n }\n}\n\n// #####################################################################################################################\n// #ICONS:start#\n// use unicode characters for accessibility reasons and use aria-hidden=\"true\" for decorative icons\n// DOCS: http://filamentgroup.com/lab/bulletproof_icon_fonts.html\n\n.filer-icon-arrow-down {\n @include icon(arrow-down);\n}\n\n.filer-icon-caret-down {\n @include icon(caret-down);\n}\n\n.filer-icon-chevron-right {\n @include icon(chevron-right);\n}\n\n.filer-icon-download {\n @include icon(download);\n}\n\n.filer-icon-expand {\n @include icon(expand);\n}\n\n.filer-icon-link {\n @include icon(link);\n}\n\n.filer-icon-move-to-folder {\n @include icon(move-to-folder);\n}\n\n.filer-icon-picture {\n @include icon(picture);\n}\n\n.filer-icon-remove-selection {\n @include icon(remove-selection);\n}\n\n.filer-icon-select {\n @include icon(select);\n}\n\n.filer-icon-th-large {\n @include icon(th-large);\n}\n\n.filer-icon-th-list {\n @include icon(th-list);\n}\n\n.filer-icon-upload {\n @include icon(upload);\n}\n"]} \ No newline at end of file diff --git a/filer/static/filer/css/maps/admin_filer.css.map b/filer/static/filer/css/maps/admin_filer.css.map new file mode 100644 index 000000000..39887dc9b --- /dev/null +++ b/filer/static/filer/css/maps/admin_filer.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["admin_filer.scss","components/_base.scss","settings/_custom.scss","components/_image-info.scss","mixins/_custom.scss","components/_action-list.scss","components/_filter-files.scss","components/_navigator.scss","components/_modal.scss","components/_drag-and-drop.scss","components/_tooltip.scss","libs/_dropzone.scss"],"names":[],"mappings":"AAAA;;EAAA,CCGA,UAEI,eAAA,CACA,sBAAA,CAGJ,WACI,eAAA,CAEJ,YACI,gBAAA,CAEJ,gBACI,UAAA,CACA,aAAA,CACA,UAAA,CAEJ,wBACI,qBAAA,CAEJ,uBACI,uBAAA,CAIJ,MACI,yBAAA,CACA,qEAAA,CAGJ,WACI,iBAAA,CAEA,cCLc,CDMd,qEAAA,CACA,iBAAA,CACA,kBAAA,CACA,gBAAA,CACA,mBAAA,CACA,qBAAA,CACA,iDCrCI,CDsCJ,gBAEI,cCfU,CDgBV,qEAAA,CAEJ,oBACI,WAAA,CAIR,yBACI,YAAA,CAEJ,uBACI,YAAA,CAKQ,iJAEI,wBAAA,CACA,yBAAA,CAEJ,yDACI,iBAAA,CACA,4BAAA,CAIZ,wBACI,cAAA,CACA,iCACI,SAAA,CACA,mCAAA,CAEJ,yGAEI,yBAAA,CAGR,8BACI,iBAAA,CACA,OAAA,CAGJ,gBACI,YAAA,CAEJ,2BACI,uDCxFA,CD4FR,cACI,UAAA,CAGJ,wBAEI,oBAAA,CACA,oBAAA,CAGJ,kBACI,YAAA,CACA,YAAA,CAEJ,aACI,WAAA,CACA,YAAA,CAGJ,iBACI,UAAA,CACA,gBAAA,CAGJ,kBACI,sBAAA,CACA,8BAAA,CACA,iBAAA,CAGJ,SACI,iBAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,eAAA,CACA,qBAAA,CACA,QAAA,CAGJ,QACI,uBAAA,CAGJ,gBACI,eAAA,CACA,yBAAA,CACA,iBAAA,CACA,uCAAA,CACA,uDC9II,CDiJR,8FAGI,cAAA,CACA,aAAA,CACA,YAAA,CAGJ,yBACI,uBAAA,CE7JJ,YACI,iBAAA,CACA,WAAA,CACA,qBAAA,CACA,SAAA,CACA,YAAA,CACA,QAAA,CACA,iBAAA,CACA,iDDLI,CCMJ,mCAAA,CACA,qDAEI,QAAA,CACA,SAAA,CACA,iFACI,aAAA,CACA,cAAA,CAEJ,2DACI,oBAAA,CAEJ,yDACI,cAAA,CAGR,8BAEI,eAAA,CACA,UAAA,CACA,UAAA,CACA,kBAAA,CACA,YAAA,CACA,eAAA,CC9BJ,yEAEI,WAAA,CACA,aAAA,CAEJ,oCACI,UAAA,CD0BA,0DACI,eAAA,CACA,iBAAA,CACA,8BAAA,CACA,iEACI,YAAA,CAGR,kDACI,UAAA,CAEJ,mDACI,UAAA,CACA,gBAAA,CAEJ,yFAEI,YAAA,CACA,mBAAA,CACA,qHACI,eAAA,CACA,kBAAA,CACA,SAAA,CAEJ,+FACI,UAAA,CACA,0DD3CE,CC4CF,cAAA,CAEA,2BAAA,CACA,kBAAA,CAEA,YAAA,CAEJ,+FACI,oDDvDE,CCwDF,cAAA,CAEA,2BAAA,CACA,iBAAA,CAEA,iBAAA,CAEJ,qGACI,cAAA,CACA,iBAAA,CACA,mHACI,cAAA,CAGR,+FACI,oDDvEE,CCwEF,yBAAA,CACA,6BAAA,CACA,wBAAA,CACA,mBAAA,CAEJ,6FACI,SAAA,CAGR,gDACI,eAAA,CACA,oDDnFM,CCoFN,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,sDACI,UAAA,CACA,gBAAA,CAGR,uDACI,eAAA,CACA,eAAA,CACA,SAAA,CACA,2DACI,kBAAA,CAIJ,kDACI,cAAA,CACA,6DACI,UAAA,CAKhB,qCA3HJ,YA4HQ,UAAA,CACA,UAAA,CAEI,qGAEI,UAAA,CACA,aAAA,CAAA,CAMhB,kBACI,iBAAA,CACA,SAAA,CACA,UAAA,CACA,cAAA,CACA,cAAA,CAGJ,kBACI,gBAAA,CACA,0EAAA,CACA,oBACI,eAAA,CAIR,yBACI,iBAAA,CACA,aAAA,CACA,cAAA,CACA,wCACI,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,uEAAA,CACA,8HAAA,CACA,4CACI,aAAA,CAGR,8CACI,iBAAA,CACA,KAAA,CACA,OAAA,CACA,QAAA,CACA,MAAA,CACA,eAAA,CAEJ,+CACI,iBAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CACA,6BAAA,CAEJ,8DACI,kBAAA,CACA,0EACI,YAAA,CAKZ,sBACI,iBAAA,CACA,iBAAA,CElMA,yBACI,aAAA,CACA,gBAAA,CAEJ,mCACI,oBAAA,CAEJ,oCACI,YAAA,CAEJ,oCACI,0EAAA,CACA,gDACI,YAAA,CAEJ,iDACI,oBAAA,CAIZ,cACI,uEAAA,CACA,yBACI,eAAA,CACA,2BACI,kBAAA,CAGR,gBACI,aAAA,CACA,cAAA,CACA,gBAAA,CACA,0EAAA,CAGA,gCACI,UAAA,CAEJ,+BACI,WAAA,CACA,cAAA,CAIZ,wBACI,oBAAA,CACA,QAAA,CACA,cAAA,CACA,qCAJJ,wBAKQ,UAAA,CACA,aAAA,CAAA,CAEJ,2BACI,oBAAA,CACA,gBAAA,CACA,qBAAA,CACA,cAAA,CACA,eAAA,CACA,qCACI,uCACI,cAAA,CAAA,CAGR,gCACI,qBAAA,CAEJ,6BACI,oDHtDM,CGyDd,oCACI,cAAA,CCvEJ,2CACI,eAAA,CAEJ,kDACI,iBAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,qCALJ,kDAMQ,eAAA,CAAA,CAGR,0CACI,iBAAA,CAEJ,uEACI,eAAA,CAIR,wBAEI,kBAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,eAAA,CACA,eAAA,CACA,YAAA,CF7BA,6DAEI,WAAA,CACA,aAAA,CAEJ,8BACI,UAAA,CEwBJ,qCAXJ,wBAYQ,aAAA,CACA,UAAA,CACA,cAAA,CACA,eAAA,CACA,6CACI,UAAA,CAAA,CAGR,kDACI,iBAAA,CACA,KAAA,CACA,OAAA,CAEI,0OAII,oBAAA,CACA,gBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAGR,uFACI,aAAA,CACA,uBAAA,CACA,0FACI,QAAA,CACA,SAAA,CACA,oBAAA,CAIZ,+CACI,iBAAA,CACA,UAAA,CACA,gBAAA,CACA,uBAAA,CACA,gBAAA,CACA,qCANJ,+CAOQ,UAAA,CAAA,CAEJ,8EACI,2BAAA,CACA,sBAAA,CAGR,6CACI,WAAA,CACA,iBAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,sBAAA,CACA,mDACI,iBAAA,CACA,QAAA,CACA,yBAAA,CACA,kBAAA,CAGR,4CACI,mDJ9EU,CI+EV,yBAAA,CACA,gBAAA,CACA,kBAAA,CACA,qBAAA,CACA,0BAAA,CACA,WAAA,CAEA,QAAA,CACA,gCAAA,CACA,YAAA,CACA,uBAAA,CAAA,oBAAA,CAAA,eAAA,CACA,0BAAA,CAEA,uDACI,YAAA,CAGR,6CACI,uBAAA,CACA,4BAAA,CAGR,qBACI,eAAA,CCvHI,sCACI,uBAAA,CAEJ,mGAEI,iFAAA,CAGR,oBACI,kEAAA,CAGR,mBACI,cAAA,CACA,6DAAA,CACA,gEAAA,CACA,mBAAA,CACA,WAAA,CACA,YAAA,CAEJ,6BACI,yDAAA,CAEJ,2DAGI,UAAA,CACA,QAAA,CACA,kFAAA,CACA,mCAAA,CACA,yPAGI,eAAA,CACA,kBAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,0EAAA,CACA,kCAAA,CACA,0BAAA,CAGA,uIACI,8DAAA,CAGR,8KAEI,2BAAA,CACA,uFAAA,CACA,oYAEI,+DAAA,CAGR,6FACI,iBAAA,CACA,UAAA,CACA,4BAAA,CACA,yGAEI,qBAAA,CACA,QAAA,CAGR,yFACI,8CL9DQ,CKgEZ,qFACI,UAAA,CAEA,wBAAA,CACA,2BAAA,CAEJ,yFACI,iBAAA,CACA,UAAA,CACA,kBAAA,CACA,6BAAA,CACA,6FACI,yBAAA,CACA,QAAA,CAEJ,uHHNJ,gCAAA,CACA,eAAA,CACA,kDAAA,CACA,8DAAA,CACA,oEAAA,CACA,gEAAA,CACA,2BAAA,CACA,uBAAA,CGCQ,UAAA,CACA,8BAAA,CHDR,yYAGI,8DAAA,CAEI,iFAAA,CACA,4DAAA,CAMJ,+BAAA,CAEJ,0RAEI,8DAAA,CACA,oEAAA,CACA,4DAAA,CACA,iEAAA,CAEA,yFAAA,CAEA,s5BAGI,8DAAA,CACA,oEAAA,CACA,4DAAA,CACA,iGAAA,CAGR,0RAEI,gCAAA,CAIA,w3DAMI,oEAAA,CACA,4DAAA,CAII,wDAAA,CACA,iCAAA,CAEJ,kBAAA,CACA,0BAAA,CACA,giEAIQ,wDAAA,CACA,iCAAA,CGzDR,iIACI,cAAA,CACA,gBAAA,CACA,qBAAA,CAIZ,+EACI,oDLpFU,CKqFV,cLtEW,CKuEX,iBAAA,CACA,yBAAA,CACA,iFAAA,CACA,yFACI,cAAA,CACA,iBAAA,CACA,uGACI,kBAAA,CAKR,+FACI,iBAAA,CACA,2EAAA,CACA,gCAAA,CACA,mGAKI,yDAAA,CAJA,6GACI,8DAAA,CACA,kEAAA,CAMhB,uFACI,iBAAA,CACA,6HACI,uBAAA,CAEJ,6FACI,2EAAA,CACA,gCAAA,CAKJ,oLACI,kEAAA,CAGA,gPACI,2EAAA,CAKhB,mBACI,iBAAA,CACA,UAAA,CACA,eAAA,CACA,iBAAA,CACA,sELnIe,CKoIf,0EAAA,CACA,kDACI,aAAA,CACA,UAAA,CACA,qCAHJ,kDAIQ,aAAA,CAAA,CAGR,gDACI,aAAA,CACA,kBAAA,CACA,UAAA,CACA,0EACI,kBAAA,CACA,UAAA,CACA,WAAA,CACA,qBAAA,CACA,+EACI,gBAAA,CACA,WAAA,CACA,qBAAA,CAIZ,0CACI,kBAAA,CACA,qBAAA,CACA,qCAHJ,0CAIQ,eAAA,CACA,iBAAA,CAAA,CAGR,oCAEI,kBAAA,CACA,qBAAA,CACA,gBAAA,CACA,cAAA,CH5LJ,qFAEI,WAAA,CACA,aAAA,CAEJ,0CACI,UAAA,CGuLA,qCANJ,oCAOQ,cAAA,CACA,eAAA,CAAA,CAGR,+BACI,oBAAA,CACA,oDLxLU,CKyLV,cAAA,CACA,gBAAA,CACA,kBAAA,CACA,aAAA,CACA,oCACI,qBAAA,CAGR,sCACI,iBAAA,CACA,QAAA,CAEJ,oCACI,QAAA,CACA,cAAA,CAEJ,8BACI,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,SAAA,CACA,WAAA,CACA,YAAA,CACA,qCACI,UAAA,CACA,aAAA,CACA,iBAAA,CACA,SAAA,CACA,YAAA,CACA,eAAA,CACA,SAAA,CACA,mELtNM,CK2Nd,8dASI,oBAAA,CACA,eAAA,CACA,unBACI,kBAAA,CACA,aAAA,CACA,eAAA,CACA,8vBACI,cAAA,CAIZ,gDACI,eAAA,CAEJ,mEACI,kBAAA,CACA,4GACI,uBAAA,CAGR,6EACG,+BAAA,CAEH,uCACI,kBAAA,CAEJ,8CACI,UAAA,CACA,eAAA,CACA,YAAA,CAEJ,6CACI,cAAA,CAEJ,mDACI,qBAAA,CAEJ,iEACI,UAAA,CACA,uBAAA,CAIR,iBAEI,kBAAA,CH/RA,+CAEI,WAAA,CACA,aAAA,CAEJ,uBACI,UAAA,CG0RJ,qCAHJ,iBAIQ,cAAA,CAAA,CAEJ,kCACI,oBAAA,CACA,eAAA,CACA,gBAAA,CACA,8EACI,qEAAA,CACA,kBAAA,CAEJ,qCARJ,kCAUQ,UAAA,CACA,aAAA,CH9SR,iFAEI,WAAA,CACA,aAAA,CAEJ,wCACI,UAAA,CAAA,CG2SI,oDACI,+DAAA,CACA,cAAA,CAEJ,0EACI,oBAAA,CAGR,oEACI,wEAAA,CACA,aAAA,CAGR,0BACI,YAAA,CACA,WAAA,CACA,qCAHJ,0BAKQ,UAAA,CACA,kBAAA,CHpUR,iEAEI,WAAA,CACA,aAAA,CAEJ,gCACI,UAAA,CAAA,CGgUA,8IAII,cLhTM,CKiTN,gBAAA,CACA,uBAAA,CAEJ,yEAEI,0DLjUM,CKmUV,qEAEI,gBAAA,CACA,iBAAA,CACA,wEAAA,CAGR,mDACI,oBAAA,CACA,gBAAA,CAIR,qCAEQ,0CACI,UAAA,CAEJ,oCACI,UAAA,CACA,sDACI,KAAA,CACA,QAAA,CAAA,CAMhB,0BACI,oBAAA,CACA,kBAAA,CACA,gBAAA,CACA,eAAA,CACA,gBAAA,CACA,qCANJ,0BAOQ,aAAA,CACA,UAAA,CACA,eAAA,CACA,YAAA,CACA,aAAA,CAAA,CAGR,kBACI,iBAAA,CACA,kGHhTA,gCAAA,CACA,eAAA,CACA,kDAAA,CACA,yDAAA,CACA,oEAAA,CACA,oEAAA,CACA,2BAAA,CACA,uBAAA,CG8SI,oBAAA,CACA,kBAAA,CACA,4BAAA,CH/SJ,8WAGI,yDAAA,CAKI,oEAAA,CACA,gEAAA,CACA,8BAAA,CAEJ,+BAAA,CAEJ,4RAEI,yDAAA,CACA,oEAAA,CACA,gEAAA,CACA,iEAAA,CAEA,yFAAA,CAEA,o+BAGI,yDAAA,CACA,oEAAA,CACA,gEAAA,CACA,iGAAA,CAGR,4RAEI,gCAAA,CAIA,gmEAMI,oEAAA,CACA,gEAAA,CAII,mDAAA,CACA,iCAAA,CAEJ,kBAAA,CACA,0BAAA,CACA,g7EAIQ,mDAAA,CACA,iCAAA,CGsPhB,wBACI,iBAAA,CACA,gBAAA,CAEJ,6BACI,KAAA,CAEJ,0CACI,cAAA,CAIR,wBACI,oBAAA,CAEJ,uCACI,eAAA,CAGJ,WACI,iBAAA,CACA,eAAA,CACA,UAAA,CACA,gBACI,QAAA,CACA,SAAA,CACA,eAAA,CAIR,0BACI,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wFACI,cAAA,CAEJ,8FAEI,YAAA,CACA,OAAA,CACA,SAAA,CACA,QAAA,CACA,qCLjXU,CKkXV,wGACI,aAAA,CACA,8CLhbI,CKibJ,kBAAA,CACA,kBAAA,CACA,4BAAA,CACA,qCANJ,wGAOQ,kBAAA,CAAA,CAGR,0GACI,aAAA,CACA,2BAAA,CACA,mBAAA,CACA,UAAA,CACA,uBAAA,CACA,yBAAA,CAEJ,0GACI,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,gBAAA,CAEJ,4JACI,OAAA,CACA,eAAA,CACA,YAAA,CACA,QAAA,CACA,qCL/YM,CKgZN,0KACI,YAAA,CAEJ,gLACI,iBAAA,CACA,QAAA,CACA,UAAA,CACA,oDL5cE,CK6cF,cAAA,CACA,4LACI,8CLtdJ,CKydJ,gKACI,qEAAA,CACA,kBAAA,CACA,wBAAA,CACA,iBAAA,CAEJ,wKACI,+DAAA,CACA,kBAAA,CACA,oBAAA,CACA,uBAAA,CACA,oLACI,aAAA,CAIZ,8GACI,uDAAA,CACA,8DAAA,CAGR,oDACI,aAAA,CACA,uDACI,QAAA,CACA,SAAA,CACA,oBAAA,CAGR,qCACI,iBAAA,CAKA,8JAII,oDLzfM,CK0fN,cAAA,CACA,gBAAA,CACA,WAAA,CACA,cAAA,CAGR,oDACI,UAAA,CACA,UAAA,CACA,iBAAA,CAIR,qBACI,iBAAA,CACA,QAAA,CACA,YAAA,CACA,YAAA,CACA,UAAA,CACA,eAAA,CACA,cAAA,CACA,uBAAA,CACA,SAAA,CACA,eAAA,CACA,cAAA,CACA,eAAA,CACA,uDL/hBI,CKgiBJ,iBAAA,CACA,2BAAA,CACA,4BACI,iBAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,gBAAA,CACA,uBAAA,CACA,uDL5iBA,CK8iBJ,iDACI,SAAA,CACA,UAAA,CAIR,uBAEI,kBAAA,CACA,qBAAA,CACA,cAAA,CACA,kBAAA,CACA,UAAA,CH3jBA,2DAEI,WAAA,CACA,aAAA,CAEJ,6BACI,UAAA,CGsjBJ,yBACI,8DAAA,CAEJ,6BACI,0DLjjBU,CKkjBV,gBAAA,CACA,WAAA,CACA,YAAA,CACA,oCACI,qBAAA,CAGR,0BACI,oBAAA,CAGR,2CACI,kBAAA,CACA,eAAA,CACA,cAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CAEJ,mCACI,aAAA,CACA,eAAA,CACA,kBAAA,CACA,gBAAA,CACA,UAAA,CACA,WAAA,CAEJ,yCACI,aAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,WAAA,CACA,UAAA,CACA,sBAAA,CAEJ,gDACI,iBAAA,CACA,UAAA,CACA,qBAAA,CACA,gBAAA,CACA,sDACI,aAAA,CAEJ,gFACI,qBAAA,CACA,eAAA,CACA,SAAA,CACA,YAAA,CACA,QAAA,CACA,qCLljBU,CKmjBV,mFACI,SAAA,CACA,qFACI,8CLlnBA,CKmnBA,gCAAA,CACA,6EAAA,CACA,2FACI,uDAAA,CACA,8DAAA,CAGR,gGACI,kBAAA,CAGR,oFACI,iBAAA,CACA,QAAA,CACA,kBAAA,CACA,iBAAA,CAKZ,6BACI,iBAAA,CACA,SAAA,CACA,eAAA,CACA,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,mCACI,UAAA,CACA,iBAAA,CACA,QAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,uBAAA,CACA,qCL5lBU,CKgmBlB,6CACI,aAAA,CACA,eAAA,CACA,kEACI,SAAA,CACA,WAAA,CACA,yEACI,UAAA,CACA,SAAA,CAGR,+CACI,oBAAA,CAIR,yBACI,kBAAA,CACA,qBAAA,CAGJ,uCACI,eAAA,CACA,uDACI,uBAAA,CAGA,0EACI,oBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,iBAAA,CAEJ,4FACI,WAAA,CACA,kBAAA,CACA,sBAAA,CACA,8CLlsBI,CKmsBJ,iHACE,eAAA,CACA,qBAAA,CAIV,uDAEI,oBAAA,CHhtBJ,2HAEI,WAAA,CACA,aAAA,CAEJ,6DACI,UAAA,CG4sBJ,uDACI,UAAA,CACA,oBAAA,CACA,YAAA,CACA,8CAAA,CACA,+CAAA,CACA,mEAAA,CACA,gBAAA,CACA,uDLztBA,CK0tBA,iBAAA,CACA,eAAA,CACA,gFACI,YAAA,CACA,8CAAA,CACA,+CAAA,CACA,mEAAA,CACA,gBAAA,CACA,uDLluBJ,CKmuBI,sFACI,wBAAA,CAGR,2EACI,iBAAA,CACA,OAAA,CACA,QAAA,CACA,iFACG,QAAA,CACA,kBAAA,CAGP,yIAEI,UAAA,CACA,SAAA,CACA,gBAAA,CACA,kBAAA,CACA,6IACI,aAAA,CACA,WAAA,CACA,UAAA,CAEJ,iJACI,UAAA,CACA,WAAA,CAGR,kEACI,wBAAA,CACA,iBAAA,CACA,qBAAA,CAGR,+DACI,wBAAA,CAGA,oEACI,wBAAA,CAGR,4DACI,UAAA,CACA,+CAAA,CACA,gDAAA,CACA,QAAA,CACA,SAAA,CACA,8BAAA,CACA,qFACI,UAAA,CACA,QAAA,CACA,iBAAA,CAEJ,4EACI,QAAA,CACA,WAAA,CACA,UAAA,CAEJ,uEACI,iBAAA,CACA,qBAAA,CAMR,yBACI,qBAAA,CAEJ,uBACI,cAAA,CC5yBA,sPAII,qBAAA,CACA,yBAAA,CACA,0BAAA,CACA,sSACI,uBAAA,CAEJ,8QACI,qBAAA,CAIJ,qIAEI,eAAA,CAIZ,oCAEI,6BAAA,CAEJ,0BACI,SAAA,CACA,mBAAA,CACA,kBAAA,CACA,eAAA,CACA,0EAAA,CAGA,0GAGI,WAAA,CAGR,uBACI,gBAAA,CAEJ,iDACI,OAAA,CAEJ,uCACI,mBAAA,CAEJ,iCACI,WAAA,CACA,qCAFJ,iCAGQ,UAAA,CAAA,CAIJ,2CACI,SAAA,CAEJ,iDACI,SAAA,CAIA,qCAFJ,4FAGQ,UAAA,CAAA,CC5DR,iSACI,YAAA,CAGR,sHAEI,YAAA,CAEJ,0EACI,UAAA,CAEJ,+BAEI,iBAAA,CACA,eAAA,CACA,mEAAA,CACA,wCPca,CObb,sEPRU,COSV,gCAAA,CLtBJ,2EAEI,WAAA,CACA,aAAA,CAEJ,qCACI,UAAA,CKiBA,4CACI,iBAAA,CACA,KAAA,CACA,OAAA,CACA,QAAA,CACA,MAAA,CAEJ,6CACI,yDP1BI,CO2BJ,sBAAA,CACA,oEAAA,CACA,0DACI,SAAA,CAEJ,yDACI,SAAA,CACA,wBAAA,CACA,kBAAA,CAEJ,wDACI,YAAA,CAEJ,wHACI,yDAAA,CAGR,sDACI,YAAA,CAEJ,2CACI,UAAA,CACA,eAAA,CACA,cAAA,CACA,eAAA,CACA,aAAA,CACA,mBAAA,CACA,0EAAA,CACA,oDACI,iBAAA,CACA,sEACI,YAAA,CAEJ,4EACI,aAAA,CAGR,uDACI,2BAAA,CACA,2BAAA,CACA,cAAA,CACA,gBAAA,CACA,SAAA,CACA,SAAA,CACA,8MAGI,UAAA,CACA,eAAA,CACA,6NACI,oDPtEN,COuEM,mBAAA,CACA,yCAAA,CAIZ,sDACI,gmBAAA,CACA,uBAAA,CACA,oBAAA,CACA,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CAEJ,6DACI,QAAA,CACA,MAAA,CACA,UAAA,CAEJ,sHAEI,OAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,oIACI,oDPnGF,COqGF,8HACI,YAAA,CAGR,4DAEI,UAAA,CACA,WAAA,CACA,2eAAA,CACA,uBAAA,CAEJ,0DAEI,umBAAA,CACA,UAAA,CACA,WAAA,CACA,uBAAA,CAEJ,uHAEI,8BAAA,CACA,2IACI,eAAA,CACA,UAAA,CACA,WAAA,CACA,mEAAA,CACA,eAAA,CACA,mJACI,UAAA,CACA,WAAA,CAIZ,wDACI,QAAA,CACA,MAAA,CACA,uBAAA,CACA,WAAA,CACA,gBAAA,CAGR,2CACI,WAAA,CACA,2DP/IM,COgJN,UAAA,CACA,eAAA,CAEJ,qCACI,iBAAA,CACA,OAAA,CACA,2DPtJM,COuJN,cAAA,CACA,iBAAA,CAEJ,0DLzFJ,gCAAA,CACA,eAAA,CACA,kDAAA,CACA,yDAAA,CACA,oEAAA,CACA,oEAAA,CACA,2BAAA,CACA,uBAAA,CKoFQ,qBAAA,CACA,eAAA,CAEA,gBPjJO,COkJP,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,eAAA,CACA,gBAAA,CACA,4BAAA,CACA,cAAA,CL7FR,gMAGI,yDAAA,CAKI,oEAAA,CACA,gEAAA,CACA,8BAAA,CAEJ,+BAAA,CAEJ,0IAEI,yDAAA,CACA,oEAAA,CACA,gEAAA,CACA,iEAAA,CAEA,yFAAA,CAEA,kcAGI,yDAAA,CACA,oEAAA,CACA,gEAAA,CACA,iGAAA,CAGR,0IAEI,gCAAA,CAIA,06BAMI,oEAAA,CACA,gEAAA,CAII,mDAAA,CACA,iCAAA,CAEJ,kBAAA,CACA,0BAAA,CACA,8/BAIQ,mDAAA,CACA,iCAAA,CKmCR,oEACI,4CPpLR,COqLQ,cAAA,CACA,iBAAA,CACA,qBAAA,CAEJ,iEACI,YAAA,CAEJ,oNAGI,4CP/LR,COgMQ,QAAA,CAEJ,wEACI,YAAA,CAEJ,+DACI,YAAA,CAEJ,gFL3HR,gCAAA,CACA,eAAA,CACA,kDAAA,CACA,8DAAA,CACA,oEAAA,CACA,gEAAA,CACA,2BAAA,CACA,uBAAA,CKsHY,sBAAA,CACA,wBAAA,CACA,qBAAA,CACA,sBAAA,CLxHZ,kQAGI,8DAAA,CAEI,iFAAA,CACA,4DAAA,CAMJ,+BAAA,CAEJ,sLAEI,8DAAA,CACA,oEAAA,CACA,4DAAA,CACA,iEAAA,CAEA,yFAAA,CAEA,skBAGI,8DAAA,CACA,oEAAA,CACA,4DAAA,CACA,iGAAA,CAGR,sLAEI,gCAAA,CAIA,krCAMI,oEAAA,CACA,4DAAA,CAII,wDAAA,CACA,iCAAA,CAEJ,kBAAA,CACA,0BAAA,CACA,swCAIQ,wDAAA,CACA,iCAAA,CK8DJ,sFACI,kEAAA,CAEJ,qFACI,iBAAA,CACA,gBAAA,CAEJ,0FACI,mDPlKA,COmKA,yBAAA,CAEJ,6FACI,YAAA,CAEJ,8FACI,aAAA,CAEJ,uFACI,wBAAA,CAEJ,qFACI,aAAA,CAKZ,6CACI,qBAAA,CACA,sBAAA,CACA,SPpOG,COsOP,0CACI,iBAAA,CACA,OAAA,CAEA,SAAA,CACA,uBAAA,CACA,2DACI,uDPpPR,COuPI,gHACI,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,gBAAA,CAGJ,8CACI,UAAA,CACA,WAAA,CACA,iBAAA,CACA,mEAAA,CACA,wCPpOK,COqOL,kBAAA,CACA,2DACI,qBAAA,CACA,cAAA,CACA,mEAAA,CACA,wCP1OC,CO8OT,4CACI,qBAAA,CACA,2BAAA,CAGJ,+CACI,oBAAA,CACA,oDP3QE,CO4QF,kBAAA,CACA,iBAAA,CACA,eAAA,CACA,qEACI,qBAAA,CACA,wBAAA,CAIR,yDLnNR,gCAAA,CACA,eAAA,CACA,kDAAA,CACA,8DAAA,CACA,oEAAA,CACA,gEAAA,CACA,2BAAA,CACA,uBAAA,CK8MY,WAAA,CACA,wBAAA,CACA,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,cAAA,CLnNZ,6LAGI,8DAAA,CAEI,iFAAA,CACA,4DAAA,CAMJ,+BAAA,CAEJ,wIAEI,8DAAA,CACA,oEAAA,CACA,4DAAA,CACA,iEAAA,CAEA,yFAAA,CAEA,4bAGI,8DAAA,CACA,oEAAA,CACA,4DAAA,CACA,iGAAA,CAGR,wIAEI,gCAAA,CAIA,85BAMI,oEAAA,CACA,4DAAA,CAII,wDAAA,CACA,iCAAA,CAEJ,kBAAA,CACA,0BAAA,CACA,k/BAIQ,wDAAA,CACA,iCAAA,CKyJJ,qEACI,oBAAA,CAEJ,8DACI,iBAAA,CACA,gBAAA,CAMR,gEACI,iBAAA,CAEJ,iEACI,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,eAAA,CAEJ,mFACI,iBAAA,CAEI,qCACI,sHACI,sBAAA,CACA,wBAAA,CACA,eAAA,CAAA,CAGR,2QACI,wBAAA,CAMhB,gEACI,OAAA,CACA,2FACI,UAAA,CAIR,yBAxUJ,+BAyUQ,WAAA,CAAA,CAMZ,gBACI,2BAAA,CACA,2BACI,UAAA,CACA,yDP7VQ,CO+VZ,yBACI,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,4BAAA,CAEJ,8BACI,oBAAA,CACA,eAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,mEAAA,CACA,iBAAA,CACA,kaAAA,CACA,uBAAA,CACA,kCACI,iDPrXJ,COsXI,uFAEI,UAAA,CACA,WAAA,CACA,UAAA,CAMhB,6BACI,cAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,eAAA,CACA,uBAAA,CACA,mBAAA,CACA,wCP1WiB,CO2WjB,iDP5YI,CO6YJ,mCP9Uc,CO+Ud,mCACI,cAAA,CACA,8CP5YQ,CO8YZ,mCACI,iBAAA,CAGR,4BACI,eAAA,CAEA,sDACI,eAAA,CACA,kBAAA,CACA,sBAAA,CAEJ,kCACI,YAAA,CAGR,yBACI,UAAA,CACA,cAAA,CACA,yDPjaY,COoahB,uCACI,8CPraY,COsaZ,gBAAA,CACA,cAAA,CACA,uEAAA,CACA,uFAEI,qBAAA,CAEJ,2CACI,gBAAA,CAEJ,qDACI,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAIR,uBACI,gBAAA,CACA,uEAAA,CACA,sBAAA,CACA,yBACI,cPxaU,COyaV,+DAAA,CAGR,+DAEI,mBAAA,CAGJ,6BACI,mBAAA,CACA,iBAAA,CACA,0EAAA,CCndJ,uBACI,iBAAA,CAGJ,eACI,iBAAA,CACA,UAAA,CACA,WAAA,CACA,oDRSc,CQRd,iBAAA,CACA,yBAAA,CACA,2BAAA,CACA,kBAAA,CACA,cAAA,CACA,YAAA,CACA,uDRTI,CQUJ,mCAAA,CACA,iBAAA,CACA,UAAA,CACA,cAAA,CACA,sBACI,iBAAA,CACA,QAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CACA,SAAA,CACA,UAAA,CACA,gBAAA,CACA,uBAAA,CACA,uDRxBA,CQ4BR,sBACI,YAAA,CACA,YAAA,CChCJ,2BACI,GACI,SAAA,CACA,0BAAA,CAEJ,QAEI,SAAA,CACA,uBAAA,CAEJ,KACI,SAAA,CACA,2BAAA,CAAA,CAGR,oBACI,GACI,SAAA,CACA,0BAAA,CAEJ,IACI,SAAA,CACA,uBAAA,CAAA,CAGR,iBACI,GACI,kBAAA,CAEJ,IACI,oBAAA,CAEJ,IACI,kBAAA,CAAA,CAGR,kCAEI,qBAAA,CAGJ,gBACI,gBAAA,CACA,iBAAA,CACA,+BAAA,CACA,eAAA,CAEJ,6BACI,cAAA,CAEJ,+BACI,cAAA,CAEJ,oFAEI,cAAA,CAEJ,8BACI,kBAAA,CAEJ,0CACI,UAAA,CAEJ,4BACI,iBAAA,CACA,YAAA,CAEJ,4BACI,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,gBAAA,CACA,WAAA,CAEJ,kCACI,YAAA,CAEJ,8CACI,SAAA,CAEJ,sDACI,kBAAA,CACA,+DTlEc,CSmEd,gJAAA,CAEJ,wDACI,SAAA,CAEJ,6CACI,eAAA,CAEJ,yDACI,6BAAA,CAEJ,uCACI,aAAA,CACA,cAAA,CACA,iBAAA,CACA,WAAA,CACA,cAAA,CAEJ,6CACI,yBAAA,CAEJ,8CACI,SAAA,CAEJ,wCACI,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,oBAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,cAAA,CACA,cAAA,CACA,eAAA,CACA,SAAA,CAEJ,iDACI,cAAA,CACA,iBAAA,CAEJ,qDACI,kBAAA,CAEJ,gEACI,qCAAA,CACA,mCAAA,CAEJ,iEACI,eAAA,CACA,sBAAA,CAEJ,sEACI,8BAAA,CAEJ,gHAEI,cAAA,CACA,iBAAA,CACA,mCAAA,CAEJ,gDACI,2BAAA,CAEA,gBAAA,CAEJ,sCACI,aAAA,CACA,iBAAA,CACA,eAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,kBAAA,CAEJ,0CACI,aAAA,CAEJ,wDACI,4DAAA,CAEJ,oDACI,SAAA,CACA,qDAAA,CAEJ,wFAEI,aAAA,CACA,iBAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,gBAAA,CACA,iBAAA,CACA,mBAAA,CACA,SAAA,CAEJ,gGAEI,aAAA,CACA,UAAA,CACA,WAAA,CAEJ,uDACI,SAAA,CACA,yBAAA,CAEJ,qDACI,SAAA,CACA,8BAAA,CAEJ,6DACI,gCAAA,CAEJ,yCACI,iBAAA,CACA,OAAA,CACA,QAAA,CACA,eAAA,CACA,YAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,iBAAA,CACA,iBAAA,CACA,mBAAA,CACA,SAAA,CACA,6BAAA,CAEJ,oDACI,iBAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,wDTzMc,CS0Md,oIAAA,CACA,kCAAA,CAEJ,uDACI,aAAA,CAEJ,6DACI,mBAAA,CACA,SAAA,CAEJ,8CACI,aAAA,CACA,YAAA,CACA,iBAAA,CACA,SAAA,CACA,UAAA,CACA,YAAA,CACA,4CT3OI,CS4OJ,cAAA,CACA,WAAA,CACA,kBAAA,CACA,iBAAA,CACA,mBAAA,CACA,SAAA,CACA,kBAAA,CACA,uDAAA,CACA,2BAAA,CAEJ,oDACI,UAAA,CACA,iBAAA,CACA,QAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,oCAAA,CACA,+BAAA,CACA,mCAAA","file":"../admin_filer.css","sourcesContent":["/*!\n * @copyright: https://github.com/divio/django-filer\n */\n\n//##############################################################################\n// IMPORT SETTINGS\n@import \"settings/all\";\n@import \"mixins/all\";\n\n//##############################################################################\n// IMPORT COMPONENTS\n@import \"components/base\";\n@import \"components/image-info\";\n@import \"components/action-list\";\n@import \"components/filter-files\";\n@import \"components/navigator\";\n@import \"components/modal\";\n@import \"components/drag-and-drop\";\n@import \"components/tooltip\";\n\n//##############################################################################\n// IMPORT LIBS\n@import \"libs/dropzone\";\n","//##############################################################################\n// BASE\n\nhtml,\nbody {\n min-width: 320px;\n height: 100% !important;\n}\n\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.clearfix:after {\n content: \"\";\n display: table;\n clear: both;\n}\n.related-widget-wrapper {\n float: none !important;\n}\n.related-lookup.hidden {\n display: none !important;\n}\n\n// make sure that tiny styles like on size info has correct font size and color #666\n.tiny {\n font-size: $font-size-small !important;\n color: $gray-light !important;\n}\n\n.nav-pages {\n position: relative;\n // make sure that paginator has correct font size and color #666\n font-size: $font-size-small;\n color: $gray-light !important;\n padding-left: 10px;\n padding-right: 20px;\n padding-top: 15px;\n padding-bottom: 15px;\n box-sizing: border-box;\n background: $white;\n span {\n // make sure that paginator has correct font size and color #666\n font-size: $font-size-small;\n color: $gray-light !important;\n }\n .actions {\n float: right;\n }\n}\n\n#id_upload_button:before {\n display: none;\n}\n#content #content-main {\n margin-top: 0;\n}\n.filebrowser {\n &.cms-admin-sideframe {\n #container {\n .breadcrumbs + #content,\n .breadcrumbs + .messagelist + #content {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .breadcrumbs {\n left: 0 !important;\n padding-left: 20px !important;\n }\n }\n }\n #container {\n min-width: auto;\n #content {\n padding: 0;\n box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);\n }\n .breadcrumbs + #content,\n .breadcrumbs + .messagelist + #content {\n margin-left: 3% !important;\n }\n }\n h1.folder_header {\n position: relative;\n top: 6px;\n }\n // required for django CMS <= 3.1 #673\n h2 {\n display: none;\n }\n #content-main {\n background-color: $white;\n }\n}\n\n.filer-widget {\n width: 100%;\n}\n\n.field-file,\n.field-sha1 {\n word-wrap: break-word;\n word-break: break-all;\n}\n\n.well.img-preview {\n display: none;\n margin-top: 0;\n}\n.img-wrapper {\n width: 180px;\n height: 180px;\n}\n\n.file-duplicates {\n clear: both;\n padding: 20px 0 0;\n}\n\nform .cancel-link {\n height: auto !important;\n line-height: inherit !important;\n padding: 10px 15px;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n.hidden {\n display: none !important;\n}\n\n.filer-info-bar {\n min-height: 15px;\n margin: 0 0 2px !important;\n padding: 15px 20px;\n box-shadow: 0 0 10px -2px rgba(black, 0.2);\n background-color: $white;\n}\n\n.navigator .actions span.all,\n.navigator .actions span.clear,\n.navigator .actions span.question {\n font-size: 13px;\n margin: 0 0.5em;\n display: none;\n}\n\n#all-items-action-toggle {\n display: none !important;\n}\n","// #############################################################################\n// SETTINGS\n\n$speed-base: 200ms;\n\n// COLORS\n$white: var(--dca-white, var(--body-bg, #fff));\n$black: var(--dca-black, var(--body-fg, #000));\n$shadow-black: #000;\n\n$color-primary: var(--dca-primary, var(--primary, #0bf));\n// $color-primary-light: #f1faff;\n$color-success: #693;\n$color-danger: #f00;\n$color-warning: #c93;\n\n// COLORS gray\n$gray: var(--dca-gray, var(--body-quiet-color, #666)); // #666;\n$gray-lightest: var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)); // #f2f2f2\n$gray-lighter: var(--dca-gray-lighter, var(--border-color, #ddd)); // #ddd\n$gray-light: var(--dca-gray-light, var(--body-quiet-color, #999)); // #999\n$gray-darker: var(--dca-gray-darker, #454545); // #454545\n$gray-darkest: var(--dca-gray-darkest, var(--body-fg, #333)); // #333\n\n$gray-super-light: var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7));\n$gray-dropzone: $gray-lightest;\n\n$hover-bg: $gray-lightest;\n\n//##############################################################################\n// BASE Variables\n$font-size-small: 12px;\n$font-size-normal: 14px;\n$font-size-large: 16px;\n\n$icon-size: 16px;\n\n$line-height-normal: 20px;\n\n$border-radius-base: var(--dca-btn-radius, 3px);\n$border-radius-normal: var(--dca-border-radius, 5px);\n\n$padding-base: 3px;\n$padding-normal: 10px;\n$padding-large: 20px;\n\n$screen-mobile: 320px;\n$screen-tablet: 720px;\n$screen-desktop: 975px;\n\n$screen-tablet-filer: 810px;\n\n//##############################################################################\n// BUTTONS\n\n$btn-border-radius-base: var(--button-radius, 3px);\n$btn-active-shadow: inset 0 3px 5px rgba($black, 0.125);\n\n$btn-default-color: var(--dca-gray-light, var(--button-fg, #999));\n$btn-default-bgcolor: var(--dca-white, var(--button-bg, #fff));\n$btn-default-border: var(--dca-gray-lighter, transparent);\n\n$btn-action-color: var(--dca-white, var(--button-fg, #fff));\n$btn-action-bgcolor: $color-primary;\n$btn-action-border: $color-primary;\n\n//##############################################################################\n// #SHADOW\n\n$base-box-shadow: 0 0 5px 0 rgba($shadow-black, 0.2);\n$dropdown-shadow: 0 1px 10px rgba($shadow-black, 0.25);\n","//##############################################################################\n// IMAGE INFO\n\n.image-info {\n position: relative;\n float: right;\n box-sizing: border-box;\n width: 28%;\n margin-top: 0;\n border: 0;\n border-radius: 3px;\n background: $white;\n box-shadow: 0 0 5px 0 rgba(black,0.2);\n .image-details,\n .actions-list {\n margin: 0;\n padding: 0;\n &.image-details {\n margin: 10px 0;\n padding: 0 10px;\n }\n li {\n list-style-type: none;\n }\n a {\n cursor: pointer;\n }\n }\n &.image-info-detail {\n @include clearfix();\n position: static;\n float: none;\n width: 100%;\n margin-bottom: 20px;\n padding: 25px;\n border-radius: 0;\n // removes background color and shadow from object tools and fixes placement on image detail page\n + #content-main .object-tools {\n margin-top: 20px;\n margin-right: 20px;\n background-color: transparent;\n &:before {\n display: none;\n }\n }\n .image-details-left {\n float: left;\n }\n .image-details-right {\n float: left;\n margin-left: 50px;\n }\n .image-details,\n .actions-list {\n margin-top: 0;\n border: 0 !important;\n &.image-details {\n margin-top: 20px;\n margin-bottom: 15px;\n padding: 0;\n }\n dt {\n float: left;\n color: $gray-light;\n font-size: 13px;\n // required for django CMS without admin styles #673\n line-height: 1rem !important;\n font-weight: normal;\n // required for django CMS without admin styles #673\n margin-top: 0;\n }\n dd {\n color: $gray;\n font-size: 13px;\n // required for django CMS without admin styles #673\n line-height: $font-size-large !important;\n padding-left: 80px;\n // required for django CMS without admin styles #673\n margin-bottom: 5px;\n }\n .text {\n font-size: 13px;\n margin-right: 15px;\n strong {\n font-size: 13px;\n }\n }\n li {\n color: $gray;\n font-size: 13px !important;\n font-weight: normal !important;\n padding: 1px 0 !important;\n border: 0 !important;\n }\n a {\n padding: 0;\n }\n }\n .image-info-title {\n overflow: hidden;\n color: $gray;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding: 0 0 5px;\n .icon {\n float: left;\n margin-right: 5px;\n }\n }\n .image-preview-container {\n text-align: left;\n margin: 20px 0 0;\n padding: 0;\n > img {\n margin-bottom: 15px;\n }\n }\n .actions-list {\n .icon {\n font-size: 16px;\n &:last-child {\n float: none;\n }\n }\n }\n }\n @media screen and (max-width: $screen-tablet) {\n float: none;\n width: 100%;\n &.image-info-detail {\n .image-details-left,\n .image-details-right {\n float: none;\n margin-left: 0;\n }\n }\n }\n}\n\n.image-info-close {\n position: absolute;\n top: -10px;\n right: -7px;\n font-size: 20px;\n cursor: pointer;\n}\n\n.image-info-title {\n padding: 5px 10px;\n border-bottom: solid 1px $gray-lighter;\n a {\n margin-left: 5px;\n }\n}\n\n.image-preview-container {\n text-align: center;\n margin: 10px 0;\n padding: 0 10px;\n .image-preview {\n display: inline-block;\n position: relative;\n margin-bottom: 15px;\n outline: 1px solid $gray-lightest;\n background-image: url(\"data:image/gif;base64,R0lGODlhCAAIAKECAOPj4/z8/P///////yH5BAEKAAIALAAAAAAIAAgAAAINhBEZh8q6DoTPSWvoKQA7\");\n img {\n display: block;\n }\n }\n .image-preview-field {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n }\n .image-preview-circle {\n position: relative;\n z-index: 1;\n width: 26px;\n height: 26px;\n border: solid 2px $color-danger;\n margin: -13px;\n border-radius: 30px;\n cursor: move;\n background: rgba(255, 255, 255, 0.5);\n }\n audio, video {\n margin-bottom: 15px;\n &:focus {\n outline: none;\n }\n }\n}\n\n.button-group .button {\n margin-right: 10px;\n padding: 10px 15px;\n}\n","// #############################################################################\n// OTHER\n\n// add clearfix which doesnt add overflow:hidden\n@mixin clearfix() {\n &:before,\n &:after {\n content: \" \";\n display: table;\n }\n &:after {\n clear: both;\n }\n}\n// taken from bootstrap with adaptations\n@function important($important) {\n @if($important == true) {\n @return !important;\n } @else {\n @return true;\n }\n}\n/* @mixin button-variant($color, $background, $border, $important: false) {\n background-image: none important($important);\n margin-bottom: 0; // For input.btn\n padding: 6px 20px important($important);\n border-radius: $btn-border-radius-base important($important);\n color: $color important($important);\n font-size: $font-size-small important($important);\n line-height: $font-size-small;\n font-weight: normal;\n text-transform: none important($important);\n letter-spacing: normal important($important);\n background-color: $background important($important);\n border: 1px solid $border important($important);\n background-clip: padding-box;\n appearance: none;\n &:focus {\n color: $color important($important);\n background-color: darken($background, 5%) important($important);\n border-color: darken($border, 5%) important($important);\n text-decoration: none important($important);\n }\n &:hover {\n color: $color important($important);\n background-color: darken($background, 5%) important($important);\n border-color: darken($border, 5%) important($important);\n text-decoration: none important($important);\n }\n &:active {\n color: $color important($important);\n background-color: darken($background, 10%) important($important);\n border-color: darken($border, 10%) important($important);\n box-shadow: $btn-active-shadow important($important);\n\n &:hover,\n &:focus {\n color: $color important($important);\n background-color: darken($background, 17%) important($important);\n border-color: darken($border, 25%) important($important);\n }\n }\n &:active {\n background-image: none important($important);\n }\n &[disabled] {\n &,\n &:hover,\n &:focus,\n &:active {\n background-color: rgba($background, 0.4) important($important);\n border-color: rgba($border, 0.4) important($important);\n color: rgba($color, 0.8) important(1);\n cursor: not-allowed;\n box-shadow: none important($important);\n &:before {\n color: rgba($color, 0.4) important(1);\n }\n }\n }\n}*/\n\n@mixin button-variant($color, $background, $border, $important: false) {\n background-image: none important($important);\n margin-bottom: 0; // For input.btn\n border-radius: $btn-border-radius-base important($important);\n color: $color important($important);\n background-color: $background important($important);\n border: 1px solid $border important($important);\n background-clip: padding-box;\n -webkit-appearance: none;\n &:focus,\n &.focus,\n &:hover {\n color: $color important($important);\n @if $background == $btn-default-bgcolor {\n background-color: $gray-lightest important($important);\n border-color: $border important($important);\n } @else {\n background-color: $background important($important);\n border-color: $border important($important);\n filter: invert(0.05) important($important);\n }\n text-decoration: none important($important);\n }\n &:active,\n &.cms-btn-active {\n color: $color important($important);\n background-color: $background important($important);\n border-color: $border important($important);\n filter: brightness(var(--active-brightness)) opacity(1) important($important);\n // Strange: removing opacity(1.) or correcting it makes item transparent\n box-shadow: $btn-active-shadow important($important);\n\n &:hover,\n &:focus,\n &.focus {\n color: $color important($important);\n background-color: $background important($important);\n border-color: $border important($important);\n filter: brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) important($important);\n } // Strange: removing opacity(1.) or correcting it makes item transparent\n }\n &:active,\n &.cms-btn-active {\n background-image: none important($important);\n }\n &.cms-btn-disabled,\n &[disabled] {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.cms-btn-active { // TODO: FABR\n background-color: $background important($important);\n border-color: $border important($important);\n @if $color == $gray {\n color: $gray-lighter important(1);\n } @else {\n color: $color important(1);\n filter: brightness(0.6) opacity(1); // Strange: removing opacity(1.) or correcting it makes item transparent\n }\n cursor: not-allowed;\n box-shadow: none important($important);\n &:before {\n @if $color == $gray {\n color: $gray-lighter important(1);\n } @else {\n color: $color important(1);\n filter: brightness(0.6) opacity(1); // Strange: removing opacity(1.) or correcting it makes item transparent\n }\n }\n }\n }\n}\n","//##############################################################################\n// ACTION LIST\n\n.actions-list-dropdown {\n a {\n display: block;\n padding: 5px 10px;\n }\n .caret-down {\n display: inline-block;\n }\n .caret-right {\n display: none;\n }\n &.js-collapsed {\n border-bottom: solid 1px $gray-lighter;\n .caret-down {\n display: none;\n }\n .caret-right {\n display: inline-block;\n }\n }\n}\n.actions-list {\n border-top: solid 1px $gray-lighter;\n &:last-child {\n border-top: none;\n a {\n border-bottom: none;\n }\n }\n a {\n display: block;\n font-size: 20px;\n padding: 5px 10px;\n border-bottom: solid 1px $gray-lighter;\n }\n .icon {\n &:first-child {\n width: 20px;\n }\n &:last-child {\n float: right;\n margin-top: 3px;\n }\n }\n}\n.actions-separated-list {\n display: inline-block;\n margin: 0;\n padding-left: 0;\n @media screen and (max-width: $screen-tablet) {\n float: left;\n margin-left: 0;\n }\n li {\n display: inline-block;\n line-height: 34px;\n vertical-align: middle;\n padding: 0 10px;\n list-style: none;\n @media screen and (max-width: $screen-tablet) {\n &:first-child {\n padding-left: 0;\n }\n }\n span {\n vertical-align: middle;\n }\n a {\n color: $gray;\n }\n }\n span:before {\n font-size: 18px;\n }\n}\n","//##############################################################################\n// FILTER FILES\n\n.search-is-focused {\n .filter-files-container {\n position: static;\n }\n .filter-filers-container-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n @media screen and (max-width: $screen-tablet) {\n position: static;\n }\n }\n .breadcrumbs-container {\n position: relative;\n }\n &.breadcrumb-min-width .filter-filers-container-inner {\n position: static;\n }\n}\n\n.filter-files-container {\n @include clearfix;\n display: table-cell;\n vertical-align: middle;\n position: relative;\n width: 245px;\n margin: 0;\n padding: 0;\n background: none;\n box-shadow: none;\n z-index: 1000;\n @media screen and (max-width: $screen-tablet) {\n display: block;\n width: auto;\n margin-right: 0;\n margin-top: 10px;\n .filter-files-button {\n float: none;\n }\n }\n .filer-dropdown-container {\n position: absolute;\n top: 0;\n right: 0;\n > a {\n &,\n &:visited,\n &:link:visited,\n &:link {\n display: inline-block;\n line-height: 34px;\n text-align: center;\n width: 34px;\n height: 34px;\n padding: 0;\n }\n }\n &.open + .filer-dropdown-menu-checkboxes {\n display: block;\n width: calc(100% - 30px);\n li {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n }\n }\n .filter-search-wrapper {\n position: relative;\n float: left;\n text-align: right;\n width: calc(100% - 43px);\n margin-right: 5px;\n @media screen and (max-width: $screen-tablet) {\n float: left;\n }\n .filer-dropdown-container span {\n line-height: 34px !important;\n height: 34px !important;\n }\n }\n .filter-files-button {\n float: right;\n text-align: center;\n white-space: nowrap;\n height: 35px;\n margin: 0;\n padding: 8px !important;\n .icon {\n position: relative;\n left: 2px;\n font-size: 16px !important;\n vertical-align: top;\n }\n }\n .filter-files-field {\n color: $gray-darkest;\n font-size: 12px !important;\n line-height: 35px;\n font-weight: normal;\n box-sizing: border-box;\n min-width: 200px !important;\n height: 35px;\n // required for django CMS <= 3.1 #673\n margin: 0;\n padding: 0 35px 0 10px !important;\n outline: none;\n appearance: none;\n transition: max-width $speed-base;\n // disable clear X on IE #690\n &::-ms-clear {\n display: none;\n }\n }\n .filer-dropdown-menu {\n margin-top: 0 !important;\n margin-right: -1px !important;\n }\n}\n.filter-files-cancel {\n margin: 5px 20px;\n}\n","//##############################################################################\n// NAVIGATOR\n\nbody {\n &.dz-drag-hover {\n .drag-hover-border {\n display: none !important;\n }\n .navigator-table tbody td,\n .navigator-table tbody .unfiled td {\n background-color: $hover-bg !important;\n }\n }\n &.reset-hover td {\n background-color: $white !important;\n }\n}\n.drag-hover-border {\n position: fixed;\n border-top: solid 2px $color-primary;\n border-bottom: solid 2px $color-primary;\n pointer-events: none;\n z-index: 100;\n display: none;\n}\n.thumbnail-drag-hover-border {\n border: solid 2px $color-primary;\n}\n.filebrowser .navigator-list,\n.filebrowser .navigator-table {\n // required for django CMS <= 3.1 #673\n width: 100%;\n margin: 0;\n border-top: solid 1px $gray-lighter !important;\n border-collapse: collapse !important;\n .navigator-header,\n thead th,\n tbody td {\n text-align: left;\n font-weight: normal;\n vertical-align: middle;\n padding: 5px !important;\n border-left: 0 !important;\n border-bottom: 1px solid $gray-lighter;\n border-top: 1px solid transparent;\n background: none !important;\n }\n tbody tr.selected {\n .action-button span {\n color: $gray-darkest !important;\n }\n }\n .navigator-body,\n .unfiled td {\n padding: 12px 5px !important;\n background-color: $gray-super-light !important;\n a,\n a:hover {\n color: $gray !important;\n }\n }\n .column-checkbox {\n text-align: center;\n width: 20px;\n padding-left: 20px !important;\n input {\n // makes sure that checkbox is vertical aligned #664\n vertical-align: middle;\n margin: 0;\n }\n }\n .column-name a {\n color: $color-primary;\n }\n .column-icon {\n width: 50px;\n // removes padding to make sure that column has correct height #664\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .column-action {\n text-align: center;\n width: 90px;\n white-space: nowrap;\n padding-right: 20px !important;\n a {\n font-size: 16px !important;\n margin: 0;\n }\n .action-button {\n @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);\n margin: 3px;\n padding: 2px 6px 8px !important;\n span {\n font-size: 17px;\n line-height: 33px;\n vertical-align: middle;\n }\n }\n }\n .no-files {\n color: $gray;\n font-size: $font-size-normal;\n text-align: center;\n padding: 40px 0 !important;\n background-color: $gray-lightest !important;\n span {\n font-size: 20px;\n margin-right: 10px;\n &:before {\n vertical-align: sub;\n }\n }\n }\n .dz-drag-hover {\n td {\n position: relative;\n background: $hover-bg !important;\n box-sizing: border-box !important;\n a {\n &.icon {\n color: $gray-darkest !important;\n background-color: $white !important;\n }\n color: $color-primary !important;\n }\n }\n }\n &.dz-drag-hover {\n position: relative;\n .drag-hover-border {\n display: none !important;\n }\n td {\n background: $hover-bg !important;\n box-sizing: border-box !important;\n }\n }\n .reset-hover,\n &.reset-hover {\n td {\n background-color: $white !important;\n }\n .dz-drag-hover {\n td {\n background: $hover-bg !important;\n }\n }\n }\n}\n.navigator-top-nav {\n position: relative;\n clear: both;\n min-height: 35px;\n padding: 15px 20px;\n background: $gray-super-light;\n border-bottom: $gray-lighter solid 1px;\n .breadcrumbs-container-wrapper {\n display: table;\n width: 100%;\n @media screen and (max-width: $screen-tablet) {\n display: block;\n }\n }\n .breadcrumbs-container-inner {\n display: table;\n table-layout: fixed;\n width: 100%;\n .filer-dropdown-container {\n display: table-cell;\n width: 30px;\n height: 35px;\n vertical-align: middle;\n span {\n line-height: 35px;\n height: 35px;\n vertical-align: middle;\n }\n }\n }\n .breadcrumbs-container {\n display: table-cell;\n vertical-align: middle;\n @media screen and (max-width: $screen-tablet) {\n position: static;\n margin-right: 20px;\n }\n }\n .tools-container {\n @include clearfix;\n display: table-cell;\n vertical-align: middle;\n text-align: right;\n margin-top: 2px;\n @media screen and (max-width: $screen-tablet) {\n display: inline;\n text-align: left;\n }\n }\n .nav-button {\n display: inline-block;\n color: $gray;\n font-size: 20px;\n line-height: 34px;\n vertical-align: top;\n margin: 0 10px;\n span {\n vertical-align: middle;\n }\n }\n .nav-button-filter {\n position: relative;\n top: -1px;\n }\n .nav-button-dots {\n margin: 0;\n padding: 0 15px;\n }\n .separator {\n display: inline-block;\n position: relative;\n vertical-align: top;\n width: 1px;\n height: 34px;\n margin: 0 5px;\n &:before {\n content: \"\";\n display: block;\n position: absolute;\n top: -14px;\n bottom: -11px;\n overflow: hidden;\n width: 1px;\n background-color: $gray-lighter;\n }\n }\n}\n.breadcrumb-min-width {\n .filer-navigator-breadcrumbs-dropdown-container,\n .navigator-breadcrumbs-name-dropdown-wrapper,\n .navigator-breadcrumbs-folder-name-wrapper,\n .breadcrumbs-container-wrapper,\n .breadcrumbs-container,\n .tools-container,\n .filter-files-container,\n .navigator-breadcrumbs,\n .navigator-button-wrapper {\n display: inline-block;\n text-align: left;\n .actions-wrapper {\n white-space: nowrap;\n margin-left: 0;\n margin-top: 10px;\n li:first-child {\n padding-left: 0;\n }\n }\n }\n .navigator-button-wrapper {\n margin-top: 10px;\n }\n .navigator-breadcrumbs-name-dropdown-wrapper {\n min-height: inherit;\n .filer-dropdown-container .fa-caret-down {\n vertical-align: text-top;\n }\n }\n .breadcrumbs-container-inner .filer-dropdown-container {\n display: inline-block !important;\n }\n .navigator-tools {\n white-space: normal;\n }\n .filter-files-container {\n width: 100%;\n margin-top: 10px;\n z-index: auto;\n }\n .breadcrumbs-container {\n margin-right: 0;\n }\n .navigator-breadcrumbs .icon {\n vertical-align: middle;\n }\n .navigator-breadcrumbs-folder-name-wrapper {\n float: left;\n width: calc(100% - 30px);\n }\n}\n\n.navigator-tools {\n @include clearfix;\n white-space: nowrap;\n @media screen and (max-width: $screen-tablet) {\n display: inline;\n }\n .actions-wrapper {\n display: inline-block;\n margin-bottom: 0;\n margin-left: 10px;\n a, a:hover {\n color: $gray-light !important;\n cursor: not-allowed;\n }\n @media screen and (max-width: $screen-tablet) {\n @include clearfix();\n float: none;\n margin-left: 0;\n }\n &.action-selected {\n a {\n color: $gray !important;\n cursor: pointer;\n }\n .actions-separated-list {\n display: inline-block;\n }\n }\n + .filer-list-type-switcher-wrapper {\n border-left: solid 1px $gray-lighter;\n margin-left: 0;\n }\n }\n .actions {\n display: none;\n float: right;\n @media screen and (max-width: $screen-tablet) {\n @include clearfix();\n float: none;\n margin-bottom: 10px;\n }\n .all,\n .question,\n .clear,\n .action-counter {\n font-size: $font-size-small;\n line-height: 34px;\n vertical-align: text-top;\n }\n .action-counter,\n .all {\n color: $gray-light;\n }\n .question,\n .clear {\n margin-left: 10px;\n padding-left: 10px;\n border-left: solid 1px $gray-lighter;\n }\n }\n .filer-list-type-switcher-wrapper {\n display: inline-block;\n margin-left: 10px;\n }\n\n}\n@media screen and (max-width: $screen-tablet) {\n .navigator-top-nav {\n .breadcrumbs-container {\n float: none;\n }\n .navigator-tools {\n float: none;\n .separator:before {\n top: 0;\n bottom: 0;\n }\n }\n }\n}\n// make sure that buttons break to new line on mobile view #677\n.navigator-button-wrapper {\n display: inline-block;\n vertical-align: top;\n text-align: right;\n margin-bottom: 0;\n margin-left: 10px;\n @media screen and (max-width: $screen-tablet) {\n display: block;\n float: none;\n text-align: left;\n margin-top: 0;\n margin-left: 0;\n }\n}\n.navigator-button {\n margin-right: 10px;\n &,\n &:visited,\n &:link:visited,\n &:link {\n @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);\n display: inline-block;\n vertical-align: top;\n padding: 10px 20px !important;\n }\n .icon {\n position: relative;\n margin-right: 3px;\n }\n .fa-folder {\n top: 0;\n }\n &.navigator-button-upload {\n margin-right: 0;\n }\n}\n\n.upload-button-disabled {\n display: inline-block;\n}\n.navigator-button + .filer-dropdown-menu {\n margin-top: -2px;\n}\n\n.navigator {\n position: relative;\n overflow-x: auto;\n width: 100%;\n form {\n margin: 0;\n padding: 0;\n box-shadow: none;\n }\n}\n\n.filer-dropdown-container {\n display: inline-block;\n position: relative;\n vertical-align: top;\n .fa-caret-down, .cms-icon-caret-down {\n font-size: 14px;\n }\n .filer-dropdown-menu,\n + .filer-dropdown-menu {\n display: none;\n right: 0;\n left: auto;\n border: 0;\n box-shadow: $dropdown-shadow;\n > li > a {\n display: block;\n color: $color-primary;\n font-weight: normal;\n white-space: normal;\n padding: 12px 20px !important;\n @media screen and (min-width: $screen-tablet) {\n white-space: nowrap;\n }\n }\n label {\n display: block;\n line-height: 20px !important;\n text-transform: none;\n width: auto;\n margin: 5px 0 !important;\n padding: 0 10px !important;\n }\n input {\n position: relative;\n top: 4px;\n vertical-align: top;\n margin-right: 5px;\n }\n &.filer-dropdown-menu-checkboxes {\n width: 0;\n min-height: 50px;\n padding: 15px;\n border: 0;\n box-shadow: $dropdown-shadow;\n &:before {\n display: none;\n }\n .fa-close {\n position: absolute;\n top: 10px;\n right: 10px;\n color: $gray;\n cursor: pointer;\n &:hover {\n color: $color-primary;\n }\n }\n p {\n color: $gray-light !important;\n font-weight: normal;\n text-transform: uppercase;\n margin-bottom: 5px;\n }\n label {\n color: $gray !important;\n font-weight: normal;\n padding: 0 !important;\n margin-top: 0 !important;\n input {\n margin-left: 0;\n }\n }\n }\n a:hover {\n color: $white !important;\n background: $color-primary !important;\n }\n }\n &.open .filer-dropdown-menu {\n display: block;\n li {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n }\n + .separator {\n margin-right: 10px;\n }\n}\n.filer-dropdown-container-down {\n > a {\n &,\n &:link,\n &:visited,\n &:link:visited {\n color: $gray;\n font-size: 20px;\n line-height: 35px;\n height: 35px;\n padding: 0 10px;\n }\n }\n .filer-dropdown-menu {\n right: auto;\n left: -14px;\n margin-right: 10px;\n }\n}\n\n.filer-dropdown-menu {\n position: absolute;\n top: 100%;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n margin: 2px 0 0;\n margin-top: 0 !important;\n padding: 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: $white;\n border-radius: 4px;\n background-clip: padding-box;\n &:before {\n position: absolute;\n top: -5px;\n left: 35px;\n z-index: -1;\n content: '';\n width: 10px;\n height: 10px;\n margin-left: -5px;\n transform: rotate(45deg);\n background-color: $white;\n }\n &.create-menu-dropdown:before {\n left: auto;\n right: 17px;\n }\n}\n\n.navigator-breadcrumbs {\n @include clearfix;\n display: table-cell;\n vertical-align: middle;\n font-size: 16px;\n white-space: nowrap;\n width: 60px;\n > a {\n color: $gray-darkest !important;\n }\n .icon {\n color: $gray-light;\n line-height: 35px;\n height: 35px;\n margin: 0 5px;\n &:before {\n vertical-align: middle;\n }\n }\n li {\n list-style-type: none;\n }\n}\n.navigator-breadcrumbs-folder-name-wrapper {\n display: table-cell;\n overflow: hidden;\n font-size: 16px;\n font-weight: bold;\n vertical-align: middle;\n white-space: nowrap;\n}\n.navigator-breadcrumbs-folder-name {\n display: block;\n overflow: hidden;\n white-space: normal;\n line-height: 35px;\n width: 100%;\n height: 35px;\n}\n.navigator-breadcrumbs-folder-name-inner {\n display: block;\n position: relative;\n overflow: hidden;\n line-height: 35px;\n height: 35px;\n width: 100%;\n text-overflow: ellipsis;\n}\n.filer-navigator-breadcrumbs-dropdown-container {\n position: relative;\n float: left;\n vertical-align: middle;\n margin: 0 7px 0 0;\n > a img {\n padding: 3px 0;\n }\n .navigator-breadcrumbs-dropdown {\n left: -15px !important;\n min-width: 200px;\n padding: 0;\n margin-top: 0;\n border: 0;\n box-shadow: $dropdown-shadow;\n > li {\n padding: 0;\n > a {\n color: $color-primary;\n padding: 12px 20px 3px !important;\n border-bottom: solid 1px $gray-lightest;\n &:hover {\n color: $white !important;\n background: $color-primary !important;\n }\n }\n &:last-child > a {\n border-bottom: none;\n }\n }\n img {\n position: relative;\n top: -5px;\n vertical-align: top;\n margin: 0 10px 0 0;\n }\n }\n}\n\n.navigator-dropdown-arrow-up {\n position: relative;\n left: 20px;\n overflow: hidden;\n width: 20px;\n height: 20px;\n margin-top: -20px;\n z-index: 1001;\n &:after {\n content: \"\";\n position: absolute;\n top: 15px;\n left: 5px;\n width: 10px;\n height: 10px;\n background: white;\n transform: rotate(45deg);\n box-shadow: $dropdown-shadow;\n }\n}\n\n.navigator-breadcrumbs-name-dropdown-wrapper {\n display: table;\n min-height: 35px;\n .filer-dropdown-menu {\n left: auto;\n right: -80px;\n &:before {\n right: 80px;\n left: auto;\n }\n }\n a {\n display: inline-block;\n }\n}\n\n.empty-filer-header-cell {\n display: table-cell;\n vertical-align: middle;\n}\n\n.filebrowser .navigator-thumbnail-list {\n overflow: hidden;\n .navigator-list {\n border-top: 0 !important;\n }\n .navigator-thumbnail-list-header {\n & > * {\n display: inline-block;\n text-transform: uppercase;\n margin: 0;\n padding: 0;\n padding-left: 10px;\n }\n .navigator-checkbox {\n float: right;\n padding-right: 20px;\n text-transform: initial;\n color: $color-primary;\n input[type=\"checkbox\"] {\n margin-left: 5px;\n vertical-align: middle;\n }\n }\n }\n .navigator-body {\n @include clearfix;\n padding: 0 !important;\n }\n .thumbnail-item {\n float: left;\n display: inline-block;\n padding: 10px;\n width: calc(var(--thumbnail-size, 120px) + 5px);\n height: calc(var(--thumbnail-size, 120px) + 5px);\n border: 1px solid $gray-lighter;\n margin: 16px 12px;\n background-color: $white;\n position: relative;\n overflow: hidden;\n .thumbnail-file-item-box {\n padding: 10px;\n width: calc(var(--thumbnail-size, 120px) + 5px);\n height: calc(var(--thumbnail-size, 120px) + 5px);\n border: 1px solid $gray-lighter;\n margin: 16px 12px;\n background-color: $white;\n &:hover {\n background-color: #f1faff;\n }\n }\n .navigator-checkbox {\n position: absolute;\n top: 5px;\n left: 5px;\n input {\n margin: 0;\n vertical-align: top;\n }\n }\n .item-thumbnail,\n .item-icon {\n height: 50%;\n width: 50%;\n margin: 10px auto;\n margin-bottom: 18px;\n a {\n display: block;\n height: 100%;\n width: 100%;\n }\n img {\n width: 100%;\n height: 100%;\n }\n }\n .item-name {\n background: transparent;\n text-align: center;\n word-break: break-word;\n }\n }\n .thumbnail-virtual-item {\n background-color: initial;\n }\n .thumbnail-folder-item {\n &:hover {\n background-color: #f1faff;\n }\n }\n .thumbnail-file-item {\n float: none;\n width: calc(var(--thumbnail-size, 120px) + 27px);\n height: calc(var(--thumbnail-size, 120px) + 80px);\n border: 0;\n padding: 0;\n background-color: transparent;\n .thumbnail-file-item-box {\n float: none;\n margin: 0;\n margin-bottom: 5px;\n }\n .item-thumbnail {\n margin: 0;\n height: 100%;\n width: 100%;\n }\n .item-name {\n position: relative;\n word-break: break-word;\n }\n }\n}\n\n.insertlinkButton {\n &:before {\n content:\"\" !important; // Necessary since djangocms-admin-style tries to add its own icon\n }\n span {\n font-size: 17px;\n }\n}\n","//##############################################################################\n// MODAL\n\n.popup {\n &.app-cmsplugin_filer_image {\n .form-row.field-image .field-box,\n .field-box.field-free_link,\n .field-box.field-page_link,\n .field-box.field-file_link {\n float: none !important;\n margin-right: 0 !important;\n margin-top: 20px !important;\n &:first-child {\n margin-top: 0 !important\n }\n input {\n width: 100% !important;\n }\n }\n .form-row .field-box {\n &.field-crop,\n &.field-upscale {\n margin-top: 30px;\n }\n }\n }\n &.delete-confirmation .colM ul {\n // makes sure that between list and button is a space #744\n margin-bottom: 25px !important;\n }\n .image-info-detail {\n padding: 0;\n padding-bottom: 25px;\n margin-bottom: 30px;\n box-shadow: none;\n border-bottom: solid 1px $gray-lighter;\n }\n &.change-list.filebrowser {\n #result_list tbody th,\n #result_list tbody td {\n // makes sure that changelist columns has correct height on modal window #665\n height: auto;\n }\n }\n .filer-dropzone {\n padding: 5px 20px;\n }\n form .form-row .filer-dropzone .filerFile {\n top: 8px;\n }\n &.filebrowser #container #content {\n margin: 0 !important;\n }\n .navigator-button-wrapper {\n float: right;\n @media screen and (max-width: $screen-tablet) {\n float: none;\n }\n }\n .navigator-top-nav {\n .tools-container {\n width: 70%;\n }\n .breadcrumbs-container {\n width: 30%;\n }\n .tools-container,\n .breadcrumbs-container {\n @media screen and (max-width: $screen-tablet) {\n width: 100%;\n }\n }\n }\n}\n","//##############################################################################\n// DRAG AND DROP\n\nform .form-row {\n &[class*=\"file\"],\n &[class*=\"folder\"],\n &[class*=\"img\"],\n &[class*=\"image\"],\n &[class*=\"visual\"] {\n .related-widget-wrapper-link {\n display: none;\n }\n }\n .filer-widget + .related-widget-wrapper-link,\n .filer-widget + * + .related-widget-wrapper-link {\n display: none;\n }\n .related-widget-wrapper:has(.filer-widget,.filer-dropzone) {\n width: 100%;\n }\n .filer-dropzone {\n @include clearfix;\n position: relative;\n min-width: 215px;\n border: solid 1px $gray-lighter;\n border-radius: $border-radius-base;\n background-color: $gray-lightest;\n box-sizing: border-box !important;\n .z-index-fix {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n &.dz-drag-hover {\n background-color: $color-primary;\n filter: brightness(1.5);\n border: solid 2px $color-primary !important;\n .z-index-fix {\n z-index: 1;\n }\n .dz-message {\n opacity: 1;\n display: block !important;\n visibility: visible;\n }\n .filerFile {\n display: none;\n }\n .dz-message, .dz-message .icon {\n color: $color-primary !important;\n }\n }\n &.dz-started .fileUpload {\n display: none;\n }\n .dz-preview {\n width: 100%;\n min-height: auto;\n margin-right: 0;\n margin-bottom: 0;\n margin-left: 0;\n padding-bottom: 10px;\n border-bottom: solid 1px $gray-lighter;\n &.dz-error {\n position: relative;\n .dz-error-message {\n display: none;\n }\n &:hover .dz-error-message {\n display: block;\n }\n }\n .dz-details {\n min-width: calc(100% - 80px);\n max-width: calc(100% - 80px);\n margin-top: 7px;\n margin-left: 40px;\n padding: 0;\n opacity: 1;\n .dz-filename,\n .dz-filename:hover,\n .dz-size {\n float: left;\n text-align: left;\n span {\n color: $gray;\n border: 0 !important;\n background-color: transparent !important;\n }\n }\n }\n .dz-remove {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-trash' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E%0A\");\n background-size:contain;\n display: inline-block;\n position: absolute;\n top: 7px;\n right: 25px;\n font: 0/0 a;\n width: 18px;\n height: 18px;\n }\n .dz-error-message {\n top: 65px;\n left: 0;\n width: 100%;\n }\n .dz-success-mark,\n .dz-error-mark {\n top: 5px;\n right: 0;\n left: auto;\n margin-top: 0;\n &:before {\n color: $gray;\n }\n svg {\n display: none;\n }\n }\n .dz-success-mark {\n // Check icon\n width: 16px;\n height: 16px;\n background-image: url(\"data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2370bf2b' d='M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A\");\n background-size: contain;\n }\n .dz-error-mark {\n // Remove icon\n background-image: url(\"data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23dd4646' d='M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A\");\n width: 16px;\n height: 16px;\n background-size: contain;\n }\n &.dz-image-preview,\n &.dz-file-preview {\n background-color: transparent;\n .dz-image {\n overflow: hidden;\n width: 36px;\n height: 36px;\n border: solid 1px $gray-lighter;\n border-radius: 0;\n img {\n width: 100%;\n height: auto;\n }\n }\n }\n .dz-progress {\n top: 18px;\n left: 0;\n width: calc(100% - 40px);\n height: 10px;\n margin-left: 40px;\n }\n }\n .dz-message {\n float: right;\n color: $gray-dropzone;\n width: 100%;\n margin: 15px 0 0;\n }\n .icon {\n position: relative;\n top: 3px;\n color: $gray-dropzone;\n font-size: 24px;\n margin-right: 10px;\n }\n .filerFile .related-lookup {\n @include button-variant($btn-action-color, $btn-action-bgcolor, $btn-action-border, true);\n float: left !important;\n overflow: hidden;\n // makes true that button has correct height #668\n line-height: $font-size-normal;\n width: auto !important;\n height: auto !important;\n padding: 10px 20px !important;\n margin-top: 24px;\n margin-left: 10px;\n text-align: center !important;\n cursor: pointer;\n .cms-icon {\n color: $white;\n font-size: 17px;\n margin: 0 10px 0 0;\n vertical-align: middle;\n }\n &:before {\n display: none;\n }\n .choose-file,\n .replace-file,\n .edit-file {\n color: $white;\n margin: 0;\n }\n .replace-file {\n display: none;\n }\n &.edit {\n display: none;\n }\n &.related-lookup-change {\n @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);\n float: right !important;\n padding: 5px 0 !important;\n width: 36px !important;\n height: 36px !important;\n &:focus {\n background-color: $white !important;\n }\n span {\n text-align: center;\n line-height: 24px;\n }\n .cms-icon {\n color: $btn-default-color;\n margin-right: 0 !important;\n }\n .choose-file {\n display: none;\n }\n .replace-file {\n display: block;\n }\n &.lookup {\n display: block !important;\n }\n &.edit {\n display: block;\n }\n }\n }\n // makes sure that filer clear button has correct size #669\n .filerClearer {\n width: 36px !important;\n height: 36px !important;\n color: $color-danger;\n }\n .filerFile {\n position: absolute;\n top: 9px;\n // required for django CMS <= 3.1 #673\n left: 20px;\n width: calc(100% - 40px);\n img[src*=nofile] {\n background-color: $white;\n }\n // make sure that text crops if there is not enough space #670\n span:not(:empty):not(.choose-file):not(.replace-file):not(.edit-file) {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n width: calc(100% - 260px);\n height: 80px;\n line-height: 80px;\n }\n // required for django CMS <= 3.1 #673\n img {\n width: 80px;\n height: 80px;\n margin-right: 10px;\n border: solid 1px $gray-lighter;\n border-radius: $border-radius-base;\n vertical-align: top;\n &[src*=\"nofile\"] {\n box-sizing: border-box;\n margin-right: 0;\n border: solid 1px $gray-lighter;\n border-radius: $border-radius-base;\n }\n }\n // required for django CMS <= 3.1\n a {\n box-sizing: border-box;\n padding-top: 10px !important;\n }\n // required for django CMS <= 3.1 #673\n span {\n display: inline-block;\n color: $gray;\n font-weight: normal;\n margin-bottom: 6px;\n text-align: left;\n &:empty + .related-lookup {\n float: none !important;\n margin-left: 0 !important;\n }\n }\n // required for django CMS <= 3.1 #673\n a.filerClearer {\n @include button-variant($btn-default-color, $btn-default-bgcolor, $btn-default-border, true);\n float: right;\n padding: 5px 0 !important;\n margin: 24px 0 0 10px;\n width: 36px;\n height: 36px;\n text-align: center;\n cursor: pointer;\n span:before {\n color: $color-danger !important;\n }\n span {\n text-align: center;\n line-height: 24px;\n }\n }\n\n }\n &.filer-dropzone-mobile {\n .filerFile {\n text-align: center;\n }\n .dz-message {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n // make sure that drag and drop widget looks nice on mobile #670\n margin-top: 75px;\n }\n &.js-object-attached .filerFile {\n text-align: center;\n &.js-file-selector {\n @media screen and (max-width: $screen-tablet-filer) {\n .description_text {\n text-overflow: ellipsis;\n width: calc(100% - 250px);\n overflow: hidden;\n }\n }\n >span:not(.choose-file):not(.replace-file):not(.edit-file), .dz-name {\n width: calc(100% - 250px);\n }\n }\n }\n\n }\n &.filer-dropzone-folder .filerFile {\n top: 8px;\n #id_folder_description_txt {\n float: left;\n }\n }\n\n @media (max-width: 767px) {\n flex-grow: 1;\n }\n\n }\n}\n\n.filer-dropzone {\n min-height: 100px !important;\n .dz-upload {\n height: 5px;\n background-color: $color-primary;\n }\n .dz-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: calc(100% - 145px);\n }\n .dz-thumbnail {\n display: inline-block;\n overflow: hidden;\n vertical-align: top;\n width: 80px;\n height: 80px;\n margin-right: 10px;\n border: solid 1px $gray-lighter;\n border-radius: 3px;\n background: $white url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%232980b9' d='M5 2c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V8l-6-6z'/%3E%3Cpath fill='%233498db' d='M5 1c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V7l-6-6z'/%3E%3Cpath fill='%232980b9' d='m21 7-6-6v4c0 1.1.895 2 2 2z'/%3E%3C/svg%3E\");\n background-size: contain;\n img {\n background: $white;\n &[src=\"\"],\n &:not([src]) {\n width: 104%;\n height: 104%;\n margin: -2%;\n }\n }\n }\n}\n\n.filer-dropzone-info-message {\n position: fixed;\n bottom: 35px;\n left: 50%;\n z-index: 2;\n text-align: center;\n width: 270px;\n max-height: 300px;\n overflow-y: auto;\n margin: -50px 0 0 -150px;\n padding: 15px 15px 0;\n border-radius: $border-radius-base;\n background: $white;\n box-shadow: $base-box-shadow;\n .icon {\n font-size: 35px;\n color: $color-primary;\n }\n .text {\n margin: 5px 0 10px;\n }\n}\n.filer-dropzone-upload-info {\n margin-top: 10px;\n // make sure that file name on upload progress is cut #675\n .filer-dropzone-file-name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n &:empty {\n margin-top: 0;\n }\n}\n.filer-dropzone-progress {\n height: 5px;\n margin-top: 5px;\n background-color: $color-primary;\n}\n\n.filer-dropzone-upload-welcome .folder {\n color: $color-primary;\n padding: 10px 0 0;\n margin: 0 -15px;\n border-top: solid 1px $gray-lighter;\n img,\n span {\n vertical-align: middle;\n }\n img {\n margin-right: 5px;\n }\n .folder-inner {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n padding: 0 10px;\n }\n}\n\n.filer-dropzone-cancel {\n padding-top: 10px;\n border-top: solid 1px $gray-lighter;\n margin: 15px -15px 10px;\n a {\n font-size: $font-size-small;\n color: $gray !important;\n }\n}\n.filer-dropzone-upload-success,\n.filer-dropzone-upload-canceled {\n margin: 0 -15px 10px;\n}\n\n.filer-dropzone-upload-count {\n padding-bottom: 10px;\n margin: 10px -15px;\n border-bottom: solid 1px $gray-lighter;\n}\n",".filer-tooltip-wrapper {\n position: relative;\n}\n\n.filer-tooltip {\n position: absolute;\n left: -30px;\n right: -30px;\n color: $gray;\n text-align: center;\n font-size: $font-size-small !important;\n line-height: 15px !important;\n white-space: normal;\n margin-top: 5px;\n padding: 10px;\n background-color: $white;\n box-shadow: 0 0 10px rgba(black,.25);\n border-radius: 5px;\n z-index: 10;\n cursor: default;\n &:before {\n position: absolute;\n top: -3px;\n left: 50%;\n z-index: -1;\n content: '';\n width: 9px;\n height: 9px;\n margin-left: -5px;\n transform: rotate(45deg);\n background-color: $white;\n }\n}\n\n.disabled-btn-tooltip {\n display: none;\n outline: none;\n}\n","/*\n * The MIT License\n * Copyright (c) 2012 Matias Meno \n */\n@keyframes passing-through {\n 0% {\n opacity: 0;\n transform: translateY(40px);\n }\n 30%,\n 70% {\n opacity: 1;\n transform: translateY(0);\n }\n 100% {\n opacity: 0;\n transform: translateY(-40px);\n }\n}\n@keyframes slide-in {\n 0% {\n opacity: 0;\n transform: translateY(40px);\n }\n 30% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes pulse {\n 0% {\n transform: scale(1);\n }\n 10% {\n transform: scale(1.1);\n }\n 20% {\n transform: scale(1);\n }\n}\n.filer-dropzone,\n.filer-dropzone * {\n box-sizing: border-box;\n}\n\n.filer-dropzone {\n min-height: 150px;\n padding: 20px 20px;\n border: 2px solid rgba(0, 0, 0, 0.3);\n background: white;\n}\n.filer-dropzone.dz-clickable {\n cursor: pointer;\n}\n.filer-dropzone.dz-clickable * {\n cursor: default;\n}\n.filer-dropzone.dz-clickable .dz-message,\n.filer-dropzone.dz-clickable .dz-message * {\n cursor: pointer;\n}\n.filer-dropzone.dz-drag-hover {\n border-style: solid;\n}\n.filer-dropzone.dz-drag-hover .dz-message {\n opacity: 0.5;\n}\n.filer-dropzone .dz-message {\n text-align: center;\n margin: 2em 0;\n}\n.filer-dropzone .dz-preview {\n display: inline-block;\n position: relative;\n vertical-align: top;\n min-height: 100px;\n margin: 16px;\n}\n.filer-dropzone .dz-preview:hover {\n z-index: 1000;\n}\n.filer-dropzone .dz-preview:hover .dz-details {\n opacity: 1;\n}\n.filer-dropzone .dz-preview.dz-file-preview .dz-image {\n border-radius: 20px;\n background: $gray-light;\n background: linear-gradient(to bottom, $gray-lightest, $gray-lighter);\n}\n.filer-dropzone .dz-preview.dz-file-preview .dz-details {\n opacity: 1;\n}\n.filer-dropzone .dz-preview.dz-image-preview {\n background: white;\n}\n.filer-dropzone .dz-preview.dz-image-preview .dz-details {\n transition: opacity 0.2s linear;\n}\n.filer-dropzone .dz-preview .dz-remove {\n display: block;\n font-size: 14px;\n text-align: center;\n border: none;\n cursor: pointer;\n}\n.filer-dropzone .dz-preview .dz-remove:hover {\n text-decoration: underline;\n}\n.filer-dropzone .dz-preview:hover .dz-details {\n opacity: 1;\n}\n.filer-dropzone .dz-preview .dz-details {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n color: rgba(0, 0, 0, 0.9);\n font-size: 13px;\n line-height: 150%;\n text-align: center;\n min-width: 100%;\n max-width: 100%;\n padding: 2em 1em;\n opacity: 0;\n}\n.filer-dropzone .dz-preview .dz-details .dz-size {\n font-size: 16px;\n margin-bottom: 1em;\n}\n.filer-dropzone .dz-preview .dz-details .dz-filename {\n white-space: nowrap;\n}\n.filer-dropzone .dz-preview .dz-details .dz-filename:hover span {\n border: 1px solid rgba(200, 200, 200, 0.8);\n background-color: rgba(255, 255, 255, 0.8);\n}\n.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\n border: 1px solid transparent;\n}\n.filer-dropzone .dz-preview .dz-details .dz-filename span,\n.filer-dropzone .dz-preview .dz-details .dz-size span {\n padding: 0 0.4em;\n border-radius: 3px;\n background-color: rgba(255, 255, 255, 0.4);\n}\n.filer-dropzone .dz-preview:hover .dz-image img {\n transform: scale(1.05, 1.05);\n\n filter: blur(8px);\n}\n.filer-dropzone .dz-preview .dz-image {\n display: block;\n position: relative;\n overflow: hidden;\n z-index: 10;\n width: 120px;\n height: 120px;\n border-radius: 20px;\n}\n.filer-dropzone .dz-preview .dz-image img {\n display: block;\n}\n.filer-dropzone .dz-preview.dz-success .dz-success-mark {\n animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\n}\n.filer-dropzone .dz-preview.dz-error .dz-error-mark {\n opacity: 1;\n animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\n}\n.filer-dropzone .dz-preview .dz-success-mark,\n.filer-dropzone .dz-preview .dz-error-mark {\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: 500;\n margin-top: -27px;\n margin-left: -27px;\n pointer-events: none;\n opacity: 0;\n}\n.filer-dropzone .dz-preview .dz-success-mark svg,\n.filer-dropzone .dz-preview .dz-error-mark svg {\n display: block;\n width: 54px;\n height: 54px;\n}\n.filer-dropzone .dz-preview.dz-processing .dz-progress {\n opacity: 1;\n transition: all 0.2s linear;\n}\n.filer-dropzone .dz-preview.dz-complete .dz-progress {\n opacity: 0;\n transition: opacity 0.4s ease-in;\n}\n.filer-dropzone .dz-preview:not(.dz-processing) .dz-progress {\n animation: pulse 6s ease infinite;\n}\n.filer-dropzone .dz-preview .dz-progress {\n position: absolute;\n top: 50%;\n left: 50%;\n overflow: hidden;\n z-index: 1000;\n width: 80px;\n height: 16px;\n margin-top: -8px;\n margin-left: -40px;\n border-radius: 8px;\n pointer-events: none;\n opacity: 1;\n background: rgba(255, 255, 255, 0.9);\n}\n.filer-dropzone .dz-preview .dz-progress .dz-upload {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 0;\n background: $gray-darkest;\n background: linear-gradient(to bottom, $gray, $gray-darkest);\n transition: width 300ms ease-in-out;\n}\n.filer-dropzone .dz-preview.dz-error .dz-error-message {\n display: block;\n}\n.filer-dropzone .dz-preview.dz-error:hover .dz-error-message {\n pointer-events: auto;\n opacity: 1;\n}\n.filer-dropzone .dz-preview .dz-error-message {\n display: block;\n display: none;\n position: absolute;\n top: 130px;\n left: -10px;\n z-index: 1000;\n color: $white;\n font-size: 13px;\n width: 140px;\n padding: 0.5em 1.2em;\n border-radius: 8px;\n pointer-events: none;\n opacity: 0;\n background: #be2626;\n background: linear-gradient(to bottom, #be2626, #a92222);\n transition: opacity 0.3s ease;\n}\n.filer-dropzone .dz-preview .dz-error-message:after {\n content: \"\";\n position: absolute;\n top: -6px;\n left: 64px;\n width: 0;\n height: 0;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #be2626;\n border-left: 6px solid transparent;\n}\n"]} \ No newline at end of file diff --git a/filer/static/filer/css/maps/admin_filer.fa.icons.css.map b/filer/static/filer/css/maps/admin_filer.fa.icons.css.map new file mode 100644 index 000000000..6d9e865fe --- /dev/null +++ b/filer/static/filer/css/maps/admin_filer.fa.icons.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["admin_filer.fa.icons.css","libs/_font-awesome.min.scss"],"names":[],"mappings":"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","file":"../admin_filer.fa.icons.css","sourcesContent":["/*!\n * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:\"FontAwesome\";src:url(\"../fonts/fontawesome-webfont.eot?v=4.4.0\");src:url(\"../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0\") format(\"embedded-opentype\"),url(\"../fonts/fontawesome-webfont.woff2?v=4.4.0\") format(\"woff2\"),url(\"../fonts/fontawesome-webfont.woff?v=4.4.0\") format(\"woff\"),url(\"../fonts/fontawesome-webfont.ttf?v=4.4.0\") format(\"truetype\"),url(\"../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular\") format(\"svg\");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\"}.fa-music:before{content:\"\"}.fa-search:before{content:\"\"}.fa-envelope-o:before{content:\"\"}.fa-heart:before{content:\"\"}.fa-star:before{content:\"\"}.fa-star-o:before{content:\"\"}.fa-user:before{content:\"\"}.fa-film:before{content:\"\"}.fa-th-large:before{content:\"\"}.fa-th:before{content:\"\"}.fa-th-list:before{content:\"\"}.fa-check:before{content:\"\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\"}.fa-search-plus:before{content:\"\"}.fa-search-minus:before{content:\"\"}.fa-power-off:before{content:\"\"}.fa-signal:before{content:\"\"}.fa-gear:before,.fa-cog:before{content:\"\"}.fa-trash-o:before{content:\"\"}.fa-home:before{content:\"\"}.fa-file-o:before{content:\"\"}.fa-clock-o:before{content:\"\"}.fa-road:before{content:\"\"}.fa-download:before{content:\"\"}.fa-arrow-circle-o-down:before{content:\"\"}.fa-arrow-circle-o-up:before{content:\"\"}.fa-inbox:before{content:\"\"}.fa-play-circle-o:before{content:\"\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\"}.fa-refresh:before{content:\"\"}.fa-list-alt:before{content:\"\"}.fa-lock:before{content:\"\"}.fa-flag:before{content:\"\"}.fa-headphones:before{content:\"\"}.fa-volume-off:before{content:\"\"}.fa-volume-down:before{content:\"\"}.fa-volume-up:before{content:\"\"}.fa-qrcode:before{content:\"\"}.fa-barcode:before{content:\"\"}.fa-tag:before{content:\"\"}.fa-tags:before{content:\"\"}.fa-book:before{content:\"\"}.fa-bookmark:before{content:\"\"}.fa-print:before{content:\"\"}.fa-camera:before{content:\"\"}.fa-font:before{content:\"\"}.fa-bold:before{content:\"\"}.fa-italic:before{content:\"\"}.fa-text-height:before{content:\"\"}.fa-text-width:before{content:\"\"}.fa-align-left:before{content:\"\"}.fa-align-center:before{content:\"\"}.fa-align-right:before{content:\"\"}.fa-align-justify:before{content:\"\"}.fa-list:before{content:\"\"}.fa-dedent:before,.fa-outdent:before{content:\"\"}.fa-indent:before{content:\"\"}.fa-video-camera:before{content:\"\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\"}.fa-pencil:before{content:\"\"}.fa-map-marker:before{content:\"\"}.fa-adjust:before{content:\"\"}.fa-tint:before{content:\"\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\"}.fa-share-square-o:before{content:\"\"}.fa-check-square-o:before{content:\"\"}.fa-arrows:before{content:\"\"}.fa-step-backward:before{content:\"\"}.fa-fast-backward:before{content:\"\"}.fa-backward:before{content:\"\"}.fa-play:before{content:\"\"}.fa-pause:before{content:\"\"}.fa-stop:before{content:\"\"}.fa-forward:before{content:\"\"}.fa-fast-forward:before{content:\"\"}.fa-step-forward:before{content:\"\"}.fa-eject:before{content:\"\"}.fa-chevron-left:before{content:\"\"}.fa-chevron-right:before{content:\"\"}.fa-plus-circle:before{content:\"\"}.fa-minus-circle:before{content:\"\"}.fa-times-circle:before{content:\"\"}.fa-check-circle:before{content:\"\"}.fa-question-circle:before{content:\"\"}.fa-info-circle:before{content:\"\"}.fa-crosshairs:before{content:\"\"}.fa-times-circle-o:before{content:\"\"}.fa-check-circle-o:before{content:\"\"}.fa-ban:before{content:\"\"}.fa-arrow-left:before{content:\"\"}.fa-arrow-right:before{content:\"\"}.fa-arrow-up:before{content:\"\"}.fa-arrow-down:before{content:\"\"}.fa-mail-forward:before,.fa-share:before{content:\"\"}.fa-expand:before{content:\"\"}.fa-compress:before{content:\"\"}.fa-plus:before{content:\"\"}.fa-minus:before{content:\"\"}.fa-asterisk:before{content:\"\"}.fa-exclamation-circle:before{content:\"\"}.fa-gift:before{content:\"\"}.fa-leaf:before{content:\"\"}.fa-fire:before{content:\"\"}.fa-eye:before{content:\"\"}.fa-eye-slash:before{content:\"\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\"}.fa-plane:before{content:\"\"}.fa-calendar:before{content:\"\"}.fa-random:before{content:\"\"}.fa-comment:before{content:\"\"}.fa-magnet:before{content:\"\"}.fa-chevron-up:before{content:\"\"}.fa-chevron-down:before{content:\"\"}.fa-retweet:before{content:\"\"}.fa-shopping-cart:before{content:\"\"}.fa-folder:before{content:\"\"}.fa-folder-open:before{content:\"\"}.fa-arrows-v:before{content:\"\"}.fa-arrows-h:before{content:\"\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\"}.fa-twitter-square:before{content:\"\"}.fa-facebook-square:before{content:\"\"}.fa-camera-retro:before{content:\"\"}.fa-key:before{content:\"\"}.fa-gears:before,.fa-cogs:before{content:\"\"}.fa-comments:before{content:\"\"}.fa-thumbs-o-up:before{content:\"\"}.fa-thumbs-o-down:before{content:\"\"}.fa-star-half:before{content:\"\"}.fa-heart-o:before{content:\"\"}.fa-sign-out:before{content:\"\"}.fa-linkedin-square:before{content:\"\"}.fa-thumb-tack:before{content:\"\"}.fa-external-link:before{content:\"\"}.fa-sign-in:before{content:\"\"}.fa-trophy:before{content:\"\"}.fa-github-square:before{content:\"\"}.fa-upload:before{content:\"\"}.fa-lemon-o:before{content:\"\"}.fa-phone:before{content:\"\"}.fa-square-o:before{content:\"\"}.fa-bookmark-o:before{content:\"\"}.fa-phone-square:before{content:\"\"}.fa-twitter:before{content:\"\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\"}.fa-github:before{content:\"\"}.fa-unlock:before{content:\"\"}.fa-credit-card:before{content:\"\"}.fa-feed:before,.fa-rss:before{content:\"\"}.fa-hdd-o:before{content:\"\"}.fa-bullhorn:before{content:\"\"}.fa-bell:before{content:\"\"}.fa-certificate:before{content:\"\"}.fa-hand-o-right:before{content:\"\"}.fa-hand-o-left:before{content:\"\"}.fa-hand-o-up:before{content:\"\"}.fa-hand-o-down:before{content:\"\"}.fa-arrow-circle-left:before{content:\"\"}.fa-arrow-circle-right:before{content:\"\"}.fa-arrow-circle-up:before{content:\"\"}.fa-arrow-circle-down:before{content:\"\"}.fa-globe:before{content:\"\"}.fa-wrench:before{content:\"\"}.fa-tasks:before{content:\"\"}.fa-filter:before{content:\"\"}.fa-briefcase:before{content:\"\"}.fa-arrows-alt:before{content:\"\"}.fa-group:before,.fa-users:before{content:\"\"}.fa-chain:before,.fa-link:before{content:\"\"}.fa-cloud:before{content:\"\"}.fa-flask:before{content:\"\"}.fa-cut:before,.fa-scissors:before{content:\"\"}.fa-copy:before,.fa-files-o:before{content:\"\"}.fa-paperclip:before{content:\"\"}.fa-save:before,.fa-floppy-o:before{content:\"\"}.fa-square:before{content:\"\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\"}.fa-list-ul:before{content:\"\"}.fa-list-ol:before{content:\"\"}.fa-strikethrough:before{content:\"\"}.fa-underline:before{content:\"\"}.fa-table:before{content:\"\"}.fa-magic:before{content:\"\"}.fa-truck:before{content:\"\"}.fa-pinterest:before{content:\"\"}.fa-pinterest-square:before{content:\"\"}.fa-google-plus-square:before{content:\"\"}.fa-google-plus:before{content:\"\"}.fa-money:before{content:\"\"}.fa-caret-down:before{content:\"\"}.fa-caret-up:before{content:\"\"}.fa-caret-left:before{content:\"\"}.fa-caret-right:before{content:\"\"}.fa-columns:before{content:\"\"}.fa-unsorted:before,.fa-sort:before{content:\"\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\"}.fa-envelope:before{content:\"\"}.fa-linkedin:before{content:\"\"}.fa-rotate-left:before,.fa-undo:before{content:\"\"}.fa-legal:before,.fa-gavel:before{content:\"\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\"}.fa-comment-o:before{content:\"\"}.fa-comments-o:before{content:\"\"}.fa-flash:before,.fa-bolt:before{content:\"\"}.fa-sitemap:before{content:\"\"}.fa-umbrella:before{content:\"\"}.fa-paste:before,.fa-clipboard:before{content:\"\"}.fa-lightbulb-o:before{content:\"\"}.fa-exchange:before{content:\"\"}.fa-cloud-download:before{content:\"\"}.fa-cloud-upload:before{content:\"\"}.fa-user-md:before{content:\"\"}.fa-stethoscope:before{content:\"\"}.fa-suitcase:before{content:\"\"}.fa-bell-o:before{content:\"\"}.fa-coffee:before{content:\"\"}.fa-cutlery:before{content:\"\"}.fa-file-text-o:before{content:\"\"}.fa-building-o:before{content:\"\"}.fa-hospital-o:before{content:\"\"}.fa-ambulance:before{content:\"\"}.fa-medkit:before{content:\"\"}.fa-fighter-jet:before{content:\"\"}.fa-beer:before{content:\"\"}.fa-h-square:before{content:\"\"}.fa-plus-square:before{content:\"\"}.fa-angle-double-left:before{content:\"\"}.fa-angle-double-right:before{content:\"\"}.fa-angle-double-up:before{content:\"\"}.fa-angle-double-down:before{content:\"\"}.fa-angle-left:before{content:\"\"}.fa-angle-right:before{content:\"\"}.fa-angle-up:before{content:\"\"}.fa-angle-down:before{content:\"\"}.fa-desktop:before{content:\"\"}.fa-laptop:before{content:\"\"}.fa-tablet:before{content:\"\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\"}.fa-circle-o:before{content:\"\"}.fa-quote-left:before{content:\"\"}.fa-quote-right:before{content:\"\"}.fa-spinner:before{content:\"\"}.fa-circle:before{content:\"\"}.fa-mail-reply:before,.fa-reply:before{content:\"\"}.fa-github-alt:before{content:\"\"}.fa-folder-o:before{content:\"\"}.fa-folder-open-o:before{content:\"\"}.fa-smile-o:before{content:\"\"}.fa-frown-o:before{content:\"\"}.fa-meh-o:before{content:\"\"}.fa-gamepad:before{content:\"\"}.fa-keyboard-o:before{content:\"\"}.fa-flag-o:before{content:\"\"}.fa-flag-checkered:before{content:\"\"}.fa-terminal:before{content:\"\"}.fa-code:before{content:\"\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\"}.fa-location-arrow:before{content:\"\"}.fa-crop:before{content:\"\"}.fa-code-fork:before{content:\"\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\"}.fa-question:before{content:\"\"}.fa-info:before{content:\"\"}.fa-exclamation:before{content:\"\"}.fa-superscript:before{content:\"\"}.fa-subscript:before{content:\"\"}.fa-eraser:before{content:\"\"}.fa-puzzle-piece:before{content:\"\"}.fa-microphone:before{content:\"\"}.fa-microphone-slash:before{content:\"\"}.fa-shield:before{content:\"\"}.fa-calendar-o:before{content:\"\"}.fa-fire-extinguisher:before{content:\"\"}.fa-rocket:before{content:\"\"}.fa-maxcdn:before{content:\"\"}.fa-chevron-circle-left:before{content:\"\"}.fa-chevron-circle-right:before{content:\"\"}.fa-chevron-circle-up:before{content:\"\"}.fa-chevron-circle-down:before{content:\"\"}.fa-html5:before{content:\"\"}.fa-css3:before{content:\"\"}.fa-anchor:before{content:\"\"}.fa-unlock-alt:before{content:\"\"}.fa-bullseye:before{content:\"\"}.fa-ellipsis-h:before{content:\"\"}.fa-ellipsis-v:before{content:\"\"}.fa-rss-square:before{content:\"\"}.fa-play-circle:before{content:\"\"}.fa-ticket:before{content:\"\"}.fa-minus-square:before{content:\"\"}.fa-minus-square-o:before{content:\"\"}.fa-level-up:before{content:\"\"}.fa-level-down:before{content:\"\"}.fa-check-square:before{content:\"\"}.fa-pencil-square:before{content:\"\"}.fa-external-link-square:before{content:\"\"}.fa-share-square:before{content:\"\"}.fa-compass:before{content:\"\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\"}.fa-euro:before,.fa-eur:before{content:\"\"}.fa-gbp:before{content:\"\"}.fa-dollar:before,.fa-usd:before{content:\"\"}.fa-rupee:before,.fa-inr:before{content:\"\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\"}.fa-won:before,.fa-krw:before{content:\"\"}.fa-bitcoin:before,.fa-btc:before{content:\"\"}.fa-file:before{content:\"\"}.fa-file-text:before{content:\"\"}.fa-sort-alpha-asc:before{content:\"\"}.fa-sort-alpha-desc:before{content:\"\"}.fa-sort-amount-asc:before{content:\"\"}.fa-sort-amount-desc:before{content:\"\"}.fa-sort-numeric-asc:before{content:\"\"}.fa-sort-numeric-desc:before{content:\"\"}.fa-thumbs-up:before{content:\"\"}.fa-thumbs-down:before{content:\"\"}.fa-youtube-square:before{content:\"\"}.fa-youtube:before{content:\"\"}.fa-xing:before{content:\"\"}.fa-xing-square:before{content:\"\"}.fa-youtube-play:before{content:\"\"}.fa-dropbox:before{content:\"\"}.fa-stack-overflow:before{content:\"\"}.fa-instagram:before{content:\"\"}.fa-flickr:before{content:\"\"}.fa-adn:before{content:\"\"}.fa-bitbucket:before{content:\"\"}.fa-bitbucket-square:before{content:\"\"}.fa-tumblr:before{content:\"\"}.fa-tumblr-square:before{content:\"\"}.fa-long-arrow-down:before{content:\"\"}.fa-long-arrow-up:before{content:\"\"}.fa-long-arrow-left:before{content:\"\"}.fa-long-arrow-right:before{content:\"\"}.fa-apple:before{content:\"\"}.fa-windows:before{content:\"\"}.fa-android:before{content:\"\"}.fa-linux:before{content:\"\"}.fa-dribbble:before{content:\"\"}.fa-skype:before{content:\"\"}.fa-foursquare:before{content:\"\"}.fa-trello:before{content:\"\"}.fa-female:before{content:\"\"}.fa-male:before{content:\"\"}.fa-gittip:before,.fa-gratipay:before{content:\"\"}.fa-sun-o:before{content:\"\"}.fa-moon-o:before{content:\"\"}.fa-archive:before{content:\"\"}.fa-bug:before{content:\"\"}.fa-vk:before{content:\"\"}.fa-weibo:before{content:\"\"}.fa-renren:before{content:\"\"}.fa-pagelines:before{content:\"\"}.fa-stack-exchange:before{content:\"\"}.fa-arrow-circle-o-right:before{content:\"\"}.fa-arrow-circle-o-left:before{content:\"\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\"}.fa-dot-circle-o:before{content:\"\"}.fa-wheelchair:before{content:\"\"}.fa-vimeo-square:before{content:\"\"}.fa-turkish-lira:before,.fa-try:before{content:\"\"}.fa-plus-square-o:before{content:\"\"}.fa-space-shuttle:before{content:\"\"}.fa-slack:before{content:\"\"}.fa-envelope-square:before{content:\"\"}.fa-wordpress:before{content:\"\"}.fa-openid:before{content:\"\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\"}.fa-yahoo:before{content:\"\"}.fa-google:before{content:\"\"}.fa-reddit:before{content:\"\"}.fa-reddit-square:before{content:\"\"}.fa-stumbleupon-circle:before{content:\"\"}.fa-stumbleupon:before{content:\"\"}.fa-delicious:before{content:\"\"}.fa-digg:before{content:\"\"}.fa-pied-piper:before{content:\"\"}.fa-pied-piper-alt:before{content:\"\"}.fa-drupal:before{content:\"\"}.fa-joomla:before{content:\"\"}.fa-language:before{content:\"\"}.fa-fax:before{content:\"\"}.fa-building:before{content:\"\"}.fa-child:before{content:\"\"}.fa-paw:before{content:\"\"}.fa-spoon:before{content:\"\"}.fa-cube:before{content:\"\"}.fa-cubes:before{content:\"\"}.fa-behance:before{content:\"\"}.fa-behance-square:before{content:\"\"}.fa-steam:before{content:\"\"}.fa-steam-square:before{content:\"\"}.fa-recycle:before{content:\"\"}.fa-automobile:before,.fa-car:before{content:\"\"}.fa-cab:before,.fa-taxi:before{content:\"\"}.fa-tree:before{content:\"\"}.fa-spotify:before{content:\"\"}.fa-deviantart:before{content:\"\"}.fa-soundcloud:before{content:\"\"}.fa-database:before{content:\"\"}.fa-file-pdf-o:before{content:\"\"}.fa-file-word-o:before{content:\"\"}.fa-file-excel-o:before{content:\"\"}.fa-file-powerpoint-o:before{content:\"\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\"}.fa-file-code-o:before{content:\"\"}.fa-vine:before{content:\"\"}.fa-codepen:before{content:\"\"}.fa-jsfiddle:before{content:\"\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\"}.fa-circle-o-notch:before{content:\"\"}.fa-ra:before,.fa-rebel:before{content:\"\"}.fa-ge:before,.fa-empire:before{content:\"\"}.fa-git-square:before{content:\"\"}.fa-git:before{content:\"\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\"}.fa-tencent-weibo:before{content:\"\"}.fa-qq:before{content:\"\"}.fa-wechat:before,.fa-weixin:before{content:\"\"}.fa-send:before,.fa-paper-plane:before{content:\"\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\"}.fa-history:before{content:\"\"}.fa-circle-thin:before{content:\"\"}.fa-header:before{content:\"\"}.fa-paragraph:before{content:\"\"}.fa-sliders:before{content:\"\"}.fa-share-alt:before{content:\"\"}.fa-share-alt-square:before{content:\"\"}.fa-bomb:before{content:\"\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\"}.fa-tty:before{content:\"\"}.fa-binoculars:before{content:\"\"}.fa-plug:before{content:\"\"}.fa-slideshare:before{content:\"\"}.fa-twitch:before{content:\"\"}.fa-yelp:before{content:\"\"}.fa-newspaper-o:before{content:\"\"}.fa-wifi:before{content:\"\"}.fa-calculator:before{content:\"\"}.fa-paypal:before{content:\"\"}.fa-google-wallet:before{content:\"\"}.fa-cc-visa:before{content:\"\"}.fa-cc-mastercard:before{content:\"\"}.fa-cc-discover:before{content:\"\"}.fa-cc-amex:before{content:\"\"}.fa-cc-paypal:before{content:\"\"}.fa-cc-stripe:before{content:\"\"}.fa-bell-slash:before{content:\"\"}.fa-bell-slash-o:before{content:\"\"}.fa-trash:before{content:\"\"}.fa-copyright:before{content:\"\"}.fa-at:before{content:\"\"}.fa-eyedropper:before{content:\"\"}.fa-paint-brush:before{content:\"\"}.fa-birthday-cake:before{content:\"\"}.fa-area-chart:before{content:\"\"}.fa-pie-chart:before{content:\"\"}.fa-line-chart:before{content:\"\"}.fa-lastfm:before{content:\"\"}.fa-lastfm-square:before{content:\"\"}.fa-toggle-off:before{content:\"\"}.fa-toggle-on:before{content:\"\"}.fa-bicycle:before{content:\"\"}.fa-bus:before{content:\"\"}.fa-ioxhost:before{content:\"\"}.fa-angellist:before{content:\"\"}.fa-cc:before{content:\"\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\"}.fa-meanpath:before{content:\"\"}.fa-buysellads:before{content:\"\"}.fa-connectdevelop:before{content:\"\"}.fa-dashcube:before{content:\"\"}.fa-forumbee:before{content:\"\"}.fa-leanpub:before{content:\"\"}.fa-sellsy:before{content:\"\"}.fa-shirtsinbulk:before{content:\"\"}.fa-simplybuilt:before{content:\"\"}.fa-skyatlas:before{content:\"\"}.fa-cart-plus:before{content:\"\"}.fa-cart-arrow-down:before{content:\"\"}.fa-diamond:before{content:\"\"}.fa-ship:before{content:\"\"}.fa-user-secret:before{content:\"\"}.fa-motorcycle:before{content:\"\"}.fa-street-view:before{content:\"\"}.fa-heartbeat:before{content:\"\"}.fa-venus:before{content:\"\"}.fa-mars:before{content:\"\"}.fa-mercury:before{content:\"\"}.fa-intersex:before,.fa-transgender:before{content:\"\"}.fa-transgender-alt:before{content:\"\"}.fa-venus-double:before{content:\"\"}.fa-mars-double:before{content:\"\"}.fa-venus-mars:before{content:\"\"}.fa-mars-stroke:before{content:\"\"}.fa-mars-stroke-v:before{content:\"\"}.fa-mars-stroke-h:before{content:\"\"}.fa-neuter:before{content:\"\"}.fa-genderless:before{content:\"\"}.fa-facebook-official:before{content:\"\"}.fa-pinterest-p:before{content:\"\"}.fa-whatsapp:before{content:\"\"}.fa-server:before{content:\"\"}.fa-user-plus:before{content:\"\"}.fa-user-times:before{content:\"\"}.fa-hotel:before,.fa-bed:before{content:\"\"}.fa-viacoin:before{content:\"\"}.fa-train:before{content:\"\"}.fa-subway:before{content:\"\"}.fa-medium:before{content:\"\"}.fa-yc:before,.fa-y-combinator:before{content:\"\"}.fa-optin-monster:before{content:\"\"}.fa-opencart:before{content:\"\"}.fa-expeditedssl:before{content:\"\"}.fa-battery-4:before,.fa-battery-full:before{content:\"\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\"}.fa-mouse-pointer:before{content:\"\"}.fa-i-cursor:before{content:\"\"}.fa-object-group:before{content:\"\"}.fa-object-ungroup:before{content:\"\"}.fa-sticky-note:before{content:\"\"}.fa-sticky-note-o:before{content:\"\"}.fa-cc-jcb:before{content:\"\"}.fa-cc-diners-club:before{content:\"\"}.fa-clone:before{content:\"\"}.fa-balance-scale:before{content:\"\"}.fa-hourglass-o:before{content:\"\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\"}.fa-hourglass:before{content:\"\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\"}.fa-hand-scissors-o:before{content:\"\"}.fa-hand-lizard-o:before{content:\"\"}.fa-hand-spock-o:before{content:\"\"}.fa-hand-pointer-o:before{content:\"\"}.fa-hand-peace-o:before{content:\"\"}.fa-trademark:before{content:\"\"}.fa-registered:before{content:\"\"}.fa-creative-commons:before{content:\"\"}.fa-gg:before{content:\"\"}.fa-gg-circle:before{content:\"\"}.fa-tripadvisor:before{content:\"\"}.fa-odnoklassniki:before{content:\"\"}.fa-odnoklassniki-square:before{content:\"\"}.fa-get-pocket:before{content:\"\"}.fa-wikipedia-w:before{content:\"\"}.fa-safari:before{content:\"\"}.fa-chrome:before{content:\"\"}.fa-firefox:before{content:\"\"}.fa-opera:before{content:\"\"}.fa-internet-explorer:before{content:\"\"}.fa-tv:before,.fa-television:before{content:\"\"}.fa-contao:before{content:\"\"}.fa-500px:before{content:\"\"}.fa-amazon:before{content:\"\"}.fa-calendar-plus-o:before{content:\"\"}.fa-calendar-minus-o:before{content:\"\"}.fa-calendar-times-o:before{content:\"\"}.fa-calendar-check-o:before{content:\"\"}.fa-industry:before{content:\"\"}.fa-map-pin:before{content:\"\"}.fa-map-signs:before{content:\"\"}.fa-map-o:before{content:\"\"}.fa-map:before{content:\"\"}.fa-commenting:before{content:\"\"}.fa-commenting-o:before{content:\"\"}.fa-houzz:before{content:\"\"}.fa-vimeo:before{content:\"\"}.fa-black-tie:before{content:\"\"}.fa-fonticons:before{content:\"\"}","/*!\n * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\\f000\"}.fa-music:before{content:\"\\f001\"}.fa-search:before{content:\"\\f002\"}.fa-envelope-o:before{content:\"\\f003\"}.fa-heart:before{content:\"\\f004\"}.fa-star:before{content:\"\\f005\"}.fa-star-o:before{content:\"\\f006\"}.fa-user:before{content:\"\\f007\"}.fa-film:before{content:\"\\f008\"}.fa-th-large:before{content:\"\\f009\"}.fa-th:before{content:\"\\f00a\"}.fa-th-list:before{content:\"\\f00b\"}.fa-check:before{content:\"\\f00c\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\\f00d\"}.fa-search-plus:before{content:\"\\f00e\"}.fa-search-minus:before{content:\"\\f010\"}.fa-power-off:before{content:\"\\f011\"}.fa-signal:before{content:\"\\f012\"}.fa-gear:before,.fa-cog:before{content:\"\\f013\"}.fa-trash-o:before{content:\"\\f014\"}.fa-home:before{content:\"\\f015\"}.fa-file-o:before{content:\"\\f016\"}.fa-clock-o:before{content:\"\\f017\"}.fa-road:before{content:\"\\f018\"}.fa-download:before{content:\"\\f019\"}.fa-arrow-circle-o-down:before{content:\"\\f01a\"}.fa-arrow-circle-o-up:before{content:\"\\f01b\"}.fa-inbox:before{content:\"\\f01c\"}.fa-play-circle-o:before{content:\"\\f01d\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\\f01e\"}.fa-refresh:before{content:\"\\f021\"}.fa-list-alt:before{content:\"\\f022\"}.fa-lock:before{content:\"\\f023\"}.fa-flag:before{content:\"\\f024\"}.fa-headphones:before{content:\"\\f025\"}.fa-volume-off:before{content:\"\\f026\"}.fa-volume-down:before{content:\"\\f027\"}.fa-volume-up:before{content:\"\\f028\"}.fa-qrcode:before{content:\"\\f029\"}.fa-barcode:before{content:\"\\f02a\"}.fa-tag:before{content:\"\\f02b\"}.fa-tags:before{content:\"\\f02c\"}.fa-book:before{content:\"\\f02d\"}.fa-bookmark:before{content:\"\\f02e\"}.fa-print:before{content:\"\\f02f\"}.fa-camera:before{content:\"\\f030\"}.fa-font:before{content:\"\\f031\"}.fa-bold:before{content:\"\\f032\"}.fa-italic:before{content:\"\\f033\"}.fa-text-height:before{content:\"\\f034\"}.fa-text-width:before{content:\"\\f035\"}.fa-align-left:before{content:\"\\f036\"}.fa-align-center:before{content:\"\\f037\"}.fa-align-right:before{content:\"\\f038\"}.fa-align-justify:before{content:\"\\f039\"}.fa-list:before{content:\"\\f03a\"}.fa-dedent:before,.fa-outdent:before{content:\"\\f03b\"}.fa-indent:before{content:\"\\f03c\"}.fa-video-camera:before{content:\"\\f03d\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\\f03e\"}.fa-pencil:before{content:\"\\f040\"}.fa-map-marker:before{content:\"\\f041\"}.fa-adjust:before{content:\"\\f042\"}.fa-tint:before{content:\"\\f043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\\f044\"}.fa-share-square-o:before{content:\"\\f045\"}.fa-check-square-o:before{content:\"\\f046\"}.fa-arrows:before{content:\"\\f047\"}.fa-step-backward:before{content:\"\\f048\"}.fa-fast-backward:before{content:\"\\f049\"}.fa-backward:before{content:\"\\f04a\"}.fa-play:before{content:\"\\f04b\"}.fa-pause:before{content:\"\\f04c\"}.fa-stop:before{content:\"\\f04d\"}.fa-forward:before{content:\"\\f04e\"}.fa-fast-forward:before{content:\"\\f050\"}.fa-step-forward:before{content:\"\\f051\"}.fa-eject:before{content:\"\\f052\"}.fa-chevron-left:before{content:\"\\f053\"}.fa-chevron-right:before{content:\"\\f054\"}.fa-plus-circle:before{content:\"\\f055\"}.fa-minus-circle:before{content:\"\\f056\"}.fa-times-circle:before{content:\"\\f057\"}.fa-check-circle:before{content:\"\\f058\"}.fa-question-circle:before{content:\"\\f059\"}.fa-info-circle:before{content:\"\\f05a\"}.fa-crosshairs:before{content:\"\\f05b\"}.fa-times-circle-o:before{content:\"\\f05c\"}.fa-check-circle-o:before{content:\"\\f05d\"}.fa-ban:before{content:\"\\f05e\"}.fa-arrow-left:before{content:\"\\f060\"}.fa-arrow-right:before{content:\"\\f061\"}.fa-arrow-up:before{content:\"\\f062\"}.fa-arrow-down:before{content:\"\\f063\"}.fa-mail-forward:before,.fa-share:before{content:\"\\f064\"}.fa-expand:before{content:\"\\f065\"}.fa-compress:before{content:\"\\f066\"}.fa-plus:before{content:\"\\f067\"}.fa-minus:before{content:\"\\f068\"}.fa-asterisk:before{content:\"\\f069\"}.fa-exclamation-circle:before{content:\"\\f06a\"}.fa-gift:before{content:\"\\f06b\"}.fa-leaf:before{content:\"\\f06c\"}.fa-fire:before{content:\"\\f06d\"}.fa-eye:before{content:\"\\f06e\"}.fa-eye-slash:before{content:\"\\f070\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\\f071\"}.fa-plane:before{content:\"\\f072\"}.fa-calendar:before{content:\"\\f073\"}.fa-random:before{content:\"\\f074\"}.fa-comment:before{content:\"\\f075\"}.fa-magnet:before{content:\"\\f076\"}.fa-chevron-up:before{content:\"\\f077\"}.fa-chevron-down:before{content:\"\\f078\"}.fa-retweet:before{content:\"\\f079\"}.fa-shopping-cart:before{content:\"\\f07a\"}.fa-folder:before{content:\"\\f07b\"}.fa-folder-open:before{content:\"\\f07c\"}.fa-arrows-v:before{content:\"\\f07d\"}.fa-arrows-h:before{content:\"\\f07e\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\\f080\"}.fa-twitter-square:before{content:\"\\f081\"}.fa-facebook-square:before{content:\"\\f082\"}.fa-camera-retro:before{content:\"\\f083\"}.fa-key:before{content:\"\\f084\"}.fa-gears:before,.fa-cogs:before{content:\"\\f085\"}.fa-comments:before{content:\"\\f086\"}.fa-thumbs-o-up:before{content:\"\\f087\"}.fa-thumbs-o-down:before{content:\"\\f088\"}.fa-star-half:before{content:\"\\f089\"}.fa-heart-o:before{content:\"\\f08a\"}.fa-sign-out:before{content:\"\\f08b\"}.fa-linkedin-square:before{content:\"\\f08c\"}.fa-thumb-tack:before{content:\"\\f08d\"}.fa-external-link:before{content:\"\\f08e\"}.fa-sign-in:before{content:\"\\f090\"}.fa-trophy:before{content:\"\\f091\"}.fa-github-square:before{content:\"\\f092\"}.fa-upload:before{content:\"\\f093\"}.fa-lemon-o:before{content:\"\\f094\"}.fa-phone:before{content:\"\\f095\"}.fa-square-o:before{content:\"\\f096\"}.fa-bookmark-o:before{content:\"\\f097\"}.fa-phone-square:before{content:\"\\f098\"}.fa-twitter:before{content:\"\\f099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\\f09a\"}.fa-github:before{content:\"\\f09b\"}.fa-unlock:before{content:\"\\f09c\"}.fa-credit-card:before{content:\"\\f09d\"}.fa-feed:before,.fa-rss:before{content:\"\\f09e\"}.fa-hdd-o:before{content:\"\\f0a0\"}.fa-bullhorn:before{content:\"\\f0a1\"}.fa-bell:before{content:\"\\f0f3\"}.fa-certificate:before{content:\"\\f0a3\"}.fa-hand-o-right:before{content:\"\\f0a4\"}.fa-hand-o-left:before{content:\"\\f0a5\"}.fa-hand-o-up:before{content:\"\\f0a6\"}.fa-hand-o-down:before{content:\"\\f0a7\"}.fa-arrow-circle-left:before{content:\"\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\f0aa\"}.fa-arrow-circle-down:before{content:\"\\f0ab\"}.fa-globe:before{content:\"\\f0ac\"}.fa-wrench:before{content:\"\\f0ad\"}.fa-tasks:before{content:\"\\f0ae\"}.fa-filter:before{content:\"\\f0b0\"}.fa-briefcase:before{content:\"\\f0b1\"}.fa-arrows-alt:before{content:\"\\f0b2\"}.fa-group:before,.fa-users:before{content:\"\\f0c0\"}.fa-chain:before,.fa-link:before{content:\"\\f0c1\"}.fa-cloud:before{content:\"\\f0c2\"}.fa-flask:before{content:\"\\f0c3\"}.fa-cut:before,.fa-scissors:before{content:\"\\f0c4\"}.fa-copy:before,.fa-files-o:before{content:\"\\f0c5\"}.fa-paperclip:before{content:\"\\f0c6\"}.fa-save:before,.fa-floppy-o:before{content:\"\\f0c7\"}.fa-square:before{content:\"\\f0c8\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\\f0c9\"}.fa-list-ul:before{content:\"\\f0ca\"}.fa-list-ol:before{content:\"\\f0cb\"}.fa-strikethrough:before{content:\"\\f0cc\"}.fa-underline:before{content:\"\\f0cd\"}.fa-table:before{content:\"\\f0ce\"}.fa-magic:before{content:\"\\f0d0\"}.fa-truck:before{content:\"\\f0d1\"}.fa-pinterest:before{content:\"\\f0d2\"}.fa-pinterest-square:before{content:\"\\f0d3\"}.fa-google-plus-square:before{content:\"\\f0d4\"}.fa-google-plus:before{content:\"\\f0d5\"}.fa-money:before{content:\"\\f0d6\"}.fa-caret-down:before{content:\"\\f0d7\"}.fa-caret-up:before{content:\"\\f0d8\"}.fa-caret-left:before{content:\"\\f0d9\"}.fa-caret-right:before{content:\"\\f0da\"}.fa-columns:before{content:\"\\f0db\"}.fa-unsorted:before,.fa-sort:before{content:\"\\f0dc\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\\f0dd\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\\f0de\"}.fa-envelope:before{content:\"\\f0e0\"}.fa-linkedin:before{content:\"\\f0e1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\\f0e2\"}.fa-legal:before,.fa-gavel:before{content:\"\\f0e3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\\f0e4\"}.fa-comment-o:before{content:\"\\f0e5\"}.fa-comments-o:before{content:\"\\f0e6\"}.fa-flash:before,.fa-bolt:before{content:\"\\f0e7\"}.fa-sitemap:before{content:\"\\f0e8\"}.fa-umbrella:before{content:\"\\f0e9\"}.fa-paste:before,.fa-clipboard:before{content:\"\\f0ea\"}.fa-lightbulb-o:before{content:\"\\f0eb\"}.fa-exchange:before{content:\"\\f0ec\"}.fa-cloud-download:before{content:\"\\f0ed\"}.fa-cloud-upload:before{content:\"\\f0ee\"}.fa-user-md:before{content:\"\\f0f0\"}.fa-stethoscope:before{content:\"\\f0f1\"}.fa-suitcase:before{content:\"\\f0f2\"}.fa-bell-o:before{content:\"\\f0a2\"}.fa-coffee:before{content:\"\\f0f4\"}.fa-cutlery:before{content:\"\\f0f5\"}.fa-file-text-o:before{content:\"\\f0f6\"}.fa-building-o:before{content:\"\\f0f7\"}.fa-hospital-o:before{content:\"\\f0f8\"}.fa-ambulance:before{content:\"\\f0f9\"}.fa-medkit:before{content:\"\\f0fa\"}.fa-fighter-jet:before{content:\"\\f0fb\"}.fa-beer:before{content:\"\\f0fc\"}.fa-h-square:before{content:\"\\f0fd\"}.fa-plus-square:before{content:\"\\f0fe\"}.fa-angle-double-left:before{content:\"\\f100\"}.fa-angle-double-right:before{content:\"\\f101\"}.fa-angle-double-up:before{content:\"\\f102\"}.fa-angle-double-down:before{content:\"\\f103\"}.fa-angle-left:before{content:\"\\f104\"}.fa-angle-right:before{content:\"\\f105\"}.fa-angle-up:before{content:\"\\f106\"}.fa-angle-down:before{content:\"\\f107\"}.fa-desktop:before{content:\"\\f108\"}.fa-laptop:before{content:\"\\f109\"}.fa-tablet:before{content:\"\\f10a\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\\f10b\"}.fa-circle-o:before{content:\"\\f10c\"}.fa-quote-left:before{content:\"\\f10d\"}.fa-quote-right:before{content:\"\\f10e\"}.fa-spinner:before{content:\"\\f110\"}.fa-circle:before{content:\"\\f111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\\f112\"}.fa-github-alt:before{content:\"\\f113\"}.fa-folder-o:before{content:\"\\f114\"}.fa-folder-open-o:before{content:\"\\f115\"}.fa-smile-o:before{content:\"\\f118\"}.fa-frown-o:before{content:\"\\f119\"}.fa-meh-o:before{content:\"\\f11a\"}.fa-gamepad:before{content:\"\\f11b\"}.fa-keyboard-o:before{content:\"\\f11c\"}.fa-flag-o:before{content:\"\\f11d\"}.fa-flag-checkered:before{content:\"\\f11e\"}.fa-terminal:before{content:\"\\f120\"}.fa-code:before{content:\"\\f121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\\f122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\\f123\"}.fa-location-arrow:before{content:\"\\f124\"}.fa-crop:before{content:\"\\f125\"}.fa-code-fork:before{content:\"\\f126\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\\f127\"}.fa-question:before{content:\"\\f128\"}.fa-info:before{content:\"\\f129\"}.fa-exclamation:before{content:\"\\f12a\"}.fa-superscript:before{content:\"\\f12b\"}.fa-subscript:before{content:\"\\f12c\"}.fa-eraser:before{content:\"\\f12d\"}.fa-puzzle-piece:before{content:\"\\f12e\"}.fa-microphone:before{content:\"\\f130\"}.fa-microphone-slash:before{content:\"\\f131\"}.fa-shield:before{content:\"\\f132\"}.fa-calendar-o:before{content:\"\\f133\"}.fa-fire-extinguisher:before{content:\"\\f134\"}.fa-rocket:before{content:\"\\f135\"}.fa-maxcdn:before{content:\"\\f136\"}.fa-chevron-circle-left:before{content:\"\\f137\"}.fa-chevron-circle-right:before{content:\"\\f138\"}.fa-chevron-circle-up:before{content:\"\\f139\"}.fa-chevron-circle-down:before{content:\"\\f13a\"}.fa-html5:before{content:\"\\f13b\"}.fa-css3:before{content:\"\\f13c\"}.fa-anchor:before{content:\"\\f13d\"}.fa-unlock-alt:before{content:\"\\f13e\"}.fa-bullseye:before{content:\"\\f140\"}.fa-ellipsis-h:before{content:\"\\f141\"}.fa-ellipsis-v:before{content:\"\\f142\"}.fa-rss-square:before{content:\"\\f143\"}.fa-play-circle:before{content:\"\\f144\"}.fa-ticket:before{content:\"\\f145\"}.fa-minus-square:before{content:\"\\f146\"}.fa-minus-square-o:before{content:\"\\f147\"}.fa-level-up:before{content:\"\\f148\"}.fa-level-down:before{content:\"\\f149\"}.fa-check-square:before{content:\"\\f14a\"}.fa-pencil-square:before{content:\"\\f14b\"}.fa-external-link-square:before{content:\"\\f14c\"}.fa-share-square:before{content:\"\\f14d\"}.fa-compass:before{content:\"\\f14e\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\\f150\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\\f151\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\\f152\"}.fa-euro:before,.fa-eur:before{content:\"\\f153\"}.fa-gbp:before{content:\"\\f154\"}.fa-dollar:before,.fa-usd:before{content:\"\\f155\"}.fa-rupee:before,.fa-inr:before{content:\"\\f156\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\\f157\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\\f158\"}.fa-won:before,.fa-krw:before{content:\"\\f159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\\f15a\"}.fa-file:before{content:\"\\f15b\"}.fa-file-text:before{content:\"\\f15c\"}.fa-sort-alpha-asc:before{content:\"\\f15d\"}.fa-sort-alpha-desc:before{content:\"\\f15e\"}.fa-sort-amount-asc:before{content:\"\\f160\"}.fa-sort-amount-desc:before{content:\"\\f161\"}.fa-sort-numeric-asc:before{content:\"\\f162\"}.fa-sort-numeric-desc:before{content:\"\\f163\"}.fa-thumbs-up:before{content:\"\\f164\"}.fa-thumbs-down:before{content:\"\\f165\"}.fa-youtube-square:before{content:\"\\f166\"}.fa-youtube:before{content:\"\\f167\"}.fa-xing:before{content:\"\\f168\"}.fa-xing-square:before{content:\"\\f169\"}.fa-youtube-play:before{content:\"\\f16a\"}.fa-dropbox:before{content:\"\\f16b\"}.fa-stack-overflow:before{content:\"\\f16c\"}.fa-instagram:before{content:\"\\f16d\"}.fa-flickr:before{content:\"\\f16e\"}.fa-adn:before{content:\"\\f170\"}.fa-bitbucket:before{content:\"\\f171\"}.fa-bitbucket-square:before{content:\"\\f172\"}.fa-tumblr:before{content:\"\\f173\"}.fa-tumblr-square:before{content:\"\\f174\"}.fa-long-arrow-down:before{content:\"\\f175\"}.fa-long-arrow-up:before{content:\"\\f176\"}.fa-long-arrow-left:before{content:\"\\f177\"}.fa-long-arrow-right:before{content:\"\\f178\"}.fa-apple:before{content:\"\\f179\"}.fa-windows:before{content:\"\\f17a\"}.fa-android:before{content:\"\\f17b\"}.fa-linux:before{content:\"\\f17c\"}.fa-dribbble:before{content:\"\\f17d\"}.fa-skype:before{content:\"\\f17e\"}.fa-foursquare:before{content:\"\\f180\"}.fa-trello:before{content:\"\\f181\"}.fa-female:before{content:\"\\f182\"}.fa-male:before{content:\"\\f183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\\f184\"}.fa-sun-o:before{content:\"\\f185\"}.fa-moon-o:before{content:\"\\f186\"}.fa-archive:before{content:\"\\f187\"}.fa-bug:before{content:\"\\f188\"}.fa-vk:before{content:\"\\f189\"}.fa-weibo:before{content:\"\\f18a\"}.fa-renren:before{content:\"\\f18b\"}.fa-pagelines:before{content:\"\\f18c\"}.fa-stack-exchange:before{content:\"\\f18d\"}.fa-arrow-circle-o-right:before{content:\"\\f18e\"}.fa-arrow-circle-o-left:before{content:\"\\f190\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\\f191\"}.fa-dot-circle-o:before{content:\"\\f192\"}.fa-wheelchair:before{content:\"\\f193\"}.fa-vimeo-square:before{content:\"\\f194\"}.fa-turkish-lira:before,.fa-try:before{content:\"\\f195\"}.fa-plus-square-o:before{content:\"\\f196\"}.fa-space-shuttle:before{content:\"\\f197\"}.fa-slack:before{content:\"\\f198\"}.fa-envelope-square:before{content:\"\\f199\"}.fa-wordpress:before{content:\"\\f19a\"}.fa-openid:before{content:\"\\f19b\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\\f19c\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\\f19d\"}.fa-yahoo:before{content:\"\\f19e\"}.fa-google:before{content:\"\\f1a0\"}.fa-reddit:before{content:\"\\f1a1\"}.fa-reddit-square:before{content:\"\\f1a2\"}.fa-stumbleupon-circle:before{content:\"\\f1a3\"}.fa-stumbleupon:before{content:\"\\f1a4\"}.fa-delicious:before{content:\"\\f1a5\"}.fa-digg:before{content:\"\\f1a6\"}.fa-pied-piper:before{content:\"\\f1a7\"}.fa-pied-piper-alt:before{content:\"\\f1a8\"}.fa-drupal:before{content:\"\\f1a9\"}.fa-joomla:before{content:\"\\f1aa\"}.fa-language:before{content:\"\\f1ab\"}.fa-fax:before{content:\"\\f1ac\"}.fa-building:before{content:\"\\f1ad\"}.fa-child:before{content:\"\\f1ae\"}.fa-paw:before{content:\"\\f1b0\"}.fa-spoon:before{content:\"\\f1b1\"}.fa-cube:before{content:\"\\f1b2\"}.fa-cubes:before{content:\"\\f1b3\"}.fa-behance:before{content:\"\\f1b4\"}.fa-behance-square:before{content:\"\\f1b5\"}.fa-steam:before{content:\"\\f1b6\"}.fa-steam-square:before{content:\"\\f1b7\"}.fa-recycle:before{content:\"\\f1b8\"}.fa-automobile:before,.fa-car:before{content:\"\\f1b9\"}.fa-cab:before,.fa-taxi:before{content:\"\\f1ba\"}.fa-tree:before{content:\"\\f1bb\"}.fa-spotify:before{content:\"\\f1bc\"}.fa-deviantart:before{content:\"\\f1bd\"}.fa-soundcloud:before{content:\"\\f1be\"}.fa-database:before{content:\"\\f1c0\"}.fa-file-pdf-o:before{content:\"\\f1c1\"}.fa-file-word-o:before{content:\"\\f1c2\"}.fa-file-excel-o:before{content:\"\\f1c3\"}.fa-file-powerpoint-o:before{content:\"\\f1c4\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\\f1c5\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\\f1c6\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\\f1c7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\\f1c8\"}.fa-file-code-o:before{content:\"\\f1c9\"}.fa-vine:before{content:\"\\f1ca\"}.fa-codepen:before{content:\"\\f1cb\"}.fa-jsfiddle:before{content:\"\\f1cc\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\\f1cd\"}.fa-circle-o-notch:before{content:\"\\f1ce\"}.fa-ra:before,.fa-rebel:before{content:\"\\f1d0\"}.fa-ge:before,.fa-empire:before{content:\"\\f1d1\"}.fa-git-square:before{content:\"\\f1d2\"}.fa-git:before{content:\"\\f1d3\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\\f1d4\"}.fa-tencent-weibo:before{content:\"\\f1d5\"}.fa-qq:before{content:\"\\f1d6\"}.fa-wechat:before,.fa-weixin:before{content:\"\\f1d7\"}.fa-send:before,.fa-paper-plane:before{content:\"\\f1d8\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\\f1d9\"}.fa-history:before{content:\"\\f1da\"}.fa-circle-thin:before{content:\"\\f1db\"}.fa-header:before{content:\"\\f1dc\"}.fa-paragraph:before{content:\"\\f1dd\"}.fa-sliders:before{content:\"\\f1de\"}.fa-share-alt:before{content:\"\\f1e0\"}.fa-share-alt-square:before{content:\"\\f1e1\"}.fa-bomb:before{content:\"\\f1e2\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\\f1e3\"}.fa-tty:before{content:\"\\f1e4\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-plug:before{content:\"\\f1e6\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-newspaper-o:before{content:\"\\f1ea\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bell-slash-o:before{content:\"\\f1f7\"}.fa-trash:before{content:\"\\f1f8\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-at:before{content:\"\\f1fa\"}.fa-eyedropper:before{content:\"\\f1fb\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-area-chart:before{content:\"\\f1fe\"}.fa-pie-chart:before{content:\"\\f200\"}.fa-line-chart:before{content:\"\\f201\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-bicycle:before{content:\"\\f206\"}.fa-bus:before{content:\"\\f207\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-angellist:before{content:\"\\f209\"}.fa-cc:before{content:\"\\f20a\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\\f20b\"}.fa-meanpath:before{content:\"\\f20c\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-dashcube:before{content:\"\\f210\"}.fa-forumbee:before{content:\"\\f211\"}.fa-leanpub:before{content:\"\\f212\"}.fa-sellsy:before{content:\"\\f213\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-diamond:before{content:\"\\f219\"}.fa-ship:before{content:\"\\f21a\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-street-view:before{content:\"\\f21d\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-venus:before{content:\"\\f221\"}.fa-mars:before{content:\"\\f222\"}.fa-mercury:before{content:\"\\f223\"}.fa-intersex:before,.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-venus-double:before{content:\"\\f226\"}.fa-mars-double:before{content:\"\\f227\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-neuter:before{content:\"\\f22c\"}.fa-genderless:before{content:\"\\f22d\"}.fa-facebook-official:before{content:\"\\f230\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-server:before{content:\"\\f233\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-times:before{content:\"\\f235\"}.fa-hotel:before,.fa-bed:before{content:\"\\f236\"}.fa-viacoin:before{content:\"\\f237\"}.fa-train:before{content:\"\\f238\"}.fa-subway:before{content:\"\\f239\"}.fa-medium:before{content:\"\\f23a\"}.fa-yc:before,.fa-y-combinator:before{content:\"\\f23b\"}.fa-optin-monster:before{content:\"\\f23c\"}.fa-opencart:before{content:\"\\f23d\"}.fa-expeditedssl:before{content:\"\\f23e\"}.fa-battery-4:before,.fa-battery-full:before{content:\"\\f240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\\f241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\\f242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\\f243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\\f244\"}.fa-mouse-pointer:before{content:\"\\f245\"}.fa-i-cursor:before{content:\"\\f246\"}.fa-object-group:before{content:\"\\f247\"}.fa-object-ungroup:before{content:\"\\f248\"}.fa-sticky-note:before{content:\"\\f249\"}.fa-sticky-note-o:before{content:\"\\f24a\"}.fa-cc-jcb:before{content:\"\\f24b\"}.fa-cc-diners-club:before{content:\"\\f24c\"}.fa-clone:before{content:\"\\f24d\"}.fa-balance-scale:before{content:\"\\f24e\"}.fa-hourglass-o:before{content:\"\\f250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\\f251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\\f252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\\f253\"}.fa-hourglass:before{content:\"\\f254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\\f255\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\\f256\"}.fa-hand-scissors-o:before{content:\"\\f257\"}.fa-hand-lizard-o:before{content:\"\\f258\"}.fa-hand-spock-o:before{content:\"\\f259\"}.fa-hand-pointer-o:before{content:\"\\f25a\"}.fa-hand-peace-o:before{content:\"\\f25b\"}.fa-trademark:before{content:\"\\f25c\"}.fa-registered:before{content:\"\\f25d\"}.fa-creative-commons:before{content:\"\\f25e\"}.fa-gg:before{content:\"\\f260\"}.fa-gg-circle:before{content:\"\\f261\"}.fa-tripadvisor:before{content:\"\\f262\"}.fa-odnoklassniki:before{content:\"\\f263\"}.fa-odnoklassniki-square:before{content:\"\\f264\"}.fa-get-pocket:before{content:\"\\f265\"}.fa-wikipedia-w:before{content:\"\\f266\"}.fa-safari:before{content:\"\\f267\"}.fa-chrome:before{content:\"\\f268\"}.fa-firefox:before{content:\"\\f269\"}.fa-opera:before{content:\"\\f26a\"}.fa-internet-explorer:before{content:\"\\f26b\"}.fa-tv:before,.fa-television:before{content:\"\\f26c\"}.fa-contao:before{content:\"\\f26d\"}.fa-500px:before{content:\"\\f26e\"}.fa-amazon:before{content:\"\\f270\"}.fa-calendar-plus-o:before{content:\"\\f271\"}.fa-calendar-minus-o:before{content:\"\\f272\"}.fa-calendar-times-o:before{content:\"\\f273\"}.fa-calendar-check-o:before{content:\"\\f274\"}.fa-industry:before{content:\"\\f275\"}.fa-map-pin:before{content:\"\\f276\"}.fa-map-signs:before{content:\"\\f277\"}.fa-map-o:before{content:\"\\f278\"}.fa-map:before{content:\"\\f279\"}.fa-commenting:before{content:\"\\f27a\"}.fa-commenting-o:before{content:\"\\f27b\"}.fa-houzz:before{content:\"\\f27c\"}.fa-vimeo:before{content:\"\\f27d\"}.fa-black-tie:before{content:\"\\f27e\"}.fa-fonticons:before{content:\"\\f280\"}\n"]} \ No newline at end of file diff --git a/filer/static/filer/fonts/FontAwesome.otf b/filer/static/filer/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..681bdd4d4c8dddbaeb4d4f2a1f58c38cad92afe0 GIT binary patch literal 106260 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�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 literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/django-filer-iconfont.eot b/filer/static/filer/fonts/django-filer-iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..2b047ba3bc1f6566b76e565553bfa7a3809be1fa GIT binary patch literal 3860 zcmd^CUu;`f8UMcP`^VRgZ{l1#aS}JXPO#m7ani)GL%O9^>7OAg5w^C{BqZv^H-9?E zb{#iu5fVY2m;`+&NE6aDcp48ApiNZ=V(?HvnlvGy@C-tC(+5>Dy3o=mqdr=n7;ikRckN3rcze(jw*25h~CW zIG=B3D2Sm^+M*Cmoq6&63Ge&aZ-O`n>bbAJI5|Ce`&nSViSdP{^-A-j`cMA}52Vpj zE4Ay(cMiZj($5i@wN<}T9sAzT_Cq#6E3JZ{Ya00UTeL5%uD7oZ(}M???-PvYYK^5z zy>Lw&d@seDU7{(W!<0uiBlko+{Jpgn~jZj>{q{jo+u`6`JLFl8<7Wi zG*-I->*3=l3glKlbU*$^@3Z$Q+R+GpIhzzId5c9FLz^hvoe(BqbN*zcVvKPPhyTletUfzwj+GKt9RKpq=Ty z@6!;yDn{()9e9sDi_52~bUff7rgm3Qd+Dsyl@t1-246ik-phN0Ap%>F8AONCU@zB{ zUkJ$=Qs^+=@CxWU%_|vQ=s`?;8nE;jcXp~lR>zDcS=hA=y(sli3<9$M|M#ayIpF7A zH^3`__))S<-Uyd831NVENP{;ifM=zNhXce)n#3%CN2S5n6j+@`@<#qiga0W&W=oR{ z4-i9X63ZakX^0L5uu2-@gqU`kL=4YidY)G44*iEO@LPOOOKB&xs&+3_0#B?a{xRPt zoMRp{lkt4c;lwjMFnx?m#RB(oyqIIMB6Y)w=r;|=xT!}RqaNXZN35M{-C!Fe17F8x zqt0(yVqACL-|%;&=9Kff1)j-FkFwdz=GeVA!rbrhbfhmFGT*RA-+U)B)E|kv);rOz z-evwX#fjX~Gz>|IPOf;2^SR>dx})DUjJvvH8+Yy){6~dBvK{@s_jHFeRUwE2N)swo zd3spjJIO0?bz9oovo3q{ST~r zQ5HD`+9_H654N=!bKTgYWdjZ8a>GCihH+7tCwWN7JAXeZI^qw>2y}R*@B=_)S#-9T z8#BecqdZ+I<_>YWR4j{4$;5!N7bMsNwq+*X*JH+wNDQ-nTc&>LhVj~GDDNA_jhBQg zBC*H~BX;XElwDi+HvgVR>5K3(W|vhLxWIYKv_>^V$>D-lI>x!O!=pS{Rs*;Xu^6ym zW^T;-(c$#mVtPLAgwshkr1hn2yXR<6CNmTc$A*mO6n!YJsP1gm9Wq!c@Z{n2;#~S@ z-$WrBaYG>^mC5wX$HL(uyoVEuiaw;vXx`1vy2FX2Qh?oZl8FC{*rsSd&A{?}u>{{C zN6-(5(GuE8SUqMw1G^>c$l~01UU_mKLpsjck-^1*ZN}Va^cVbUdL#>tgXsWf4F!X}Nhj!u$9n=NS+@IQ1|qC%)0jWPc}>wF z*p`r_h0F4iSe+D{#ZekhN)qOC@UiOR#nQ~(^!_xyTarbLbjyy!-0ONYboIOu)z2dr z7Zbuye+$`oSJ-@fB7-De45l{i~H650soK&F~D{*<&qQ$Q+yB}Y%mEp93oyvv7^oJ z?&XNOW7})eIrdifr6fDzi+iQT1)Vx0|Bw#J2|@j^9L6`980DipYncVciBM%#(jhrB zy&!ccU(iBuwd5?5cQoau^aHb*a^~tO2^VTwxB7i|-_*WhUN3xk-h(k34J7;aC+y<~ zy^{C#Ns0Hx-3s`2dNQ4#Hx7I$zcbZr!dkJek3Q&R5PJDfr?Lq)TNrh42q@jfI`EM$ zHjo#myVwN%Yh4_{K9{>VioE#&P9p0zCg^Z&l`FMM>xsN45-<3zjkQMI zJ5rc>BL9qE_gj^=U-e$T?rm(YOt;(1-g2w4?w!VRey!H3dWXJ{moXRKG9lRS#5`f zTWeIRrhlzjsaN&dTKyGgy|L*}w2^0xTGek^&9$ZWm6qSv@)cvluOakEAhUzQ?bQk7 S-->SuSleiuSDG@Vvi5%*T_A4& literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/django-filer-iconfont.svg b/filer/static/filer/fonts/django-filer-iconfont.svg new file mode 100644 index 000000000..8bb3132b7 --- /dev/null +++ b/filer/static/filer/fonts/django-filer-iconfont.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/filer/static/filer/fonts/django-filer-iconfont.ttf b/filer/static/filer/fonts/django-filer-iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7c0224e6c63d6c57d5d279243b66ea3fef6147ed GIT binary patch literal 3640 zcmd^BO>7(25uRD@4|l0uiCR*kBwATYCFws=vP6-poXCdbpA97R9CrP#;>Lhx$^Wa=%$p zv6A@Udsm#d^S+sRZ{Ezj(Gn9;jJ7F4Gv{8oc*^@;_8UaJ0QACFUYMSpzVkGAzK!{% zm5oa4qsCAENu;DfskQpe)w_qtAyO|8>GgHLQl0qjI|rc~fJ*BCR7HWDehvD<`bOu* zC_Q|L^*+XYq264nSRb2J*cUM$->BSZafUV^PhsvgDjWXdkDUUMbr1X9X*D-H_Ah?< z9Fg6D{5J&O6)-YB#G|kvpL(1S0lNNs_itbCfBFH%x)#CD=aZr-Z}CWBSQABi3&I7= z9IB8hS|MtY1rEC5BXWyoXo-~5XU|_Cr(WqaXq41_^8Gy5Yikv(-(8uZCsGE&r0=2p zXMT+|z^8c?*ty>O0gccr;)E6f`j}^V^-Psc1{~Po=?dXlx;yo>1%E_{)u-nBWsi8M zz!y{o(NPfm<$4$wqE(<0fundMD!^4*40Tk&16yJmu#A{@PpUvy#fmx^IJF7881<12 z1v&r!`_mT&;HSMXAS!{xQDQ7_q)SLr7$6@)h$aPytdK-FK(2%&X8|HAgjiExbcy7R z`V&I@DL`clNreZTqUS)aK7MwAB~p0x&|5&aEw{LOc* zkwGi&8t=w>c31gN6en^^vv4FKHo4*n&gY7+tB!h4)9$H`solM+@gG7Skm;!Jzppx^ zgdKu7pfsUVm1lHC(e%P{dNJ-q(@8g?45Uo6?|5G(GZKy3Bib_|J`xX6cRuTmXdD{w z^wIS4Li+f?R3U4*k%*ScWcn8EXmkYc(Zq6ykEk+RbhGpBXd)RJz;C%p#Q#NZQ*@B# z;Ca4SLhMi@7>C4ZN$oVep3t9y-;#Dzac(jnM)CkdJI>j$tx*?$+v%K=RI;hvyQwUg zQ;y3?9_-`ueS=_J=dY%{WxKK1&-j(}SQZwC(*fKX35NTVPS6*R_XSR}Y!2EQG93D* zFn@&mnxZ4{Eg?mVkmaSYx+OS|t2CLEBFyIy<8X)SG-_x_Z-X&WAb zL({0F{a5MYMXA;c7oPuIXPT0L05i-!r`UyvgXW|(*IX6ECN=_!{ zCg&%U3hk1&R7SQ$1)7R)S;_&F2;oc(!Sg(w@ zXHd{#HyD;{Ce;F=wvW$-^(8Gt$5qVDm*-&mn8i-YrSrnUJ82pmvb%v{qLu8Qe!^eg zQ-_MzHSAjRd;29~?wDpx2FKj)y+X~d`tp8l2|>5d$QRNPxgqEuhQs(J6XSfG=MBBU zxDjDnm2ybV%`QnF$`_OfLM=7RG3KZ z#`jEDU!x(O>G3-7vpwFTOWf-5G0O3W)hm_8T61c(R`=UewUuULwb|%A@2_2}SK5!2 zJr=y=w>N9ehIgzm^H}*gzu~tl9lz?mbkp11TAS^3R=w4BbHh7}?fiPZ>9yL;EB;ES zu-@sk7N@7h4Z#a5%?+y36?_jjXpNdQh4|E{PCm84*JuS;1DK2*dLH;1U4y&=`IFl{ zx#p#C=S}P^J9@}y0pH?JZhsE;jc|<${Pkh!(Mxm_<0fsv_gSDFoW}#TvBw6uv%S;# zI9DCKN3BqH1@vKcY;crK zwm8OpY~!C%KUtM_yLo-8+PvPdRw`}36SDToy1&(KHm2IOwe?O^r1fT{s{1!ul}1&q z*BUQ78_g|$s)IUf)~kNoXw_Ca*V_I-+YbesejTYt0qI>X+F74M{jK?iFtyE&eyt@- HhTi@U#ZLuC literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/django-filer-iconfont.woff b/filer/static/filer/fonts/django-filer-iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..98a0738c6e82d031fc84713f9abd534303b1265d GIT binary patch literal 2224 zcmY*Z2T)V#7QRVni6JUR3B8E)CcOm^FoX_Lq%EXSRhpm#q$({CDI%hD1(mY&_E7eUG{0-AU6&3iNN%zSgt_ucQDd+tB~oKPzq4uAk)aMS=Nj-M!v|M27d z|HIhU-T(j~9H6QV!cI8lLb#Q!f)c11fgB6ML7`4ZgX~8P1hqJj#{&Qqv*7=H!}~^< z7nmaffCcok-Dr>kP(GeS4=~pUeF`AdM3XBdeLxY^z z@B&QcjR5kouLR_R$3QH>J^Y9iu#T+<imK{^I@ESh|2|v}d}950OA15j?#*5zq-& zTMWOTqAtS|8npKqL+>JR0Xerhtib^&c^esXoG=k2OX9snw=olG{H5=vzEa7S@@{IL zJrk7WUSSWIO!_@zYvFbiNw)x-|xeMxF4ha2tbzWk*ba=#U_YtMGt~R)*Jq4Fm zJft@}Qs_RVid9~1!IZrBQ7Fb(P=3d0^GykVKu&xR#v&&seX8x7#Qj4o{c_ktu)dxGMXC}5ViAh z6U&BVGWhm$?E~GWb+oB+fz|qDjhyY4XU=tg?dc3zOm|5*NOC#KxaN2?7Sn-@ycsxf zsVI5T8_r1FGEy%w(~LM-sFYHxLTxS*X!=ql7t?ffxG0O3^WllVfx9F7#j1d3>KRe{ zpniVjD@T-<8riZsUf;Ejsy&z9lV5FThFv@|Z)DNKE^lQ%w7DR=*Lz}$G*oewCWY)9 z@fK)nv3G_x$A$jmZ}3v$s`Gi*RA2joR~OwL1?0VobP673{Y^t0X<_UrT5gfhh(C(W zMy@@;zTFt#&_lEbXr;b?$7-4q)Rr`HZWT5=A1_@d(XsJ>6KnDWrC~plo0KBIG4Y%w z;EXfJqE<<}rRigxX0dP25Z@S0RV@nknS~hf@E>umpEMUvx=*$(9WABm+CJ`st9MW= zf>T*v-4k-mZ;!XZZHD}LPDNx~wY`e)NY+QX-7m@Z#20JJWoUO|i{!dguQ@Y(%6;>Y zuPJK}D^ZM=Hds>MAv%tFjY@Y&?b*9r%lBWh)5OCZUG@(D{OPrD-^)Ye39>ql7}Y)E zRiUBqM`T%bdBberv#R>F@CiV~TkLDJV)NOiuGu7=^ymXIw?)5@bb47E&{pb5wOiiCkpb zG9fg4Lpi#)KL9TaEpf3^&S$?S9~@n{`ZjWj^yzsdlkBm`!e4^rRdU)6~J=aWq&aD*D!>q^|X4K-2M))TkE(V1(91rK+|x=dd6bi6tU&;Bq~qU>Vy`d;zoY^uz&5z8DKHc z$;-~3b3285A4N|cyOf++D~}L! zl~-7ze-F~(VhNt!iik=akrUA^p>uV=R|##?i$17(69XNfH~qEt2kU;Azku4)it83d z1}~aSL$+os<-Qo2*bWj(sr8+AN0V)Bs&99zv~?J-^SXv~yvg>Ly~Wk|{Ua_0k9OEb z$W+a=oZG$ovi0F6J&Zl#OZE3bwvGc!rIw&gL6Qd(Iy(93^6~EawKsv!v@_Msy*qOe zo(wM%5X(Miewnz-WFnE~G;`rBek8#cFi=HU{?|_eAmRy3{m!0&&Vd-jKH%KSg8uc6 zKp+^2S^EI4T^ypKs}&qFtz{9z#!v27#?6_ z;T5O>TLP1y3j@$dNE+BTD+BA_r3l2k?^htM*q2>tJ{^Taomx?U|j=W1M%ohzC+I*T^F<9~8PEzdjY5rt{ByKS#zY zJY+L!im(NG+XHzE=jth+A6I+G5utmB>1{&MW*ce{rq|AhRNIhkcB+1p`0s5 z=AJef8>h_Sp7=Yf<;x-EZ70vzk`nnZs$9XC??)=3(`%NH@cb9o9THU|lVLlLzi+h9 zS@}D=PpaRc>+zEQPWzec*6cKr?_oS^*tKd9l!lFpU?NKC9X?x#j8-% zrFvca{n9XIqLsO2DqbHJv@5oUc6Ey@Ffe{B^_&4KX&U63( literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/django-filer-iconfont.woff2 b/filer/static/filer/fonts/django-filer-iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ff7d86d55e280b0b0529b0953a93996a2ed7ddb4 GIT binary patch literal 1680 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

7r8$?kb-D3z%-c} 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 F002TuuHFCu literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fontawesome-webfont.svg b/filer/static/filer/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..6fd19abcb --- /dev/null +++ b/filer/static/filer/fonts/fontawesome-webfont.svg @@ -0,0 +1,640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/filer/static/filer/fonts/fontawesome-webfont.ttf b/filer/static/filer/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d7994e13086b1ac1a216bd754c93e1bccd65f237 GIT binary patch literal 138204 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 literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fontawesome-webfont.woff b/filer/static/filer/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6fd4ede0f30f170eecb4156beb7235bf01fff00b GIT binary patch literal 81284 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äY>7uxS6S37IVP_>DW-kg%dn+sFHLnFhvXTU%&ox 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 ZUtABnb?tu62nVk>KX+wfW(Hek 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 o-IM%8o*ehr=#Iq=Q0BvwUBdJ3D + + + + + diff --git a/filer/static/filer/fonts/src/caret-down.svg b/filer/static/filer/fonts/src/caret-down.svg new file mode 100644 index 000000000..fca4895cd --- /dev/null +++ b/filer/static/filer/fonts/src/caret-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/chevron-right.svg b/filer/static/filer/fonts/src/chevron-right.svg new file mode 100644 index 000000000..a94274f88 --- /dev/null +++ b/filer/static/filer/fonts/src/chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/download.svg b/filer/static/filer/fonts/src/download.svg new file mode 100644 index 000000000..5a826bb9e --- /dev/null +++ b/filer/static/filer/fonts/src/download.svg @@ -0,0 +1,4 @@ + + + + diff --git a/filer/static/filer/fonts/src/expand.svg b/filer/static/filer/fonts/src/expand.svg new file mode 100644 index 000000000..57ccd9f53 --- /dev/null +++ b/filer/static/filer/fonts/src/expand.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/link.svg b/filer/static/filer/fonts/src/link.svg new file mode 100644 index 000000000..06ea8f409 --- /dev/null +++ b/filer/static/filer/fonts/src/link.svg @@ -0,0 +1,4 @@ + + + + diff --git a/filer/static/filer/fonts/src/move-to-folder.svg b/filer/static/filer/fonts/src/move-to-folder.svg new file mode 100644 index 000000000..1b93780fe --- /dev/null +++ b/filer/static/filer/fonts/src/move-to-folder.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/picture.svg b/filer/static/filer/fonts/src/picture.svg new file mode 100644 index 000000000..5642c39ef --- /dev/null +++ b/filer/static/filer/fonts/src/picture.svg @@ -0,0 +1,4 @@ + + + + diff --git a/filer/static/filer/fonts/src/remove-selection.svg b/filer/static/filer/fonts/src/remove-selection.svg new file mode 100644 index 000000000..8f5a4ef75 --- /dev/null +++ b/filer/static/filer/fonts/src/remove-selection.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/select.svg b/filer/static/filer/fonts/src/select.svg new file mode 100644 index 000000000..c8b67a60a --- /dev/null +++ b/filer/static/filer/fonts/src/select.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/th-large.svg b/filer/static/filer/fonts/src/th-large.svg new file mode 100644 index 000000000..347853e02 --- /dev/null +++ b/filer/static/filer/fonts/src/th-large.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/fonts/src/th-list.svg b/filer/static/filer/fonts/src/th-list.svg new file mode 100644 index 000000000..ed2dbf47d --- /dev/null +++ b/filer/static/filer/fonts/src/th-list.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/filer/static/filer/fonts/src/upload.svg b/filer/static/filer/fonts/src/upload.svg new file mode 100644 index 000000000..166624b48 --- /dev/null +++ b/filer/static/filer/fonts/src/upload.svg @@ -0,0 +1,3 @@ + + + diff --git a/filer/static/filer/icons/cloud-up.svg b/filer/static/filer/icons/cloud-up.svg new file mode 100644 index 000000000..75fb6a91c --- /dev/null +++ b/filer/static/filer/icons/cloud-up.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/filer/static/filer/icons/file-audio.svg b/filer/static/filer/icons/file-audio.svg new file mode 100644 index 000000000..070886d5f --- /dev/null +++ b/filer/static/filer/icons/file-audio.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/filer/static/filer/icons/file-empty.svg b/filer/static/filer/icons/file-empty.svg new file mode 100644 index 000000000..04ed00ad4 --- /dev/null +++ b/filer/static/filer/icons/file-empty.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/filer/static/filer/icons/file-font.svg b/filer/static/filer/icons/file-font.svg new file mode 100644 index 000000000..77ce44c3c --- /dev/null +++ b/filer/static/filer/icons/file-font.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/filer/static/filer/icons/file-missing.svg b/filer/static/filer/icons/file-missing.svg new file mode 100644 index 000000000..8d1d17a25 --- /dev/null +++ b/filer/static/filer/icons/file-missing.svg @@ -0,0 +1,84 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/filer/static/filer/icons/file-pdf.svg b/filer/static/filer/icons/file-pdf.svg new file mode 100644 index 000000000..a52203f52 --- /dev/null +++ b/filer/static/filer/icons/file-pdf.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/filer/static/filer/icons/file-picture.svg b/filer/static/filer/icons/file-picture.svg new file mode 100644 index 000000000..cffeb3218 --- /dev/null +++ b/filer/static/filer/icons/file-picture.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/filer/static/filer/icons/file-unknown.svg b/filer/static/filer/icons/file-unknown.svg new file mode 100644 index 000000000..426904a11 --- /dev/null +++ b/filer/static/filer/icons/file-unknown.svg @@ -0,0 +1,69 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/filer/static/filer/icons/file-video.svg b/filer/static/filer/icons/file-video.svg new file mode 100644 index 000000000..04576b68b --- /dev/null +++ b/filer/static/filer/icons/file-video.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/filer/static/filer/icons/file-zip.svg b/filer/static/filer/icons/file-zip.svg new file mode 100644 index 000000000..6d0afa9ba --- /dev/null +++ b/filer/static/filer/icons/file-zip.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/filer/static/filer/icons/folder-dropdown.svg b/filer/static/filer/icons/folder-dropdown.svg new file mode 100644 index 000000000..5afa4e93e --- /dev/null +++ b/filer/static/filer/icons/folder-dropdown.svg @@ -0,0 +1,85 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/filer/static/filer/icons/folder-root.svg b/filer/static/filer/icons/folder-root.svg new file mode 100644 index 000000000..9ee4a132b --- /dev/null +++ b/filer/static/filer/icons/folder-root.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/filer/static/filer/icons/folder-unfiled.svg b/filer/static/filer/icons/folder-unfiled.svg new file mode 100644 index 000000000..da2b21935 --- /dev/null +++ b/filer/static/filer/icons/folder-unfiled.svg @@ -0,0 +1,77 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/filer/static/filer/icons/folder.svg b/filer/static/filer/icons/folder.svg new file mode 100644 index 000000000..72f50ffba --- /dev/null +++ b/filer/static/filer/icons/folder.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/filer/static/filer/img/button-bg.gif b/filer/static/filer/img/button-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..10106108dcab1059e118ffd080662ed92389f6b7 GIT binary patch literal 224 zcmZ?wbhEHb6l9QRIKsg2{rmT~Z{I$D{`}ReSAYNh{q^hDhYue(@t*9{u_A=gpfpKY#xG_U+rVXV3oq`}hCPqud@q0hZ)j|4ZfO*4@96AmXXx$g MpD=OKL`4Q`01r2Tt^fc4 literal 0 HcmV?d00001 diff --git a/filer/static/filer/img/icon_changelink.gif b/filer/static/filer/img/icon_changelink.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bd9d502b110a4832d936824c55851d96b138831 GIT binary patch literal 1178 zcmZ?wbhEHbe z|NsAIKmv;Yxg&f76kHNZ5`naheMLcHa&~HoLQ-maW}dCm``!DM6f#q6mBLMZ4SWln zQ!_F>s)|yBtNcQetFn_VQ=?N zk^)#sNw%$$BS=C4WT$g}QL2Kep0RGSfuW&-nVFuUiK&^Hp^k!)fuWJU0T7w#8k$&{ znpqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Umxn8-kUVc%!zM-Y1CCCgTBVC{h z-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VTY?Xj6g?J&i0B&qvu^!kvddc~@ z`W1-<`i6Q2ATPlb`ugHmnwtw(U0f2Bif}JhgNs8d3sUuiQj7CTi;`1;%9TM@6<9eJ zr6!i-7lq{K=fFZSAS1sdzc?emK*2fKOhLmpF*!32B%le_;p=PVnO9trn3tUD>0+w{ zG(#^lGsVin%)-Uc(%I6;!obDQ(ACJv+}y;?)!5wG)X31t$G&eP`1g19y zq1O?oUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+d7Ppu=8M>GlnHw3IyWwyPL~jaiw^-nG zi$2gX`k<&qifWh;F#Uj-@PrHGz>|Jz9x%NZ0TVXk|9^k~{QmXx$MeX-RQWVL^UgZccVqW=48iYD#iaVnTde zY)o`iWJGvaXh?8SV1U1$uaCEvr-!?ntBbRfql3Mjt&O#nrG>efsfn?Xp@F`hu8y{r zriQwjs*19bqJq4ftc%1*XSQL?vFu&J=B$SufCElE_U$j!+swyLmIN=(U5 zO0@#ALBje<3ScEA*|tiKAPEJKozD41sS2igX1d7+h9(N;mU@P!X6BaWItoTWzP^El zzL9~hfu)tHv6X?50u(3#Z7WJivkG!?gW3h;*(zm}loVL$>z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$AbT4JjNbScCOxdm`z z^NRJr-qB0W&(*I;EYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9yACy|0Us{x$ z3RJEPvZ}z!xhOTUB)=#mKR*W+iUAq^MGl-2$;AT|Nr~@=l8FlKfZta`sMSdk00K@ zd;8|~tCugHKYRM*@uPt zi4*$!dV9LNIy>6iT3ec%8XM~CYHO;iDl5v%N=u513Jdb{a&xk?GBeWCQd5$X5)DCA|t}XLPLUs0t5X0e0{vVJU!gqTwR=<93AZKY;CNqEP)YgYGQ0;XrQmBtD~)@ zsiCf>s-moDIqQaEO!ga!_Vsum%8N$+fuv literal 0 HcmV?d00001 diff --git a/filer/static/filer/js/addons/copy-move-files.js b/filer/static/filer/js/addons/copy-move-files.js new file mode 100644 index 000000000..1673c96d8 --- /dev/null +++ b/filer/static/filer/js/addons/copy-move-files.js @@ -0,0 +1,32 @@ +'use strict'; +/* global Cl */ + +/* + This functionality is used in folder/choose_copy_destination.html template + to disable submit if there is only one folder to copy +*/ + +document.addEventListener('DOMContentLoaded', () => { + const destination = document.getElementById('destination'); + if (!destination) { + return; + } + + const destinationOptions = destination.querySelectorAll('option'); + const destinationOptionLength = destinationOptions.length; + const submit = document.querySelector('.js-submit-copy-move'); + const tooltip = document.querySelector('.js-disabled-btn-tooltip'); + + if (destinationOptionLength === 1 && destinationOptions[0].disabled) { + if (submit) { + submit.style.display = 'none'; + } + if (tooltip) { + tooltip.style.display = 'inline-block'; + } + } + + if (Cl.filerTooltip) { + Cl.filerTooltip(); + } +}); diff --git a/filer/static/filer/js/addons/dropdown-menu.js b/filer/static/filer/js/addons/dropdown-menu.js new file mode 100644 index 000000000..512dda3d5 --- /dev/null +++ b/filer/static/filer/js/addons/dropdown-menu.js @@ -0,0 +1,249 @@ +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.6 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ +'use strict'; + +(() => { + // DROPDOWN CLASS DEFINITION + // ========================= + + const backdropClass = 'filer-dropdown-backdrop'; + const toggleSelector = '[data-toggle="filer-dropdown"]'; + + class Dropdown { + constructor(element) { + this.element = element; + element.addEventListener('click', () => this.toggle()); + } + + toggle() { + const element = this.element; + const parent = getParent(element); + const isActive = parent.classList.contains('open'); + const relatedTarget = { relatedTarget: element }; + + if (element.disabled || element.classList.contains('disabled')) { + return false; + } + + clearMenus(); + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !parent.closest('.navbar-nav')) { + // if mobile we use a backdrop because click events don't delegate + const backdrop = document.createElement('div'); + backdrop.className = backdropClass; + element.parentNode.insertBefore(backdrop, element.nextSibling); + backdrop.addEventListener('click', clearMenus); + } + + const showEvent = new CustomEvent('show.bs.filer-dropdown', { + bubbles: true, + cancelable: true, + detail: relatedTarget + }); + parent.dispatchEvent(showEvent); + + if (showEvent.defaultPrevented) { + return false; + } + + element.focus(); + element.setAttribute('aria-expanded', 'true'); + parent.classList.add('open'); + + const shownEvent = new CustomEvent('shown.bs.filer-dropdown', { + bubbles: true, + detail: relatedTarget + }); + parent.dispatchEvent(shownEvent); + } + + return false; + } + + keydown(e) { + const element = this.element; + const parent = getParent(element); + const isActive = parent.classList.contains('open'); + const desc = ' li:not(.disabled):visible a'; + const items = Array.from(parent.querySelectorAll(`.filer-dropdown-menu${desc}`)) + .filter(item => item.offsetParent !== null); // visible check + const index = items.indexOf(e.target); + + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + if (element.disabled || element.classList.contains('disabled')) { + return; + } + + if ((!isActive && e.which !== 27) || (isActive && e.which === 27)) { + if (e.which === 27) { + parent.querySelector(toggleSelector)?.focus(); + } + return element.click(); + } + + if (!items.length) { + return; + } + + let newIndex = index; + if (e.which === 38 && index > 0) { + newIndex--; // up + } + if (e.which === 40 && index < items.length - 1) { + newIndex++; // down + } + if (newIndex === -1) { + newIndex = 0; + } + + items[newIndex]?.focus(); + } + } + + function getParent(element) { + let selector = element.getAttribute('data-target'); + let parent = selector ? document.querySelector(selector) : null; + + if (!selector) { + selector = element.getAttribute('href'); + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ''); // strip for ie7 + parent = selector ? document.querySelector(selector) : null; + } + + return parent && parent.parentNode ? parent : element.parentNode; + } + + function clearMenus(e) { + if (e && e.which === 3) { + return; + } + + // Remove all backdrops + document.querySelectorAll(`.${backdropClass}`).forEach(el => el.remove()); + + document.querySelectorAll(toggleSelector).forEach((toggle) => { + const parent = getParent(toggle); + const relatedTarget = { relatedTarget: toggle }; + + if (!parent.classList.contains('open')) { + return; + } + + if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && parent.contains(e.target)) { + return; + } + + const hideEvent = new CustomEvent('hide.bs.filer-dropdown', { + bubbles: true, + cancelable: true, + detail: relatedTarget + }); + parent.dispatchEvent(hideEvent); + + if (hideEvent.defaultPrevented) { + return; + } + + toggle.setAttribute('aria-expanded', 'false'); + parent.classList.remove('open'); + + const hiddenEvent = new CustomEvent('hidden.bs.filer-dropdown', { + bubbles: true, + detail: relatedTarget + }); + parent.dispatchEvent(hiddenEvent); + }); + } + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + this.forEach((element) => { + let data = element._filerDropdownInstance; + + if (!data) { + data = new Dropdown(element); + element._filerDropdownInstance = data; + } + if (typeof option === 'string') { + data[option].call(element); + } + }); + return this; + } + + // Extend NodeList and HTMLCollection with dropdown method + if (!NodeList.prototype.dropdown) { + NodeList.prototype.dropdown = function(option) { + return Plugin.call(this, option); + }; + } + if (!HTMLCollection.prototype.dropdown) { + HTMLCollection.prototype.dropdown = function(option) { + return Plugin.call(this, option); + }; + } + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + document.addEventListener('click', clearMenus); + + document.addEventListener('click', (e) => { + if (e.target.closest('.filer-dropdown form')) { + e.stopPropagation(); + } + }); + + document.addEventListener('click', (e) => { + const toggle = e.target.closest(toggleSelector); + if (toggle) { + const instance = toggle._filerDropdownInstance || new Dropdown(toggle); + if (!toggle._filerDropdownInstance) { + toggle._filerDropdownInstance = instance; + } + instance.toggle(e); + } + }); + + document.addEventListener('keydown', (e) => { + const toggle = e.target.closest(toggleSelector); + if (toggle) { + const instance = toggle._filerDropdownInstance || new Dropdown(toggle); + if (!toggle._filerDropdownInstance) { + toggle._filerDropdownInstance = instance; + } + instance.keydown(e); + } + }); + + document.addEventListener('keydown', (e) => { + const menu = e.target.closest('.filer-dropdown-menu'); + if (menu) { + const toggle = menu.parentNode.querySelector(toggleSelector); + if (toggle) { + const instance = toggle._filerDropdownInstance || new Dropdown(toggle); + if (!toggle._filerDropdownInstance) { + toggle._filerDropdownInstance = instance; + } + instance.keydown(e); + } + } + }); + + // Export for compatibility + window.FilerDropdown = Dropdown; +})(); diff --git a/filer/static/filer/js/addons/dropzone.init.js b/filer/static/filer/js/addons/dropzone.init.js new file mode 100644 index 000000000..dd49e3806 --- /dev/null +++ b/filer/static/filer/js/addons/dropzone.init.js @@ -0,0 +1,234 @@ +// #DROPZONE# +// This script implements the dropzone settings +'use strict'; + +import Dropzone from 'dropzone'; + +if (Dropzone) { + Dropzone.autoDiscover = false; +} + +document.addEventListener('DOMContentLoaded', () => { + const previewImageSelector = '.js-img-preview'; + const dropzoneSelector = '.js-filer-dropzone'; + const dropzones = document.querySelectorAll(dropzoneSelector); + const messageSelector = '.js-filer-dropzone-message'; + const lookupButtonSelector = '.js-related-lookup'; + const editButtonSelector = '.js-related-edit'; + const dropzoneTemplate = '.js-filer-dropzone-template'; + const progressSelector = '.js-filer-dropzone-progress'; + const previewImageWrapperSelector = '.js-img-wrapper'; + const filerClearerSelector = '.filerClearer'; + const fileChooseSelector = '.js-file-selector'; + const fileIdInputSelector = '.vForeignKeyRawIdAdminField'; + const dragHoverClass = 'dz-drag-hover'; + const hiddenClass = 'hidden'; + const mobileClass = 'filer-dropzone-mobile'; + const objectAttachedClass = 'js-object-attached'; + const minWidth = 500; + + const checkMinWidth = (element) => { + const width = element.offsetWidth; + if (width < minWidth) { + element.classList.add(mobileClass); + } else { + element.classList.remove(mobileClass); + } + }; + + const showError = (message) => { + try { + window.parent.CMS.API.Messages.open({ + message: message + }); + } catch { + if (window.filerShowError) { + window.filerShowError(message); + } else { + alert(message); + } + } + }; + + const createDropzone = function (dropzone) { + const dropzoneUrl = dropzone.dataset.url; + const inputId = dropzone.querySelector(fileIdInputSelector); + const isImage = inputId?.getAttribute('name') === 'image'; + const lookupButton = dropzone.querySelector(lookupButtonSelector); + const editButton = dropzone.querySelector(editButtonSelector); + const message = dropzone.querySelector(messageSelector); + const clearButton = dropzone.querySelector(filerClearerSelector); + const fileChoose = dropzone.querySelector(fileChooseSelector); + + if (dropzone.dropzone) { + return; + } + + const resizeHandler = () => { + checkMinWidth(dropzone); + }; + window.addEventListener('resize', resizeHandler); + + new Dropzone(dropzone, { + url: dropzoneUrl, + paramName: 'file', + maxFiles: 1, + maxFilesize: dropzone.dataset.maxFilesize, + previewTemplate: document.querySelector(dropzoneTemplate).innerHTML || '', + clickable: false, + addRemoveLinks: false, + init: function () { + checkMinWidth(dropzone); + + this.on('removedfile', () => { + if (fileChoose) { + fileChoose.style.display = ''; + } + dropzone.classList.remove(objectAttachedClass); + this.removeAllFiles(); + clearButton?.click(); + }); + + const images = this.element.querySelectorAll('img'); + images.forEach((img) => { + img.addEventListener('dragstart', (event) => { + event.preventDefault(); + }); + }); + + if (clearButton) { + clearButton.addEventListener('click', () => { + dropzone.classList.remove(objectAttachedClass); + // const changeEvent = new Event('change', { bubbles: true }); + // inputId?.dispatchEvent(changeEvent); + }); + } + }, + maxfilesexceeded: function () { + this.removeAllFiles(true); + }, + drop: function () { + this.removeAllFiles(true); + clearButton?.click(); + const progressEl = dropzone.querySelector(progressSelector); + if (progressEl) { + progressEl.classList.remove(hiddenClass); + } + if (fileChoose) { + fileChoose.style.display = 'block'; + } + lookupButton?.classList.add('related-lookup-change'); + editButton?.classList.add('related-lookup-change'); + message?.classList.add(hiddenClass); + dropzone.classList.remove(dragHoverClass); + dropzone.classList.add(objectAttachedClass); + }, + success: function (file, response) { + const progressEl = dropzone.querySelector(progressSelector); + if (progressEl) { + progressEl.classList.add(hiddenClass); + } + + if (file && file.status === 'success' && response) { + if (response.file_id && inputId) { + inputId.value = response.file_id; + const changeEvent = new Event('change', { bubbles: true }); + inputId.dispatchEvent(changeEvent); + } + if (response.thumbnail_180 && isImage) { + const previewImg = dropzone.querySelector(previewImageSelector); + if (previewImg) { + previewImg.style.backgroundImage = `url(${response.thumbnail_180})`; + } + const wrapper = dropzone.querySelector(previewImageWrapperSelector); + if (wrapper) { + wrapper.classList.remove(hiddenClass); + } + } + } else { + if (response && response.error) { + showError(`${file.name}: ${response.error}`); + } + this.removeAllFiles(true); + } + + const images = this.element.querySelectorAll('img'); + images.forEach((img) => { + img.addEventListener('dragstart', (event) => { + event.preventDefault(); + }); + }); + }, + error: function (file, msg, response) { + if (response && response.error) { + msg += ` ; ${response.error}`; + } + showError(`${file.name}: ${msg}`); + this.removeAllFiles(true); + }, + reset: function () { + if (isImage) { + const wrapper = dropzone.querySelector(previewImageWrapperSelector); + if (wrapper) { + wrapper.classList.add(hiddenClass); + } + const previewImg = dropzone.querySelector(previewImageSelector); + if (previewImg) { + previewImg.style.backgroundImage = 'none'; + } + } + dropzone.classList.remove(objectAttachedClass); + if (inputId) { + inputId.value = ''; + } + lookupButton?.classList.remove('related-lookup-change'); + editButton?.classList.remove('related-lookup-change'); + message?.classList.remove(hiddenClass); + if (inputId) { + const changeEvent = new Event('change', { bubbles: true }); + inputId.dispatchEvent(changeEvent); + } + } + }); + }; + + if (dropzones.length && Dropzone) { + if (!window.filerDropzoneInitialized) { + window.filerDropzoneInitialized = true; + Dropzone.autoDiscover = false; + } + dropzones.forEach(createDropzone); + + // Handle initialization of the dropzone on dynamic formsets (i.e. Django admin inlines) + document.addEventListener('formset:added', (event) => { + let dropzones; + let rowIdx; + let row; + + if (event.detail && event.detail.formsetName) { + /* + Django 4.1 changed the event type being fired when adding + a new formset from a jQuery to a vanilla JavaScript event. + https://docs.djangoproject.com/en/4.1/ref/contrib/admin/javascript/ + + In this case we find the newly added row and initialize the + dropzone on any dropzoneSelector on that row. + */ + + rowIdx = parseInt( + document.getElementById( + `id_${event.detail.formsetName}-TOTAL_FORMS` + ).value, 10 + ) - 1; + row = document.getElementById(`${event.detail.formsetName}-${rowIdx}`); + dropzones = row?.querySelectorAll(dropzoneSelector) || []; + } else { + // Fallback for older jQuery event format + row = event.target; + dropzones = row?.querySelectorAll(dropzoneSelector) || []; + } + + dropzones?.forEach(createDropzone); + }); + } +}); diff --git a/filer/static/filer/js/addons/filer_popup_response.js b/filer/static/filer/js/addons/filer_popup_response.js new file mode 100644 index 000000000..d0dfdef0c --- /dev/null +++ b/filer/static/filer/js/addons/filer_popup_response.js @@ -0,0 +1,22 @@ +/*global opener */ +(function () { + 'use strict'; + const dataElement = document.getElementById('django-admin-popup-response-constants'); + let initData; + + if (dataElement) { + initData = JSON.parse(dataElement.dataset.popupResponse); + switch (initData.action) { + case 'change': + // Specific function for file editing popup opened from widget + opener.dismissRelatedImageLookupPopup(window, initData.new_value, null, initData.obj, null); + break; + case 'delete': + opener.dismissDeleteRelatedObjectPopup(window, initData.value); + break; + default: + opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); + break; + } + } +})(); diff --git a/filer/static/filer/js/addons/focal-point.js b/filer/static/filer/js/addons/focal-point.js new file mode 100644 index 000000000..ad1263c6e --- /dev/null +++ b/filer/static/filer/js/addons/focal-point.js @@ -0,0 +1,253 @@ +// #FOCAL POINT# +// This script implements the image focal point setting +'use strict'; + +window.Cl = window.Cl || {}; + +(() => { + class FocalPoint { + constructor(options = {}) { + this.options = { + containerSelector: '.js-focal-point', + imageSelector: '.js-focal-point-image', + circleSelector: '.js-focal-point-circle', + locationSelector: '.js-focal-point-location', + draggableClass: 'draggable', + hiddenClass: 'hidden', + dataLocation: 'locationSelector', + ...options + }; + this.focalPointInstances = []; + this._init = this._init.bind(this); + } + + _init(container) { + const focalPointInstance = new FocalPointConstructor(container, this.options); + this.focalPointInstances.push(focalPointInstance); + } + + initialize() { + const containers = document.querySelectorAll(this.options.containerSelector); + containers.forEach((container) => { + this._init(container); + }); + + if (window.Cl.mediator) { + window.Cl.mediator.subscribe('focal-point:init', this._init); + } + } + + destroy() { + if (window.Cl.mediator) { + window.Cl.mediator.remove('focal-point:init', this._init); + } + + this.focalPointInstances.forEach((focalPointInstance) => { + focalPointInstance.destroy(); + }); + + this.focalPointInstances = []; + } + } + + class FocalPointConstructor { + constructor(container, options = {}) { + this.options = { + imageSelector: '.js-focal-point-image', + circleSelector: '.js-focal-point-circle', + locationSelector: '.js-focal-point-location', + draggableClass: 'draggable', + hiddenClass: 'hidden', + dataLocation: 'locationSelector', + ...options + }; + + this.container = container; + this.image = this.container.querySelector(this.options.imageSelector); + this.circle = this.container.querySelector(this.options.circleSelector); + this.ratio = parseFloat(this.image?.dataset.ratio || 1); + this.location = this._getLocation(); + this.isDragging = false; + this.dragStartX = 0; + this.dragStartY = 0; + this.circleStartX = 0; + this.circleStartY = 0; + + this._onImageLoaded = this._onImageLoaded.bind(this); + this._onMouseDown = this._onMouseDown.bind(this); + this._onMouseMove = this._onMouseMove.bind(this); + this._onMouseUp = this._onMouseUp.bind(this); + + if (this.image?.complete) { + this._onImageLoaded(); + } else if (this.image) { + this.image.addEventListener('load', this._onImageLoaded); + } + } + + _updateLocationValue(x, y) { + const locationValue = `${Math.round(x * this.ratio)},${Math.round(y * this.ratio)}`; + if (this.location) { + this.location.value = locationValue; + } + } + + _getLocation() { + const locationSelector = this.container.dataset[this.options.dataLocation]; + if (locationSelector) { + const newLocation = document.querySelector(locationSelector); + if (newLocation) { + return newLocation; + } + } + return this.container.querySelector(this.options.locationSelector); + } + + _makeDraggable() { + if (!this.circle) { + return; + } + + this.circle.classList.add(this.options.draggableClass); + this.circle.addEventListener('mousedown', this._onMouseDown); + this.circle.addEventListener('touchstart', this._onMouseDown, { passive: false }); + } + + _onMouseDown(event) { + event.preventDefault(); + this.isDragging = true; + + const touch = event.type === 'touchstart' ? event.touches[0] : event; + + // Get container bounds + const containerRect = this.container.getBoundingClientRect(); + + // Calculate mouse position relative to container + this.dragStartX = touch.clientX - containerRect.left; + this.dragStartY = touch.clientY - containerRect.top; + + // Get current circle position (center) + const circleRect = this.circle.getBoundingClientRect(); + this.circleStartX = circleRect.left - containerRect.left + circleRect.width / 2; + this.circleStartY = circleRect.top - containerRect.top + circleRect.height / 2; + + document.addEventListener('mousemove', this._onMouseMove); + document.addEventListener('mouseup', this._onMouseUp); + document.addEventListener('touchmove', this._onMouseMove, { passive: false }); + document.addEventListener('touchend', this._onMouseUp); + } + + _onMouseMove(event) { + if (!this.isDragging) { + return; + } + + event.preventDefault(); + + const touch = event.type === 'touchmove' ? event.touches[0] : event; + + // Get container bounds + const containerRect = this.container.getBoundingClientRect(); + + // Calculate current mouse position relative to container + const currentX = touch.clientX - containerRect.left; + const currentY = touch.clientY - containerRect.top; + + // Calculate how much the mouse moved + const deltaX = currentX - this.dragStartX; + const deltaY = currentY - this.dragStartY; + + // Calculate new center position + let centerX = this.circleStartX + deltaX; + let centerY = this.circleStartY + deltaY; + + // Constrain center to container bounds + centerX = Math.max(0, Math.min(containerRect.width - 1, centerX)); + centerY = Math.max(0, Math.min(containerRect.height - 1, centerY)); + + // Position circle by its top-left corner (center - radius) + this.circle.style.left = `${centerX}px`; + this.circle.style.top = `${centerY}px`; + + // Update location value with center coordinates + this._updateLocationValue(centerX, centerY); + } + + _onMouseUp() { + this.isDragging = false; + document.removeEventListener('mousemove', this._onMouseMove); + document.removeEventListener('mouseup', this._onMouseUp); + document.removeEventListener('touchmove', this._onMouseMove); + document.removeEventListener('touchend', this._onMouseUp); + } + + _onImageLoaded() { + if (!this.image || this.image.naturalWidth === 0) { + return; + } + + this.circle?.classList.remove(this.options.hiddenClass); + + const locationValue = this.location?.value || ''; + const imageWidth = this.image.offsetWidth; + const imageHeight = this.image.offsetHeight; + + let x, y; + + if (locationValue.length) { + const coords = locationValue.split(','); + x = Math.round(Number(coords[0]) / this.ratio); + y = Math.round(Number(coords[1]) / this.ratio); + } else { + x = imageWidth / 2; + y = imageHeight / 2; + } + + if (isNaN(x) || isNaN(y)) { + return; + } + + // Position circle (accounting for circle size) + if (this.circle) { + this.circle.style.left = `${x}px`; + this.circle.style.top = `${y}px`; + } + + this._makeDraggable(); + this._updateLocationValue(x, y); + } + + destroy() { + if (this.circle?.classList.contains(this.options.draggableClass)) { + this.circle.removeEventListener('mousedown', this._onMouseDown); + this.circle.removeEventListener('touchstart', this._onMouseDown); + } + + document.removeEventListener('mousemove', this._onMouseMove); + document.removeEventListener('mouseup', this._onMouseUp); + document.removeEventListener('touchmove', this._onMouseMove); + document.removeEventListener('touchend', this._onMouseUp); + + if (this.image) { + this.image.removeEventListener('load', this._onImageLoaded); + } + + this.options = null; + this.container = null; + this.image = null; + this.circle = null; + this.location = null; + this.ratio = null; + } + } + + window.Cl.FocalPoint = FocalPoint; + window.Cl.FocalPointConstructor = FocalPointConstructor; + + // Export for ES6 module usage + if (typeof module !== 'undefined' && module.exports) { + module.exports = FocalPoint; + } +})(); + +export default window.Cl.FocalPoint; diff --git a/filer/static/filer/js/addons/popup_handling.js b/filer/static/filer/js/addons/popup_handling.js new file mode 100644 index 000000000..453a00a93 --- /dev/null +++ b/filer/static/filer/js/addons/popup_handling.js @@ -0,0 +1,137 @@ +'use strict'; + +const windowname_to_id = (text) => { + text = text.replace(/__dot__/g, '.'); + text = text.replace(/__dash__/g, '-'); + const last = text.lastIndexOf('__'); + return last === -1 ? text : text.substring(0, last); +}; + +window.dismissPopupAndReload = (win) => { + document.location.reload(); + win.close(); +}; + +window.dismissRelatedImageLookupPopup = ( + win, + chosenId, + chosenThumbnailUrl, + chosenDescriptionTxt, + chosenAdminChangeUrl +) => { + const id = windowname_to_id(win.name); + const lookup = document.getElementById(id); + if (!lookup) { + return; + } + const container = lookup.closest('.filerFile'); + if (!container) { + return; + } + const edit = container.querySelector('.edit'); + const image = container.querySelector('.thumbnail_img'); + const descriptionText = container.querySelector('.description_text'); + const clearer = container.querySelector('.filerClearer'); + const dropzoneMessage = container.parentElement.querySelector('.dz-message'); + const element = container.querySelector('input'); + const oldId = element.value; + + element.value = chosenId; + const dropzone = element.closest('.js-filer-dropzone'); + if (dropzone) { + dropzone.classList.add('js-object-attached'); + } + if (chosenThumbnailUrl && image) { + image.src = chosenThumbnailUrl; + image.classList.remove('hidden'); + image.removeAttribute('srcset'); + } + if (descriptionText) { + descriptionText.textContent = chosenDescriptionTxt; + } + if (clearer) { + clearer.classList.remove('hidden'); + } + lookup.classList.add('related-lookup-change'); + if (edit) { + edit.classList.add('related-lookup-change'); + } + if (chosenAdminChangeUrl && edit) { + edit.setAttribute('href', `${chosenAdminChangeUrl}?_edit_from_widget=1`); + } + if (dropzoneMessage) { + dropzoneMessage.classList.add('hidden'); + } + + if (oldId !== chosenId) { + element.dispatchEvent(new Event('change', { bubbles: true })); + } + win.close(); +}; +window.dismissRelatedFolderLookupPopup = (win, chosenId, chosenName) => { + const id = windowname_to_id(win.name); + const lookup = document.getElementById(id); + if (!lookup) { + return; + } + const container = lookup.closest('.filerFile'); + if (!container) { + return; + } + const image = container.querySelector('.thumbnail_img'); + const clearButton = document.getElementById(`id_${id}_clear`); + const input = document.getElementById(`id_${id}`); + const folderName = container.querySelector('.description_text'); + const addFolderButton = document.getElementById(id); + + if (input) { + input.value = chosenId; + } + if (image) { + image.classList.remove('hidden'); + } + if (folderName) { + folderName.textContent = chosenName; + } + if (clearButton) { + clearButton.classList.remove('hidden'); + } + if (addFolderButton) { + addFolderButton.classList.add('hidden'); + } + win.close(); +}; + +// Handle popup dismiss links (for folder/image selection in popups) +document.addEventListener('DOMContentLoaded', () => { + document.querySelectorAll('.js-dismiss-popup').forEach((link) => { + link.addEventListener('click', function (e) { + e.preventDefault(); + + const fileId = this.dataset.fileId; + const iconUrl = this.dataset.iconUrl; + const label = this.dataset.label; + + if (this.classList.contains('js-dismiss-image')) { + const changeUrl = this.dataset.changeUrl || ''; + window.opener.dismissRelatedImageLookupPopup( + window, + fileId, + iconUrl, + label, + changeUrl + ); + } else if (this.classList.contains('js-dismiss-folder')) { + window.opener.dismissRelatedFolderLookupPopup(window, fileId, label); + } + }); + }); + + // Auto-dismiss popup on page load (for dismiss_popup.html) + const popupData = document.getElementById('popup-dismiss-data'); + if (popupData && window.opener) { + const pk = popupData.dataset.pk; + const label = popupData.dataset.label; + window.opener.dismissRelatedPopup(window, pk, label); + } +}); diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js new file mode 100644 index 000000000..934a3e663 --- /dev/null +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -0,0 +1,282 @@ +// #DROPZONE# +// This script implements the dropzone settings +'use strict'; + +import Dropzone from 'dropzone'; + + +/* globals Cl */ +document.addEventListener('DOMContentLoaded', () => { + let submitNum = 0; + let maxSubmitNum = 0; + const dropzoneInstances = []; + const dropzoneBase = document.querySelector('.js-filer-dropzone-base'); + const dropzoneSelector = '.js-filer-dropzone'; + let dropzones; + const infoMessageClass = 'js-filer-dropzone-info-message'; + const infoMessage = document.querySelector(`.${infoMessageClass}`); + const folderName = document.querySelector('.js-filer-dropzone-folder-name'); + const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container'); + const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info'); + const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome'); + const uploadNumber = document.querySelector('.js-filer-dropzone-upload-number'); + const uploadCount = document.querySelector('.js-filer-upload-count'); + const uploadText = document.querySelector('.js-filer-upload-text'); + const uploadFileNameSelector = '.js-filer-dropzone-file-name'; + const uploadProgressSelector = '.js-filer-dropzone-progress'; + const uploadSuccess = document.querySelector('.js-filer-dropzone-upload-success'); + const uploadCanceled = document.querySelector('.js-filer-dropzone-upload-canceled'); + const cancelUpload = document.querySelector('.js-filer-dropzone-cancel'); + const dragHoverClass = 'dz-drag-hover'; + const dataUploaderConnections = 'max-uploader-connections'; + const dragHoverBorder = document.querySelector('.drag-hover-border'); + const hiddenClass = 'hidden'; + let hideMessageTimeout; + let hasErrors = false; + let baseUrl; + let baseFolderTitle; + + const updateUploadNumber = () => { + if (uploadNumber) { + uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`; + } + if (uploadText) { + uploadText.classList.remove('hidden'); + } + if (uploadCount) { + uploadCount.classList.remove('hidden'); + } + }; + + const destroyDropzones = () => { + dropzoneInstances.forEach((instance) => { + instance.destroy(); + }); + }; + + const getElementByFile = (file, url) => { + return document.getElementById( + `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}${url}` + ); + }; + + if (dropzoneBase) { + baseUrl = dropzoneBase.dataset.url; + baseFolderTitle = dropzoneBase.dataset.folderName; + + const body = document.body; + body.dataset.url = baseUrl; + body.dataset.folderName = baseFolderTitle; + body.dataset.maxFiles = dropzoneBase.dataset.maxFiles; + body.dataset.maxFilesize = dropzoneBase.dataset.maxFiles; + body.classList.add('js-filer-dropzone'); + } + + Cl.mediator.subscribe('filer-upload-in-progress', destroyDropzones); + + dropzones = document.querySelectorAll(dropzoneSelector); + + if (dropzones.length && Dropzone) { + Dropzone.autoDiscover = false; + dropzones.forEach((dropzoneElement) => { + const dropzoneUrl = dropzoneElement.dataset.url; + const dropzoneInstance = new Dropzone(dropzoneElement, { + url: dropzoneUrl, + paramName: 'file', + maxFiles: parseInt(dropzoneElement.dataset.maxFiles) || 100, + maxFilesize: parseInt(dropzoneElement.dataset.maxFilesize), // no default + previewTemplate: '

', + clickable: false, + addRemoveLinks: false, + parallelUploads: dropzoneElement.dataset[dataUploaderConnections] || 3, + accept: (file, done) => { + let uploadInfoClone; + + Cl.mediator.remove('filer-upload-in-progress', destroyDropzones); + Cl.mediator.publish('filer-upload-in-progress'); + + clearTimeout(hideMessageTimeout); + clearTimeout(hideMessageTimeout); + if (uploadWelcome) { + uploadWelcome.classList.add(hiddenClass); + } + if (cancelUpload) { + cancelUpload.classList.remove(hiddenClass); + } + + if (getElementByFile(file, dropzoneUrl)) { + done('duplicate'); + } else { + uploadInfoClone = uploadInfo.cloneNode(true); + + const fileNameEl = uploadInfoClone.querySelector(uploadFileNameSelector); + if (fileNameEl) { + fileNameEl.textContent = file.name; + } + const progressEl = uploadInfoClone.querySelector(uploadProgressSelector); + if (progressEl) { + progressEl.style.width = '0'; + } + uploadInfoClone.setAttribute( + 'id', + `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}${dropzoneUrl}` + ); + if (uploadInfoContainer) { + uploadInfoContainer.appendChild(uploadInfoClone); + } + + submitNum++; + maxSubmitNum++; + updateUploadNumber(); + done(); + } + + dropzones.forEach((dz) => dz.classList.remove('reset-hover')); + if (infoMessage) { + infoMessage.classList.remove(hiddenClass); + } + dropzones.forEach((dz) => dz.classList.remove(dragHoverClass)); + }, + dragover: (dragEvent) => { + const target = dragEvent.target.closest(dropzoneSelector); + const folderTitle = target?.dataset.folderName; + const dropzoneFolder = dropzoneElement.classList.contains('js-filer-dropzone-folder'); + const dropzoneBoundingRect = dropzoneElement.getBoundingClientRect(); + const borderStyle = dragHoverBorder ? window.getComputedStyle(dragHoverBorder) : null; + const topBorderSize = borderStyle ? borderStyle.borderTopWidth : '0px'; + const leftBorderSize = borderStyle ? borderStyle.borderLeftWidth : '0px'; + const dropzonePosition = { + top: `${dropzoneBoundingRect.top}px`, + bottom: `${dropzoneBoundingRect.bottom}px`, + left: `${dropzoneBoundingRect.left}px`, + right: `${dropzoneBoundingRect.right}px`, + width: `${dropzoneBoundingRect.width - parseInt(leftBorderSize, 10) * 2}px`, + height: `${dropzoneBoundingRect.height - parseInt(topBorderSize, 10) * 2}px`, + display: 'block' + }; + if (dropzoneFolder && dragHoverBorder) { + Object.assign(dragHoverBorder.style, dropzonePosition); + } + + dropzones.forEach((dz) => dz.classList.add('reset-hover')); + if (uploadSuccess) { + uploadSuccess.classList.add(hiddenClass); + } + if (infoMessage) { + infoMessage.classList.remove(hiddenClass); + } + dropzoneElement.classList.add(dragHoverClass); + dropzoneElement.classList.remove('reset-hover'); + + if (folderName && folderTitle) { + folderName.textContent = folderTitle; + } + }, + dragend: () => { + clearTimeout(hideMessageTimeout); + hideMessageTimeout = setTimeout(() => { + if (infoMessage) { + infoMessage.classList.add(hiddenClass); + } + }, 1000); + + if (infoMessage) { + infoMessage.classList.remove(hiddenClass); + } + dropzones.forEach((dz) => dz.classList.remove(dragHoverClass)); + if (dragHoverBorder) { + Object.assign(dragHoverBorder.style, { top: '0', bottom: '0', width: '0', height: '0' }); + } + }, + dragleave: () => { + clearTimeout(hideMessageTimeout); + hideMessageTimeout = setTimeout(() => { + if (infoMessage) { + infoMessage.classList.add(hiddenClass); + } + }, 1000); + + if (infoMessage) { + infoMessage.classList.remove(hiddenClass); + } + dropzones.forEach((dz) => dz.classList.remove(dragHoverClass)); + if (dragHoverBorder) { + Object.assign(dragHoverBorder.style, { top: '0', bottom: '0', width: '0', height: '0' }); + } + }, + sending: (file) => { + const fileEl = getElementByFile(file, dropzoneUrl); + if (fileEl) { + fileEl.classList.remove(hiddenClass); + } + }, + uploadprogress: (file, progress) => { + const fileEl = getElementByFile(file, dropzoneUrl); + if (fileEl) { + const progressEl = fileEl.querySelector(uploadProgressSelector); + if (progressEl) { + progressEl.style.width = `${progress}%`; + } + } + }, + success: (file) => { + submitNum--; + updateUploadNumber(); + const fileEl = getElementByFile(file, dropzoneUrl); + if (fileEl) { + fileEl.remove(); + } + }, + queuecomplete: () => { + if (submitNum !== 0) { + return; + } + + updateUploadNumber(); + + if (cancelUpload) { + cancelUpload.classList.add(hiddenClass); + } + if (uploadInfo) { + uploadInfo.classList.add(hiddenClass); + } + + if (hasErrors) { + if (uploadNumber) { + uploadNumber.classList.add(hiddenClass); + } + setTimeout(() => { + window.location.reload(); + }, 1000); + } else { + if (uploadSuccess) { + uploadSuccess.classList.remove(hiddenClass); + } + window.location.reload(); + } + }, + error: (file, error) => { + updateUploadNumber(); + if (error === 'duplicate') { + return; + } + hasErrors = true; + if (window.filerShowError) { + window.filerShowError(`${file.name}: ${error.message}`); + } + } + }); + dropzoneInstances.push(dropzoneInstance); + if (cancelUpload) { + cancelUpload.addEventListener('click', (clickEvent) => { + clickEvent.preventDefault(); + cancelUpload.classList.add(hiddenClass); + if (uploadCanceled) { + uploadCanceled.classList.remove(hiddenClass); + } + dropzoneInstance.removeAllFiles(true); + }); + } + }); + } +}); diff --git a/filer/static/filer/js/addons/toggler.js b/filer/static/filer/js/addons/toggler.js new file mode 100644 index 000000000..fb02f47b2 --- /dev/null +++ b/filer/static/filer/js/addons/toggler.js @@ -0,0 +1,82 @@ +// #TOGGLER# +// This script implements the simple element toggle +'use strict'; + +window.Cl = window.Cl || {}; + +class Toggler { + constructor(options = {}) { + this.options = { + linksSelector: '.js-toggler-link', + dataHeaderSelector: 'toggler-header-selector', + dataContentSelector: 'toggler-content-selector', + collapsedClass: 'js-collapsed', + expandedClass: 'js-expanded', + hiddenClass: 'hidden', + ...options + }; + + this.togglerInstances = []; + + const links = document.querySelectorAll(this.options.linksSelector); + links.forEach(link => { + const togglerInstance = new TogglerConstructor(link, this.options); + this.togglerInstances.push(togglerInstance); + }); + } + + destroy() { + this.links = null; + this.togglerInstances.forEach(togglerInstance => togglerInstance.destroy()); + this.togglerInstances = []; + } +} + +class TogglerConstructor { + constructor(link, options = {}) { + this.options = { ...options }; + this.link = link; + this.headerSelector = this.link.dataset[this.options.dataHeaderSelector]; + this.contentSelector = this.link.dataset[this.options.dataContentSelector]; + this.header = document.querySelector(this.headerSelector); + this.header = this.header || this.link; + this.content = document.querySelector(this.contentSelector); + + if (!this.content) { + return; + } + + this._initLink(); + } + + _updateClasses() { + if (this.content.classList.contains(this.options.hiddenClass)) { + this.header.classList.remove(this.options.expandedClass); + this.header.classList.add(this.options.collapsedClass); + } else { + this.header.classList.add(this.options.expandedClass); + this.header.classList.remove(this.options.collapsedClass); + } + } + + _onTogglerClick(clickEvent) { + this.content.classList.toggle(this.options.hiddenClass); + this._updateClasses(); + clickEvent.preventDefault(); + } + + _initLink() { + this._updateClasses(); + this.link.addEventListener('click', e => this._onTogglerClick(e)); + } + + destroy() { + this.options = null; + this.link = null; + } +} + +Cl.Toggler = Toggler; +Cl.TogglerConstructor = TogglerConstructor; + +export default Toggler; diff --git a/filer/static/filer/js/addons/tooltip.js b/filer/static/filer/js/addons/tooltip.js new file mode 100644 index 000000000..47bb041d2 --- /dev/null +++ b/filer/static/filer/js/addons/tooltip.js @@ -0,0 +1,40 @@ +'use strict'; +window.Cl = window.Cl || {}; + +Cl.filerTooltip = () => { + const tooltipSelector = '.js-filer-tooltip'; + const tooltips = document.querySelectorAll(tooltipSelector); + + tooltips.forEach((element) => { + element.addEventListener('mouseover', function () { + const title = this.getAttribute('title'); + if (!title) { + return; + } + + this.dataset.filerTooltip = title; + this.removeAttribute('title'); + + const tooltip = document.createElement('p'); + tooltip.className = 'filer-tooltip'; + tooltip.textContent = title; + + const container = document.querySelector(tooltipSelector); + if (container) { + container.appendChild(tooltip); + } + }); + + element.addEventListener('mouseout', function () { + const title = this.dataset.filerTooltip; + if (title) { + this.setAttribute('title', title); + } + + const existingTooltips = document.querySelectorAll('.filer-tooltip'); + existingTooltips.forEach((t) => { + t.remove(); + }); + }); + }); +}; diff --git a/filer/static/filer/js/addons/upload-button.js b/filer/static/filer/js/addons/upload-button.js new file mode 100644 index 000000000..eb0456c22 --- /dev/null +++ b/filer/static/filer/js/addons/upload-button.js @@ -0,0 +1,242 @@ +// #UPLOAD BUTTON# +// This script implements the upload button logic +'use strict'; + +import Dropzone from 'dropzone'; + +/* globals Cl */ + +document.addEventListener('DOMContentLoaded', () => { + let submitNum = 0; + let maxSubmitNum = 1; + const uploadButton = document.querySelector('.js-upload-button'); + if (!uploadButton) { + return; + } + + const uploadButtonDisabled = document.querySelector('.js-upload-button-disabled'); + const uploadUrl = uploadButton.dataset.url; + const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome'); + const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container'); + const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info'); + const uploadNumber = document.querySelector('.js-filer-dropzone-upload-number'); + const uploadFileNameSelector = '.js-filer-dropzone-file-name'; + const uploadProgressSelector = '.js-filer-dropzone-progress'; + const uploadSuccess = document.querySelector('.js-filer-dropzone-upload-success'); + const uploadCanceled = document.querySelector('.js-filer-dropzone-upload-canceled'); + const uploadCancel = document.querySelector('.js-filer-dropzone-cancel'); + const infoMessage = document.querySelector('.js-filer-dropzone-info-message'); + const hiddenClass = 'hidden'; + const maxUploaderConnections = parseInt(uploadButton.dataset.maxUploaderConnections || 3, 10); + const maxFilesize = parseInt(uploadButton.dataset.maxFilesize || 0, 10); + let hasErrors = false; + + const updateUploadNumber = () => { + if (uploadNumber) { + uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`; + } + }; + + const removeButton = () => { + if (uploadButton) { + uploadButton.remove(); + } + }; + + // utility + const updateQuery = (uri, key, value) => { + const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i'); + const separator = uri.indexOf('?') !== -1 ? '&' : '?'; + const hash = window.location.hash; + uri = uri.replace(/#.*$/, ''); + if (uri.match(re)) { + return uri.replace(re, `$1${key}=${value}$2`) + hash; + } else { + return uri + separator + key + '=' + value + hash; + } + }; + + const reloadOrdered = () => { + const uri = window.location.toString(); + window.location.replace(updateQuery(uri, 'order_by', '-modified_at')); + }; + + Cl.mediator.subscribe('filer-upload-in-progress', removeButton); + + // Initialize Dropzone on the upload button + Dropzone.autoDiscover = false; + const dropzone = new Dropzone(uploadButton, { + url: uploadUrl, + paramName: 'file', + maxFilesize: maxFilesize, // already in MB + parallelUploads: maxUploaderConnections, + clickable: uploadButton, + previewTemplate: '
', + addRemoveLinks: false, + autoProcessQueue: true + }); + + dropzone.on('addedfile', () => { + Cl.mediator.remove('filer-upload-in-progress', removeButton); + Cl.mediator.publish('filer-upload-in-progress'); + submitNum++; + + maxSubmitNum = dropzone.files.length; + + if (infoMessage) { + infoMessage.classList.remove(hiddenClass); + } + if (uploadWelcome) { + uploadWelcome.classList.add(hiddenClass); + } + if (uploadSuccess) { + uploadSuccess.classList.add(hiddenClass); + } + if (uploadInfoContainer) { + uploadInfoContainer.classList.remove(hiddenClass); + } + if (uploadCancel) { + uploadCancel.classList.remove(hiddenClass); + } + if (uploadCanceled) { + uploadCanceled.classList.add(hiddenClass); + } + + updateUploadNumber(); + }); + + dropzone.on('uploadprogress', (file, progress) => { + const percent = Math.round(progress); + const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; + const fileItem = document.getElementById(fileId); + let uploadInfoClone; + + if (fileItem) { + const progressBar = fileItem.querySelector(uploadProgressSelector); + if (progressBar) { + progressBar.style.width = `${percent}%`; + } + } else if (uploadInfo) { + uploadInfoClone = uploadInfo.cloneNode(true); + + const fileNameEl = uploadInfoClone.querySelector(uploadFileNameSelector); + if (fileNameEl) { + fileNameEl.textContent = file.name; + } + const progressEl = uploadInfoClone.querySelector(uploadProgressSelector); + if (progressEl) { + progressEl.style.width = `${percent}%`; + } + uploadInfoClone.classList.remove(hiddenClass); + uploadInfoClone.setAttribute('id', fileId); + if (uploadInfoContainer) { + uploadInfoContainer.appendChild(uploadInfoClone); + } + } + }); + + dropzone.on('success', (file, response) => { + const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; + const fileEl = document.getElementById(fileId); + if (fileEl) { + fileEl.remove(); + } + + if (response.error) { + hasErrors = true; + window.filerShowError(`${file.name}: ${response.error}`); + } + + submitNum--; + updateUploadNumber(); + + if (submitNum === 0) { + maxSubmitNum = 1; + + if (uploadWelcome) { + uploadWelcome.classList.add(hiddenClass); + } + if (uploadNumber) { + uploadNumber.classList.add(hiddenClass); + } + if (uploadCanceled) { + uploadCanceled.classList.add(hiddenClass); + } + if (uploadCancel) { + uploadCancel.classList.add(hiddenClass); + } + if (uploadSuccess) { + uploadSuccess.classList.remove(hiddenClass); + } + + if (hasErrors) { + setTimeout(reloadOrdered, 1000); + } else { + reloadOrdered(); + } + } + }); + + dropzone.on('error', (file, errorMessage) => { + const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; + const fileEl = document.getElementById(fileId); + if (fileEl) { + fileEl.remove(); + } + + hasErrors = true; + window.filerShowError(`${file.name}: ${errorMessage}`); + + submitNum--; + updateUploadNumber(); + + if (submitNum === 0) { + maxSubmitNum = 1; + + if (uploadWelcome) { + uploadWelcome.classList.add(hiddenClass); + } + if (uploadNumber) { + uploadNumber.classList.add(hiddenClass); + } + if (uploadCanceled) { + uploadCanceled.classList.add(hiddenClass); + } + if (uploadCancel) { + uploadCancel.classList.add(hiddenClass); + } + if (uploadSuccess) { + uploadSuccess.classList.remove(hiddenClass); + } + + setTimeout(reloadOrdered, 1000); + } + }); + + if (uploadCancel) { + uploadCancel.addEventListener('click', (clickEvent) => { + clickEvent.preventDefault(); + uploadCancel.classList.add(hiddenClass); + if (uploadNumber) { + uploadNumber.classList.add(hiddenClass); + } + if (uploadInfoContainer) { + uploadInfoContainer.classList.add(hiddenClass); + } + if (uploadCanceled) { + uploadCanceled.classList.remove(hiddenClass); + } + + setTimeout(() => { + window.location.reload(); + }, 1000); + }); + } + + if (uploadButtonDisabled && Cl.filerTooltip) { + Cl.filerTooltip(); + } + + // Fire custom event after scripts have been executed + document.dispatchEvent(new Event('filer-upload-scripts-executed')); +}); diff --git a/filer/static/filer/js/addons/widget.js b/filer/static/filer/js/addons/widget.js new file mode 100644 index 000000000..d43015d19 --- /dev/null +++ b/filer/static/filer/js/addons/widget.js @@ -0,0 +1,56 @@ +'use strict'; + +document.addEventListener('DOMContentLoaded', () => { + const filer_clear = (ev) => { + ev.preventDefault(); + + const clearer = ev.currentTarget; + const container = clearer.closest('.filerFile'); + if (!container) { + return; + } + + const input = container.querySelector('input'); + const thumbnail = container.querySelector('.thumbnail_img'); + const description = container.querySelector('.description_text'); + const addImageButton = container.querySelector('.lookup'); + const editImageButton = container.querySelector('.edit'); + const dropzoneMessage = container.parentElement.querySelector('.dz-message'); + const hiddenClass = 'hidden'; + + clearer.classList.add(hiddenClass); + if (input) { + input.value = ''; + } + if (thumbnail) { + thumbnail.classList.add(hiddenClass); + var thumbnailLink = thumbnail.parentElement; + if (thumbnailLink.tagName === 'A') { + thumbnailLink.removeAttribute('href'); + } + } + if (addImageButton) { + addImageButton.classList.remove('related-lookup-change'); + } + if (editImageButton) { + editImageButton.classList.remove('related-lookup-change'); + } + if (dropzoneMessage) { + dropzoneMessage.classList.remove(hiddenClass); + } + if (description) { + description.textContent = ''; + } + }; + + const foreignKeyFields = document.querySelectorAll('.filerFile .vForeignKeyRawIdAdminField'); + foreignKeyFields.forEach((field) => { + field.setAttribute('type', 'hidden'); + }); + + // Remove any existing handlers and add new ones + const clearers = document.querySelectorAll('.filerFile .filerClearer'); + clearers.forEach((clearer) => { + clearer.addEventListener('click', filer_clear); + }); +}); diff --git a/filer/static/filer/js/base.js b/filer/static/filer/js/base.js new file mode 100644 index 000000000..81bd2b81e --- /dev/null +++ b/filer/static/filer/js/base.js @@ -0,0 +1,417 @@ +// ##################################################################################################################### +// #BASE# +// Basic logic django filer +'use strict'; + +import Mediator from 'mediator-js/lib/mediator'; +import FocalPoint from './addons/focal-point'; +import Toggler from './addons/toggler'; + +window.Cl = window.Cl || {}; +Cl.mediator = new Mediator(); // mediator init +Cl.FocalPoint = FocalPoint; +Cl.Toggler = Toggler; + + +document.addEventListener('DOMContentLoaded', () => { + let showErrorTimeout; + + window.filerShowError = (message) => { + const messages = document.querySelector('.messagelist'); + const header = document.querySelector('#header'); + const filerErrorClass = 'js-filer-error'; + const tpl = `
  • {msg}
`; + const msg = tpl.replace('{msg}', message); + + if (messages) { + messages.outerHTML = msg; + } else if (header) { + header.insertAdjacentHTML('afterend', msg); + } + + if (showErrorTimeout) { + clearTimeout(showErrorTimeout); + } + + showErrorTimeout = setTimeout(() => { + const errorEl = document.querySelector(`.${filerErrorClass}`); + if (errorEl) { + errorEl.remove(); + } + }, 5000); + }; + + const filterFiles = document.querySelector('.js-filter-files'); + if (filterFiles) { + filterFiles.addEventListener('focus', (event) => { + const container = event.target.closest('.navigator-top-nav'); + if (container) { + container.classList.add('search-is-focused'); + } + }); + + filterFiles.addEventListener('blur', (event) => { + const container = event.target.closest('.navigator-top-nav'); + if (container) { + const dropdownTrigger = container.querySelector('.dropdown-container a'); + if (!dropdownTrigger || event.relatedTarget !== dropdownTrigger) { + container.classList.remove('search-is-focused'); + } + } + }); + } + + // Focus on the search field on page load + (() => { + const filter = document.querySelector('.js-filter-files'); + const containerSelector = '.navigator-top-nav'; + const container = document.querySelector(containerSelector); + const searchDropdown = container?.querySelector('.filter-search-wrapper .filer-dropdown-container'); + + if (filter) { + filter.addEventListener('keydown', function () { + const navContainer = this.closest(containerSelector); + if (navContainer) { + navContainer.classList.add('search-is-focused'); + } + }); + + if (searchDropdown) { + searchDropdown.addEventListener('show.bs.filer-dropdown', () => { + if (container) { + container.classList.add('search-is-focused'); + } + }); + searchDropdown.addEventListener('hide.bs.filer-dropdown', () => { + if (container) { + container.classList.remove('search-is-focused'); + } + }); + } + } + })(); + + // show counter if file is selected + (() => { + const navigatorTable = document.querySelectorAll('.navigator-table tr, .navigator-list .list-item'); + const actionList = document.querySelector('.actions-wrapper'); + const actionSelect = document.querySelectorAll( + '.action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a' + ); + + // timeout is needed to wait until table row has class selected. + setTimeout(() => { + // Set classes for checked items + actionSelect.forEach((el) => { + if (el.checked) { + const listItem = el.closest('.list-item'); + if (listItem) { + listItem.classList.add('selected'); + } + } + }); + const hasSelected = Array.from(navigatorTable).some((el) => + el.classList.contains('selected') + ); + if (hasSelected && actionList) { + actionList.classList.add('action-selected'); + } + }, 100); + + actionSelect.forEach((el) => { + el.addEventListener('change', function () { + // Mark element selected (for table view this is done by Django admin js - we do it ourselves + const listItem = this.closest('.list-item'); + if (listItem) { + if (this.checked) { + listItem.classList.add('selected'); + } else { + listItem.classList.remove('selected'); + } + } + // setTimeout makes sure that change event fires before click event which is reliable to admin + setTimeout(() => { + const hasSelected = Array.from(navigatorTable).some((el) => + el.classList.contains('selected') + ); + if (actionList) { + if (hasSelected) { + actionList.classList.add('action-selected'); + } else { + actionList.classList.remove('action-selected'); + } + } + }, 0); + }); + }); + })(); + + (() => { + const actionsMenu = document.querySelector('.js-actions-menu'); + if (!actionsMenu) { + return; + } + + const dropdown = actionsMenu.querySelector('.filer-dropdown-menu'); + const actionsSelect = document.querySelector('.actions select[name="action"]'); + const actionsSelectOptions = actionsSelect?.querySelectorAll('option') || []; + const actionsGo = document.querySelector('.actions button[type="submit"]'); + const actionDelete = document.querySelector('.js-action-delete'); + const actionCopy = document.querySelector('.js-action-copy'); + const actionMove = document.querySelector('.js-action-move'); + const valueDelete = 'delete_files_or_folders'; + const valueCopy = 'copy_files_and_folders'; + const valueMove = 'move_files_and_folders'; + const navigatorTable = document.querySelectorAll('.navigator-table tr, .navigator-list .list-item'); + + // triggers delete copy and move actions on separate buttons + const actionsButton = (optionValue, actionButton) => { + if (!actionButton) { + return; + } + actionsSelectOptions.forEach((option) => { + if (option.value === optionValue) { + actionButton.style.display = ''; + actionButton.addEventListener('click', (e) => { + e.preventDefault(); + const hasSelected = Array.from(navigatorTable).some((el) => + el.classList.contains('selected') + ); + if (hasSelected && actionsSelect && actionsGo) { + actionsSelect.value = optionValue; + const targetOption = actionsSelect.querySelector(`option[value="${optionValue}"]`); + if (targetOption) { + targetOption.selected = true; + } + actionsGo.click(); + } + }); + } + }); + }; + actionsButton(valueDelete, actionDelete); + actionsButton(valueCopy, actionCopy); + actionsButton(valueMove, actionMove); + + // mocking the action buttons to work in frontend UI + actionsSelectOptions.forEach((option, index) => { + if (index !== 0) { + const li = document.createElement('li'); + const a = document.createElement('a'); + a.href = '#'; + a.textContent = option.textContent; + + if (option.value === valueDelete || option.value === valueCopy || option.value === valueMove) { + a.classList.add('hidden'); + } + + li.appendChild(a); + if (dropdown) { + dropdown.appendChild(li); + } + } + }); + if (dropdown) { + + dropdown.addEventListener('click', (clickEvent) => { + if (clickEvent.target.tagName === 'A') { + const li = clickEvent.target.closest('li'); + const targetIndex = Array.from(dropdown.querySelectorAll('li')).indexOf(li) + 1; + + clickEvent.preventDefault(); + + if (actionsSelect && actionsGo) { + const options = actionsSelect.querySelectorAll('option'); + if (options[targetIndex]) { + options[targetIndex].selected = true; + } + actionsGo.click(); + } + } + }); + } + + actionsMenu.addEventListener('click', (e) => { + const hasSelected = Array.from(navigatorTable).some((el) => + el.classList.contains('selected') + ); + if (!hasSelected) { + e.preventDefault(); + e.stopPropagation(); + } + }); + })(); + + // breaks header if breadcrumbs name reaches a width of 80px + (() => { + const minBreadcrumbWidth = 80; + const header = document.querySelector('.navigator-top-nav'); + + if (!header) { + return; + } + + const breadcrumbContainer = document.querySelector('.breadcrumbs-container'); + if (!breadcrumbContainer) { + return; + } + + const breadcrumbFolder = breadcrumbContainer.querySelector('.navigator-breadcrumbs'); + const breadcrumbDropdown = breadcrumbContainer.querySelector('.filer-dropdown-container'); + const filterFilesContainer = document.querySelector('.filter-files-container'); + const actionsWrapper = document.querySelector('.actions-wrapper'); + const navigatorButtonWrapper = document.querySelector('.navigator-button-wrapper'); + + const breadcrumbFolderWidth = breadcrumbFolder?.offsetWidth || 0; + const breadcrumbDropdownWidth = breadcrumbDropdown?.offsetWidth || 0; + const searchWidth = filterFilesContainer?.offsetWidth || 0; + const actionsWidth = actionsWrapper?.offsetWidth || 0; + const buttonsWidth = navigatorButtonWrapper?.offsetWidth || 0; + + const headerStyles = window.getComputedStyle(header); + const headerPadding = parseInt(headerStyles.paddingLeft, 10) + parseInt(headerStyles.paddingRight, 10); + + let headerWidth = header.offsetWidth; + const fullHeaderWidth = minBreadcrumbWidth + breadcrumbFolderWidth + + breadcrumbDropdownWidth + searchWidth + actionsWidth + buttonsWidth + headerPadding; + + const breadcrumbSizeHandlerClassName = 'breadcrumb-min-width'; + + const breadcrumbSizeHandler = () => { + if (headerWidth < fullHeaderWidth) { + header.classList.add(breadcrumbSizeHandlerClassName); + } else { + header.classList.remove(breadcrumbSizeHandlerClassName); + } + }; + + breadcrumbSizeHandler(); + + window.addEventListener('resize', () => { + headerWidth = header.offsetWidth; + breadcrumbSizeHandler(); + }); + })(); + // thumbnail folder admin view + (() => { + const actionEls = document.querySelectorAll('.navigator-list .list-item input.action-select'); + const foldersActionCheckboxes = '.navigator-list .navigator-folders-body .list-item input.action-select'; + const filesActionCheckboxes = '.navigator-list .navigator-files-body .list-item input.action-select'; + const allFilesToggle = document.querySelector('#files-action-toggle'); + const allFoldersToggle = document.querySelector('#folders-action-toggle'); + + if (allFoldersToggle) { + allFoldersToggle.addEventListener('click', function () { + const checkboxes = document.querySelectorAll(foldersActionCheckboxes); + if (this.checked) { + checkboxes.forEach((cb) => { + if (!cb.checked) { + cb.click(); + } + }); + } else { + checkboxes.forEach((cb) => { + if (cb.checked) { + cb.click(); + } + }); + } + }); + } + + if (allFilesToggle) { + allFilesToggle.addEventListener('click', function () { + const checkboxes = document.querySelectorAll(filesActionCheckboxes); + if (this.checked) { + checkboxes.forEach((cb) => { + if (!cb.checked) { + cb.click(); + } + }); + } else { + checkboxes.forEach((cb) => { + if (cb.checked) { + cb.click(); + } + }); + } + }); + } + + actionEls.forEach((el) => { + el.addEventListener('click', function () { + const filesCheckboxes = document.querySelectorAll(filesActionCheckboxes); + const foldersCheckboxes = document.querySelectorAll(foldersActionCheckboxes); + + if (!this.checked) { + const hasUncheckedFiles = Array.from(filesCheckboxes).some((cb) => !cb.checked); + const hasUncheckedFolders = Array.from(foldersCheckboxes).some((cb) => !cb.checked); + + if (hasUncheckedFiles && allFilesToggle) { + allFilesToggle.checked = false; + } + if (hasUncheckedFolders && allFoldersToggle) { + allFoldersToggle.checked = false; + } + } else { + const allFilesChecked = Array.from(filesCheckboxes).every((cb) => cb.checked); + const allFoldersChecked = Array.from(foldersCheckboxes).every((cb) => cb.checked); + + if (allFilesChecked && allFilesToggle) { + allFilesToggle.checked = true; + } + if (allFoldersChecked && allFoldersToggle) { + allFoldersToggle.checked = true; + } + } + }); + }); + + const clearLink = document.querySelector('.navigator .actions .clear a'); + if (clearLink) { + clearLink.addEventListener('click', () => { + if (allFoldersToggle) { + allFoldersToggle.checked = false; + } + if (allFilesToggle) { + allFilesToggle.checked = false; + } + }); + } + })(); + + const copyUrlButtons = document.querySelectorAll('.js-copy-url'); + copyUrlButtons.forEach((button) => { + button.addEventListener('click', function (e) { + const url = new URL(this.dataset.url, document.location.href); + const msg = this.dataset.msg || 'URL copied to clipboard'; + const infobox = document.createElement('template'); + e.preventDefault(); + + const existingTooltips = document.querySelectorAll('.info.filer-tooltip'); + existingTooltips.forEach((el) => { + el.remove(); + }); + + navigator.clipboard.writeText(url.href); + infobox.innerHTML = `
${msg}
`; + this.classList.add('filer-tooltip-wrapper'); + this.appendChild(infobox.content.firstChild); + + const self = this; + setTimeout(() => { + const tooltip = self.querySelector('.info'); + if (tooltip) { + tooltip.remove(); + } + }, 1200); + }); + }); + + // Initialize FocalPoint + const focalPoint = new FocalPoint(); + focalPoint.initialize(); + + // Initialize Toggler (auto-initializes in constructor) + new Toggler(); +}); diff --git a/filer/static/filer/js/widgets/admin-file-widget.js b/filer/static/filer/js/widgets/admin-file-widget.js new file mode 100644 index 000000000..3e0c38f19 --- /dev/null +++ b/filer/static/filer/js/widgets/admin-file-widget.js @@ -0,0 +1,30 @@ +// Admin File Widget JavaScript +'use strict'; + +document.addEventListener('DOMContentLoaded', () => { + // Find all file widgets and clean up "add new" buttons + const cleanupAddButtons = () => { + document.querySelectorAll('.filer-widget').forEach((widget) => { + const hiddenInput = widget.querySelector('input[type="text"][id]'); + if (hiddenInput) { + const widgetId = hiddenInput.id; + const addButton = document.querySelector(`#add_${widgetId}`); + if (addButton) { + addButton.remove(); + } + } + }); + }; + + cleanupAddButtons(); + + // Also handle dynamically added widgets (e.g., in inline formsets) + const observer = new MutationObserver(() => { + cleanupAddButtons(); + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); +}); diff --git a/filer/static/filer/js/widgets/admin-folder-widget.js b/filer/static/filer/js/widgets/admin-folder-widget.js new file mode 100644 index 000000000..14c5d2206 --- /dev/null +++ b/filer/static/filer/js/widgets/admin-folder-widget.js @@ -0,0 +1,64 @@ +// Admin Folder Widget JavaScript +'use strict'; + +document.addEventListener('DOMContentLoaded', () => { + const initFolderWidget = (widget) => { + const clearButton = widget.querySelector('.filerClearer'); + const input = widget.querySelector('input[type="text"]'); + const folderName = widget.querySelector('.description_text'); + const thumbnailImg = widget.querySelector('.thumbnail_img'); + const addFolderButton = widget.querySelector('.related-lookup'); + + if (!clearButton || !input) { + return; + } + + // Avoid duplicate initialization + if (clearButton.dataset.initialized) { + return; + } + clearButton.dataset.initialized = 'true'; + + clearButton.addEventListener('click', (e) => { + e.preventDefault(); + + if (folderName) { + folderName.textContent = ''; + } + if (input) { + input.removeAttribute('value'); + input.value = ''; + } + if (thumbnailImg) { + thumbnailImg.classList.add('hidden'); + } + clearButton.classList.add('hidden'); + if (addFolderButton) { + addFolderButton.classList.remove('hidden'); + } + }); + }; + + // Initialize all folder widgets + document.querySelectorAll('.filer-dropzone-folder').forEach(initFolderWidget); + + // Handle dynamically added widgets (e.g., in inline formsets) + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + mutation.addedNodes.forEach((node) => { + if (node.nodeType === 1) { // Element node + if (node.classList?.contains('filer-dropzone-folder')) { + initFolderWidget(node); + } + // Also check child nodes + node.querySelectorAll?.('.filer-dropzone-folder').forEach(initFolderWidget); + } + }); + }); + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); +}); diff --git a/filer/templates/admin/filer/actions.html b/filer/templates/admin/filer/actions.html index f99c06459..a0b01fbd7 100644 --- a/filer/templates/admin/filer/actions.html +++ b/filer/templates/admin/filer/actions.html @@ -1,25 +1,19 @@ {% load i18n %} -
- + diff --git a/filer/templates/admin/filer/base_site.html b/filer/templates/admin/filer/base_site.html index 0217933b8..2a66e751d 100644 --- a/filer/templates/admin/filer/base_site.html +++ b/filer/templates/admin/filer/base_site.html @@ -1,10 +1,17 @@ {% extends "admin/base_site.html" %} -{% load i18n filermedia %} +{% load i18n static filer_admin_tags %} + {% block extrastyle %} - - - - - + {{ block.super }} + + {% icon_css_library %} {% endblock %} +{% block extrahead %} + {{ block.super }} + + {# upload stuff #} + {{ media.js }} + + +{% endblock %} diff --git a/filer/templates/admin/filer/breadcrumbs.html b/filer/templates/admin/filer/breadcrumbs.html index a74b6e4bf..a8dceac9d 100644 --- a/filer/templates/admin/filer/breadcrumbs.html +++ b/filer/templates/admin/filer/breadcrumbs.html @@ -1,41 +1,24 @@ -{% load i18n %} +{% load i18n filer_admin_tags %} + diff --git a/filer/templates/admin/filer/change_form.html b/filer/templates/admin/filer/change_form.html index db9d83ded..34aeb85b7 100644 --- a/filer/templates/admin/filer/change_form.html +++ b/filer/templates/admin/filer/change_form.html @@ -1,78 +1,36 @@ {% extends "admin/change_form.html" %} -{% load i18n admin_modify filermedia filer_admin_tags %} - -{% block extrahead %}{{ block.super }} - -{% endblock %} - -{% block pretitle %} -{% if is_popup %} - -{% endif %} -{% endblock %} +{% load i18n admin_modify static filer_admin_tags %} {% block breadcrumbs %} -{% with original as instance %} -{% include "admin/filer/breadcrumbs.html" %} -{% endwith %} + {% with original as instance %} + {% include "admin/filer/breadcrumbs.html" %} + {% endwith %} {% endblock %} {% block extrastyle %} - - - - - + {{ block.super }} + + {% icon_css_library %} {% endblock %} -{% block coltype %}colMS row{% endblock %} {% block after_field_sets %} - {% if is_popup and select_folder %}{% endif %} -{% endblock %} - -{% block field_sets %} - {% for fieldset in adminform %} - {% include "admin/filer/fieldset.html" %} - {% endfor %} -{% endblock %} - - -{% block content %} -
- {{block.super}} -
-{% endblock %} - -{% block object-tools %} -{% if change %}{% if not is_popup %} - -{% endif %}{% endif %} + {% filer_admin_context_hidden_formfields %} {% endblock %} {% block sidebar %} - {% with original.duplicates as duplicates %} - {% if duplicates %} - - {% endif %} - {% endwith %} -{% endblock %} - -{% block submit_buttons_bottom %} - {% if not original|is_restricted_for_user:user %} - {% submit_row %} - {% endif %} + {% block file_sidebar %} + {% with original.duplicates as duplicates %} + {% if duplicates %} +
+

{% translate "Duplicates" %}

+ +
+ {% endif %} + {% endwith %} + {% endblock %} {% endblock %} diff --git a/filer/templates/admin/filer/delete_confirmation.html b/filer/templates/admin/filer/delete_confirmation.html index 77e28c488..635fbfb05 100644 --- a/filer/templates/admin/filer/delete_confirmation.html +++ b/filer/templates/admin/filer/delete_confirmation.html @@ -1,37 +1,10 @@ -{% extends "admin/filer/base_site.html" %} -{% load i18n %} -{% load admin_urls %} +{% extends "admin/delete_confirmation.html" %} +{% load i18n static %} -{% block breadcrumbs %} -{% include "admin/filer/breadcrumbs.html" with instance=object breadcrumbs_action="Delete" %} +{% block extrastyle %}{{ block.super }} + {% endblock %} -{% block content %} -{% if perms_lacking or protected %} - {% if perms_lacking %} -

{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}

-
    - {% for obj in perms_lacking %} -
  • {{ obj }}
  • - {% endfor %} -
- {% endif %} - {% if protected %} -

{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktrans %}

-
    - {% for obj in protected %} -
  • {{ obj }}
  • - {% endfor %} -
- {% endif %} -{% else %} -

{% blocktrans with escaped_object=object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktrans %}

-
    {{ deleted_objects|unordered_list }}
-
{% csrf_token %} -
- - -
-
-{% endif %} +{% block breadcrumbs %} + {% include "admin/filer/breadcrumbs.html" with instance=object breadcrumbs_action="Delete" %} {% endblock %} diff --git a/filer/templates/admin/filer/delete_selected_files_confirmation.html b/filer/templates/admin/filer/delete_selected_files_confirmation.html index b7d96df2f..5c9da677e 100644 --- a/filer/templates/admin/filer/delete_selected_files_confirmation.html +++ b/filer/templates/admin/filer/delete_selected_files_confirmation.html @@ -1,4 +1,4 @@ -{% extends "admin/filer/base_site.html" %} +{% extends "admin/delete_confirmation.html" %} {% load i18n %} {% block breadcrumbs %} @@ -6,44 +6,46 @@ {% endblock %} {% block content %} -{% if perms_lacking or protected %} - {% if perms_lacking %} -

{% blocktrans %}Deleting the selected files and/or folders would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}

-
    - {% for obj in perms_lacking %} -
  • {{ obj }}
  • + {% if perms_lacking or protected %} + {% if perms_lacking %} +

    {% blocktrans %}Deleting the selected files and/or folders would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}

    +
      + {% for obj in perms_lacking %} +
    • {{ obj }}
    • + {% endfor %} +
    + {% endif %} + {% if protected %} +

    {% blocktrans %}Deleting the selected files and/or folders would require deleting the following protected related objects:{% endblocktrans %}

    +
      + {% for obj in protected %} +
    • {{ obj }}
    • + {% endfor %} +
    + {% endif %} + {% else %} +

    {% blocktrans %}Are you sure you want to delete the selected files and/or folders? All of the following objects and their related items will be deleted:{% endblocktrans %}

    + {% for deletable_object in deletable_objects %} +
      {{ deletable_object|unordered_list }}
    {% endfor %} -
+
+ {% csrf_token %} +
+ {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + {% if is_popup %} + + {% if select_folder %}{% endif %} + {% endif %} + + + {% translate "No, take me back" %} + +
+
{% endif %} - {% if protected %} -

{% blocktrans %}Deleting the selected files and/or folders would require deleting the following protected related objects:{% endblocktrans %}

-
    - {% for obj in protected %} -
  • {{ obj }}
  • - {% endfor %} -
- {% endif %} -{% else %} -

{% blocktrans %}Are you sure you want to delete the selected files and/or folders? All of the following objects and their related items will be deleted:{% endblocktrans %}

- {% for deletable_object in deletable_objects %} -
    {{ deletable_object|unordered_list }}
- {% endfor %} -
{% csrf_token %} -
- {% for f in files_queryset %} - - {% endfor %} - {% for f in folders_queryset %} - - {% endfor %} - {% if is_popup %} - - {% if select_folder %}{% endif %} - {% endif %} - - - -
-
-{% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/dismiss_popup.html b/filer/templates/admin/filer/dismiss_popup.html new file mode 100644 index 000000000..af648bc66 --- /dev/null +++ b/filer/templates/admin/filer/dismiss_popup.html @@ -0,0 +1,8 @@ +{% extends "admin/filer/base_site.html" %} + +{% block extrahead %} + {{ block.super }} + +{% endblock %} diff --git a/filer/templates/admin/filer/file/change_form.html b/filer/templates/admin/filer/file/change_form.html new file mode 100644 index 000000000..a1d5b21fc --- /dev/null +++ b/filer/templates/admin/filer/file/change_form.html @@ -0,0 +1,23 @@ +{% extends "admin/filer/change_form.html" %} +{% load i18n admin_modify static %} + +{% block extrahead %} + {{ block.super }} + + {# upload stuff #} + + +{% endblock %} + + +{% block object-tools %} + {% if change and not is_popup %} + + {% endif %} + {% include "admin/filer/tools/detail_info.html" %} +{% endblock %} diff --git a/filer/templates/admin/filer/file/popup_response.html b/filer/templates/admin/filer/file/popup_response.html new file mode 100644 index 000000000..625659f3d --- /dev/null +++ b/filer/templates/admin/filer/file/popup_response.html @@ -0,0 +1,10 @@ +{% extends "admin/filer/base_site.html" %} +{% load static %} + +{% block extrahead %} + {{ block.super }} + +{% endblock %} diff --git a/filer/templates/admin/filer/folder/change_form.html b/filer/templates/admin/filer/folder/change_form.html index 1550af60a..7d850eb47 100644 --- a/filer/templates/admin/filer/folder/change_form.html +++ b/filer/templates/admin/filer/folder/change_form.html @@ -1,36 +1,41 @@ -{% extends "admin/filer/change_form.html" %} -{% load i18n admin_modify filermedia filer_admin_tags %} +{% extends "admin/change_form.html" %} +{% load i18n admin_modify static filer_admin_tags %} -{% block extrahead %} - {{ block.super }} - +{% block breadcrumbs %} + {% endblock %} {% block coltype %}{% if is_popup %}colM{% else %}colMS{% endif %}{% endblock %} {% block object-tools %} -{% if change %}{% if not is_popup %} - -{% endif %}{% endif %} + {% if change and not is_popup %} + + {% endif %} {% endblock %} {% block after_field_sets %} -{% if is_popup and select_folder %}{% endif %} + {% filer_admin_context_hidden_formfields %} {% endblock %} -{% block sidebar %}{% endblock %} - -{% block submit_buttons_bottom %} - {% if not original or not original|is_restricted_for_user:user %} - {% submit_row %} +{% block sidebar %} + {% if not is_popup %} + {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/choose_copy_destination.html b/filer/templates/admin/filer/folder/choose_copy_destination.html index 17e11b592..3bd73f5bc 100644 --- a/filer/templates/admin/filer/folder/choose_copy_destination.html +++ b/filer/templates/admin/filer/folder/choose_copy_destination.html @@ -1,30 +1,76 @@ -{% extends "admin/filer/base_site.html" %} -{% load i18n filer_admin_tags %} +{% extends "admin/base_site.html" %} +{% load i18n static %} {% block breadcrumbs %} -{% include "admin/filer/breadcrumbs.html" %} + {% include "admin/filer/breadcrumbs.html" %} +{% endblock %} + +{% block extrastyle %} + {{ block.super }} + + {% endblock %} {% block extrahead %} {{ block.super }} + + + {% endblock %} + {% block content %} -{% if not to_copy %} -

{% blocktrans %}There are no files and/or folders available to copy.{% endblocktrans %}

-{% else %} -

{% blocktrans %}The following files and/or folders will be copied to a destination folder (retaining their tree structure):{% endblocktrans %}

-
    {{ to_copy|unordered_list }}
-
{% csrf_token %} -
- {% for f in files_queryset %}{% endfor %} - {% for f in folders_queryset %}{% endfor %} - - - {% include 'admin/filer/folder/destination_field.html' %} - {{ copy_form.as_p_with_help }} -
-
+ {% if perms_lacking %} +

{% blocktrans %}Your account doesn't have permissions to copy all of the selected files and/or folders.{% endblocktrans %}

+ - -{% endif %} + {% else %} + {% if not destination_folders %} +

{% blocktrans %}There are no destination folders available.{% endblocktrans %}

+ + {% else %} + {% if not to_copy %} +

{% blocktrans %}There are no files and/or folders available to copy.{% endblocktrans %}

+ + {% else %} +

{% blocktrans %}The following files and/or folders will be copied to a destination folder (retaining their tree structure):{% endblocktrans %}

+
    {{ to_copy|unordered_list }}
+
+ {% csrf_token %} +
+ {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + + +

+ + +

+ {{ copy_form.as_p }} + + +
+
+ {% endif %} + {% endif %} + {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/choose_images_resize_options.html b/filer/templates/admin/filer/folder/choose_images_resize_options.html index de1e3d607..a47df078a 100644 --- a/filer/templates/admin/filer/folder/choose_images_resize_options.html +++ b/filer/templates/admin/filer/folder/choose_images_resize_options.html @@ -1,35 +1,45 @@ {% extends "admin/base_site.html" %} -{% load i18n filer_admin_tags %} +{% load i18n static %} {% block breadcrumbs %} -{% include "admin/filer/breadcrumbs.html" %} + {% include "admin/filer/breadcrumbs.html" %} +{% endblock %} + +{% block extrastyle %} + {{ block.super }} + {% endblock %} {% block content %} -{% if not to_resize %} -

{% blocktrans %}There are no images available to resize.{% endblocktrans %}

-{% else %} -

{% blocktrans %}The following images will be resized:{% endblocktrans %}

-
    {{ to_resize|unordered_list }}
-
{% csrf_token %} -
- {% for f in files_queryset %} - - {% endfor %} - {% for f in folders_queryset %} - - {% endfor %} - - - {% if cmsplugin_enabled %} -

{% blocktrans %}Choose an existing thumbnail option or enter resize parameters:{% endblocktrans %}

+ {% if perms_lacking %} +

{% blocktrans %}Your account doesn't have permissions to resize all of the selected images.{% endblocktrans %}

{% else %} -

{% blocktrans %}Choose resize parameters:{% endblocktrans %}

- {% endif %} - {{ resize_form.as_p_with_help }} -

{% blocktrans %}Warning: Images will be resized in-place and originals will be lost. Maybe first make a copy of them to retain the originals.{% endblocktrans %}

-

-
-
-{% endif %} + {% if not to_resize %} +

{% blocktrans %}There are no images available to resize.{% endblocktrans %}

+ {% else %} +

{% blocktrans %}The following images will be resized:{% endblocktrans %}

+
    {{ to_resize|unordered_list }}
+
{% csrf_token %} +
+ {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + + +

{% blocktrans %}Choose an existing thumbnail option or enter resize parameters:{% endblocktrans %}

+ {% for fieldset in resize_form.admin_form %} + {% include "admin/includes/fieldset.html" %} + {% endfor %} +

{% blocktrans %}Warning: Images will be resized in-place and originals will be lost. Maybe first make a copy of them to retain the originals.{% endblocktrans %}

+ +
+ +
+
+
+ {% endif %} + {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/choose_move_destination.html b/filer/templates/admin/filer/folder/choose_move_destination.html index 37fdfc2f3..c59dfb385 100644 --- a/filer/templates/admin/filer/folder/choose_move_destination.html +++ b/filer/templates/admin/filer/folder/choose_move_destination.html @@ -1,27 +1,72 @@ -{% extends "admin/filer/base_site.html" %} -{% load i18n filer_admin_tags %} +{% extends "admin/base_site.html" %} +{% load i18n static %} {% block breadcrumbs %} -{% include "admin/filer/breadcrumbs.html" %} + {% include "admin/filer/breadcrumbs.html" %} +{% endblock %} + +{% block extrastyle %} + {{ block.super }} + + +{% endblock %} + +{% block extrahead %} + {{ block.super }} + + + {% endblock %} {% block content %} -{% if not to_move %} -

{% blocktrans %}There are no files and/or folders available to move.{% endblocktrans %}

-{% else %} -

{% blocktrans %}The following files and/or folders will be moved to a destination folder (retaining their tree structure):{% endblocktrans %}

-
    {{ to_move|unordered_list }}
-
{% csrf_token %} -
- {% for f in files_queryset %}{% endfor %} - {% for f in folders_queryset %}{% endfor %} - - - {% include 'admin/filer/folder/destination_field.html' %} -
- + {% if perms_lacking %} +

{% blocktrans %}Your account doesn't have permissions to move all of the selected files and/or folders.{% endblocktrans %}

+ -
- -{% endif %} + {% else %} + {% if not destination_folders %} +

{% blocktrans %}There are no destination folders available.{% endblocktrans %}

+ + {% else %} + {% if not to_move %} +

{% blocktrans %}There are no files and/or folders available to move.{% endblocktrans %}

+ + {% else %} +

{% blocktrans %}The following files and/or folders will be moved to a destination folder (retaining their tree structure):{% endblocktrans %}

+
    {{ to_move|unordered_list }}
+
{% csrf_token %} +
+ {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + + +

+

+ + +
+
+ {% endif %} + {% endif %} + {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/choose_rename_format.html b/filer/templates/admin/filer/folder/choose_rename_format.html index 8785c10b8..fae8ea1b7 100644 --- a/filer/templates/admin/filer/folder/choose_rename_format.html +++ b/filer/templates/admin/filer/folder/choose_rename_format.html @@ -1,53 +1,65 @@ {% extends "admin/base_site.html" %} -{% load i18n filer_admin_tags %} +{% load i18n static %} {% block breadcrumbs %} -{% include "admin/filer/breadcrumbs.html" %} + {% include "admin/filer/breadcrumbs.html" %} +{% endblock %} + +{% block extrastyle %} + {{ block.super }} + {% endblock %} {% block content %} -{% if not to_rename %} -

{% blocktrans %}There are no files available to rename.{% endblocktrans %}

-{% else %} -

{% blocktrans %}The following files will be renamed (they will stay in their folders and keep original filename, only displayed filename will be changed):{% endblocktrans %}

-
    {{ to_rename|unordered_list }}
-
{% csrf_token %} -
- {% for f in files_queryset %} - - {% endfor %} - {% for f in folders_queryset %} - - {% endfor %} - - - {{ rename_form.as_p_with_help }} -
-

Rename format is in Python % operator format using dictionary of possible values:

-
-
original_filename
-
original_basename
-
Original filename without possible file extension.
-
original_extension
-
current_filename
-
current_basename
-
Current filename without possible file extension.
-
current_extension
-
current_folder
-
Name of the folder the file is currently in.
-
counter
-
Renaming sequence counter in the current folder (1-based).
-
global_counter
-
Renaming squence counter for all files currently renaming (1-based).
-
-

Examples:

-
    -
  • Prefix %(current_filename)s
  • -
  • Image %(counter)03d
  • -
-
-

-
-
-{% endif %} + {% if perms_lacking %} +

{% blocktrans %}Your account doesn't have permissions to rename all of the selected files.{% endblocktrans %}

+ {% else %} + {% if not to_rename %} +

{% blocktrans %}There are no files available to rename.{% endblocktrans %}

+ {% else %} +

{% blocktrans %}The following files will be renamed (they will stay in their folders and keep original filename, only displayed filename will be changed):{% endblocktrans %}

+
    {{ to_rename|unordered_list }}
+
+ {% csrf_token %} +
+ {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + + + {{ rename_form.as_p }} +
+

Rename format is in Python % operator format using dictionary of possible values:

+
+
original_filename
+
original_basename
+
Original filename without possible file extension.
+
original_extension
+
current_filename
+
current_basename
+
Current filename without possible file extension.
+
current_extension
+
current_folder
+
Name of the folder the file is currently in.
+
counter
+
Renaming sequence counter in the current folder (1-based).
+
global_counter
+
Renaming squence counter for all files currently renaming (1-based).
+
+

Examples:

+
    +
  • Prefix %(current_filename)s
  • +
  • Image %(counter)03d
  • +
+
+

+ +

+
+
+ {% endif %} + {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/directory_listing.html b/filer/templates/admin/filer/folder/directory_listing.html index d13f0aefb..a748d0b60 100644 --- a/filer/templates/admin/filer/folder/directory_listing.html +++ b/filer/templates/admin/filer/folder/directory_listing.html @@ -1,142 +1,265 @@ {% extends "admin/filer/base_site.html" %} -{% load filer_admin_tags filermedia i18n %} +{% load i18n static filer_admin_tags %} -{% block extrahead %} - {{ block.super }} - {# upload stuff #} - {{ media.js }} - - - - - - - - - {% if action_form %} - {% if actions_on_top or actions_on_bottom %} - - {% endif %} - {% endif %} -{% endblock %} - -{% block coltype %}colMS row{% endblock %} -{% block bodyclass %}change-list filebrowser{% endblock %} +{% block coltype %}{% endblock %} +{% block bodyclass %}{{ block.super }} change-list filebrowser{% endblock %} {% block extrastyle %} {{ block.super }} - {{ media.css }} + {{ media.css }} {% if action_form %} {% url 'admin:jsi18n' as jsi18nurl %} {% endif %} - {% if query.pop %} - {% endif %} - {% if not actions_on_top and not actions_on_bottom %} - {% endif %} {% endblock %} {% block breadcrumbs %} - {% with folder as instance %} - {% include "admin/filer/breadcrumbs.html" %} - {% endwith %} + {% if not is_popup %} + + {% endif %} {% endblock %} +{% block sidebar %}{% endblock %} -{% block sidebar %} - +{% block content_title %} +

 

{% endblock %} +{% block object-tools %} +{% endblock %} -{% block content_title %}{% endblock %} {% block content %} -
-
    - {% if not folder|is_restricted_for_user:user and folder.can_have_subfolders %} - {%if is_popup and folder.is_root %} - {%else%} -
  • - {% trans "New Folder" %} -
  • - {% endif %} - {% endif %} -
  • - {% trans 'Upload' %} -
  • - {% include 'admin/filer/tools/upload_button_js.html' %} -
- -
- {% include "admin/filer/tools/search_form.html" %} - - {% if not folder.is_root %} -
+
+ {% block filer-tools %} + - {% endif %} - {% endif %} - -
{% csrf_token %} - {% if is_popup %}{% endif %} - {% if action_form and actions_on_top and paginator.count and not select_folder and not is_popup %}{% filer_actions %}{% endif %} - {% include "admin/filer/folder/directory_table.html" %} - {% if action_form and actions_on_bottom and paginator.count and not select_folder and not is_popup %}{% filer_actions %}{% endif %} -
- +
+
+
+ {% include "admin/filer/tools/search_form.html" %} +
-
- {% endblock %} diff --git a/filer/templates/admin/filer/folder/directory_table_list.html b/filer/templates/admin/filer/folder/directory_table_list.html new file mode 100644 index 000000000..54647e5fa --- /dev/null +++ b/filer/templates/admin/filer/folder/directory_table_list.html @@ -0,0 +1,256 @@ +{% load i18n l10n admin_list filer_tags filer_admin_tags static thumbnail %} +
+ diff --git a/filer/templates/admin/filer/folder/directory_thumbnail_list.html b/filer/templates/admin/filer/folder/directory_thumbnail_list.html new file mode 100644 index 000000000..b7a3fe91f --- /dev/null +++ b/filer/templates/admin/filer/folder/directory_thumbnail_list.html @@ -0,0 +1,228 @@ +{% load i18n l10n admin_list filer_tags filer_admin_tags static thumbnail %} +
+ diff --git a/filer/templates/admin/filer/folder/legacy_listing.html b/filer/templates/admin/filer/folder/legacy_listing.html new file mode 100644 index 000000000..73beae30f --- /dev/null +++ b/filer/templates/admin/filer/folder/legacy_listing.html @@ -0,0 +1,265 @@ +{% extends "admin/filer/base_site.html" %} +{# Used for django < 5.2 with lagacy object-tools blocks #} +{# Customized templates will need to be updated for django >= 5.2 #} +{# The object-tools block has been renamed filer-tools for django >= 5.2 #} + +{% load i18n static filer_admin_tags %} + +{% block coltype %}{% endblock %} +{% block bodyclass %}{{ block.super }} change-list filebrowser{% endblock %} + +{% block extrastyle %} + {{ block.super }} + + {{ media.css }} + {% if action_form %} + {% url 'admin:jsi18n' as jsi18nurl %} + + {% endif %} + {% if query.pop %} + + {% endif %} +{% endblock %} + +{% block breadcrumbs %} + {% if not is_popup %} + + {% endif %} +{% endblock %} + +{% block sidebar %}{% endblock %} + +{% block content_title %} +

 

+{% endblock %} + +{% block content %} + +
+ {% include "admin/filer/tools/search_form.html" %} + +
+{% endblock %} \ No newline at end of file diff --git a/filer/templates/admin/filer/folder/list_type_switcher.html b/filer/templates/admin/filer/folder/list_type_switcher.html new file mode 100644 index 000000000..ebf95c4e4 --- /dev/null +++ b/filer/templates/admin/filer/folder/list_type_switcher.html @@ -0,0 +1 @@ + diff --git a/filer/templates/admin/filer/folder/new_folder_form.html b/filer/templates/admin/filer/folder/new_folder_form.html index eb0e8dc1a..f9ff43b7d 100644 --- a/filer/templates/admin/filer/folder/new_folder_form.html +++ b/filer/templates/admin/filer/folder/new_folder_form.html @@ -1,37 +1,38 @@ {% extends "admin/change_form.html" %} -{% load i18n %} +{% load i18n filer_admin_tags %} + +{% block title %}{% translate "Add new" %} {% translate "folder" %} | {{ site_title|default:_('Django site admin') }}{% endblock %} + {% block content %} -

{% trans "Add new" %} {% trans "folder" %}

-
-
- {% csrf_token %} -
- - {% if select_folder %}{% endif %} - {% if new_folder_form.errors %} -

- {% blocktrans count new_folder_form.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %} -

- {{ new_folder_form.non_field_errors }} - {% endif %} -
-
- {{ new_folder_form.errors.name.as_ul }} -
- {% for field in new_folder_form %} - {{ field }} - {% endfor %} -
+

{% translate "Add new" %} {% translate "folder" %}

+
+ + {% csrf_token %} +
+ {% filer_admin_context_hidden_formfields %} + {% if new_folder_form.errors %} +

+ {% blocktrans count new_folder_form.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %} +

+ {{ new_folder_form.non_field_errors }} + {% endif %} +
+
+ {{ new_folder_form.errors.name.as_ul }} +
+ {% for field in new_folder_form %} + {{ field }} + {% endfor %} +
+
+
+
+ +
+
-
-
- -
- -
-
-
- - -
+ +
{% endblock %} diff --git a/filer/templates/admin/filer/image/change_form.html b/filer/templates/admin/filer/image/change_form.html index 1065b4178..2c564487a 100644 --- a/filer/templates/admin/filer/image/change_form.html +++ b/filer/templates/admin/filer/image/change_form.html @@ -1,35 +1,22 @@ {% extends "admin/filer/change_form.html" %} -{% load i18n admin_modify filer_admin_tags %} +{% load i18n admin_modify static %} -{% block object-tools %} -{% if change %}{% if not is_popup %} - -{% endif %}{% endif %} -{% endblock %} +{% block extrahead %} + {{ block.super }} -{% block coltype %}colMS row{% endblock %} -{% block field_sets %} - {% for fieldset in adminform %} - {% include "admin/filer/fieldset.html" %} - {% endfor %} + {# upload stuff #} + + {% endblock %} -{% block content %} - {{block.super}} +{% block object-tools %} + {% if change and not is_popup %} + + {% endif %} + {% include "admin/filer/tools/detail_info.html" %} {% endblock %} - - -{%block sidebar %} - -{%endblock%} diff --git a/filer/templates/admin/filer/image/expand.html b/filer/templates/admin/filer/image/expand.html new file mode 100644 index 000000000..891ae07d0 --- /dev/null +++ b/filer/templates/admin/filer/image/expand.html @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/filer/templates/admin/filer/templatetags/file_icon.html b/filer/templates/admin/filer/templatetags/file_icon.html new file mode 100644 index 000000000..39a5f4430 --- /dev/null +++ b/filer/templates/admin/filer/templatetags/file_icon.html @@ -0,0 +1,38 @@ +{% load i18n %} +{% if sidebar_image_ratio %} +
+{% endif %} +{% if download_url %} + {% if mime_maintype == 'audio' %} + + {% elif mime_maintype == 'video' %} + + {% else %} + {{ alt_text }} + {% endif %} +{% else %} + {{ alt_text }} +{% endif %} +{% if sidebar_image_ratio %} +
+ +
+
+{% endif %} diff --git a/filer/templates/admin/filer/tools/clipboard/clipboard.html b/filer/templates/admin/filer/tools/clipboard/clipboard.html index 0c72f0bb0..4dce738b1 100644 --- a/filer/templates/admin/filer/tools/clipboard/clipboard.html +++ b/filer/templates/admin/filer/tools/clipboard/clipboard.html @@ -1,65 +1,55 @@ -{% load thumbnail i18n filer_admin_tags %} +{% load i18n filer_admin_tags %} -{% with user_clipboard as clipboard %} -
- - - - - - - + + + + {% if clipboard.files.count %} + {% with clipboard.files.all as items %} + {% include "admin/filer/tools/clipboard/clipboard_item_rows.html" %} + {% endwith %} + {% else %} + + + + {% endif %} + +

{% trans "Clipboard" %}

-
-
+{% for clipboard in user.filer_clipboards.all %} + - -{% endwith %} + {% endcomment %} +
{% trans "the clipboard is empty" %}
+
+{% endfor %} diff --git a/filer/templates/admin/filer/tools/clipboard/clipboard_item_rows.html b/filer/templates/admin/filer/tools/clipboard/clipboard_item_rows.html index 471439b98..9d46e7fbe 100644 --- a/filer/templates/admin/filer/tools/clipboard/clipboard_item_rows.html +++ b/filer/templates/admin/filer/tools/clipboard/clipboard_item_rows.html @@ -1,13 +1,19 @@ -{% load thumbnail i18n %}{% if items %} -{% for generic_item in items %}{% with generic_item as item %} - -
{{ item.default_alt_text }}
- {{ item.label }} - - -{% endwith %}{% endfor %}{% else %} - - - {% trans "upload failed" %} - - {% endif %} \ No newline at end of file +{% load i18n %} + +{% if items %} + {% for generic_item in items %} + {% with generic_item as item %} + + {{ item.default_alt_text }} + {{ item.label }} + + + {% endwith %} + {% endfor %} +{% else %} + + + {% translate "upload failed" %} + + +{% endif %} diff --git a/filer/templates/admin/filer/tools/detail_info.html b/filer/templates/admin/filer/tools/detail_info.html new file mode 100644 index 000000000..1e18f34ea --- /dev/null +++ b/filer/templates/admin/filer/tools/detail_info.html @@ -0,0 +1,55 @@ +{% load filer_admin_tags i18n static %} +
+
+
+
+ {% file_icon original detail=True %} +
+ {% if original.file.exists %} + +   + {% translate "Download" %} + + {% if expand_image_url %} + + {% translate "Expand" %}  + + + {% endif %} + {% else %} + {% translate "File is missing" %} + {% endif %} +
+
+
+
+ {% if original.file_type or original.modified_at or original.uploaded_at or original.width or original.height or original.size %} +
+ {% if original.file_type %} +
{% translate "Type" %}
+
{{ original.extension|upper }} {{ original.file_type }} ({{ original.mime_type }})
+ {% endif %} + {% if original.width or original.height %} +
{% translate "Size" %}
+
{{ original.width|floatformat }}x{{ original.height|floatformat }} px
+ {% endif %} + {% if original.size %} +
{% translate "File-size" %}
+
{{ original.size|filesizeformat }}
+ {% endif %} + {% if original.modified_at %} +
{% translate "Modified" %}
+
{{ original.modified_at }}
+ {% endif %} + {% if original.uploaded_at %} +
{% translate "Created" %}
+
{{ original.uploaded_at }}
+ {% endif %} + {% if original.owner %} +
{% translate "Owner" %}
+
{{ original.owner }}
+ {% endif %} +
+ {% endif %} +
+
diff --git a/filer/templates/admin/filer/tools/search_form.html b/filer/templates/admin/filer/tools/search_form.html index 0fdd405aa..cf3f98976 100644 --- a/filer/templates/admin/filer/tools/search_form.html +++ b/filer/templates/admin/filer/tools/search_form.html @@ -1,43 +1,9 @@ -{% load filermedia filer_admin_tags %} -{% load i18n %} -
-
- +{% load i18n static filer_admin_tags %} + +{% if show_result_count %} +
+ ({% translate "found" %} {% blocktrans count folder_children|length as counter %}{{ counter }} folder{% plural %}{{ counter }} folders{% endblocktrans %} {% translate "and" %} + {% blocktrans count folder_files|length as counter %}{{ counter }} file{% plural %}{{ counter }} files{% endblocktrans %}) + {% translate "cancel search" %}
-
-
- +{% endif %} diff --git a/filer/templates/admin/filer/widgets/admin_file.html b/filer/templates/admin/filer/widgets/admin_file.html index d84586994..65f4d9994 100644 --- a/filer/templates/admin/filer/widgets/admin_file.html +++ b/filer/templates/admin/filer/widgets/admin_file.html @@ -1,40 +1,62 @@ -{% comment "Template for file widget" %} - Changes made here should also be considered for the customizable version - admin_file_custom.html. -{% endcomment %} -{% load i18n filer_admin_tags %}{% spaceless %} -{% if object %} - {% if object.icons.32 %} - {{ object.label }} -  {{ object.label }} - {% else %} - - {% trans 'file missing' %} - -  {% trans 'file missing' %} - {% endif %} -{% else %} - - {% trans 'no file selected' %} - -   -{% endif %} - - {% trans 'Lookup' %} - - -
-{{ hidden_input }} - +{% load i18n filer_admin_tags static %} + +{% spaceless %} +
+
+ + + +
+
+
+ {% translate "or drop your file here" %} +
+ + + {% if object %} + {% if object.file.exists %} + {% file_icon object detail="thumbnail" %} +  {{ object.label }} + {% else %} + {% file_icon object %} +  {% translate 'File is missing' %} + {% endif %} + {% else %} + +   + {% endif %} + + + + + + + + + + + {% translate 'Choose File' %} + + + +
+ + +
+
+
{% endspaceless %} diff --git a/filer/templates/admin/filer/widgets/admin_folder.html b/filer/templates/admin/filer/widgets/admin_folder.html index f7b782b1f..836da2c60 100644 --- a/filer/templates/admin/filer/widgets/admin_folder.html +++ b/filer/templates/admin/filer/widgets/admin_folder.html @@ -1,22 +1,24 @@ -{% load i18n filer_admin_tags filermedia %}{% spaceless %} -{% trans 'no folder selected' %} {% if object %}{{ object.pretty_logical_path }}{% else %}{% trans 'none selected' %}{% endif %} - - {% trans 'Lookup' %} - - -
-{{ hidden_input }} - +{% load i18n filer_admin_tags static %} + +{% spaceless %} +
+ + +   + {% trans "Choose Folder" %} + + + + + {% if object %} + {{ object.pretty_logical_path }} + {% endif %} + + + + + + + +
{% endspaceless %} diff --git a/filer/tests/foo_file.jpg b/filer/tests/foo_file.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e4936f713e63dda04b344bf13f836f735e8a719 GIT binary patch literal 11200 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 dzb>DMy@vn* literal 0 HcmV?d00001 diff --git a/filer/tests/new_three.jpg b/filer/tests/new_three.jpg new file mode 100644 index 0000000000000000000000000000000000000000..697f7c7fffeb382c85a96c1ff142d242f9f9cc76 GIT binary patch literal 1119 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!_R+RT5jFBTZ;33zdPAeav=CW!{)jv>w>y7 zw_g4y(bu)vv}dEY(K^ZGG|3aJO>>0Uif_%i#=GTB?%CgKc#_{Q%)cyZ^YLBo*Qo2; z^}nvazga6Vcsfh)u`V07 z&dPO9nk$<8##}OgV!^72xvv`-89vV`Ra)BbJ1Kg`qA=ax<@~lf<)L*%;{0@>HyqKEc3QGL z-shiH|E;@mLUYCZbG-A9OME#Sv}pEn@e3V~Ub|=3#b0;29jCCpLb+p=(ZthFnj$@I z?Qb$I_4Q<#V0|FsQ0R32KBpC5{xhV6)rwSGOxd_~@~+xldb3Mj*gnylxbmEG?BdVr dzb>DMy@vn* literal 0 HcmV?d00001 diff --git a/filer/tests/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest.jpg b/filer/tests/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e4936f713e63dda04b344bf13f836f735e8a719 GIT binary patch literal 11200 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 bN-MI%ERwX}TfM>y>+re1s%g)mRMY+eB3*8Y literal 0 HcmV?d00001 From 8efb149cea5a709fa75934adeb6435a744bd0fd4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 10:00:27 +0000 Subject: [PATCH 06/51] Remove accidentally committed test.zip Agent-Logs-Url: https://github.com/pbs/django-filer/sessions/cad30a66-0889-48ba-bb3e-2ab3bf2939b2 Co-authored-by: andreilupuleasa <124138251+andreilupuleasa@users.noreply.github.com> --- test.zip | Bin 2538 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.zip diff --git a/test.zip b/test.zip deleted file mode 100644 index 0381d807ac99102a6d726b13b91b43912bc71ac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2538 zcmbW1y>HV%7{=YEMS?P9=vD^AQY0kWk~kk53@pu(4XLVR#h-V@_0_SHIFXQAiT?m* z2BZ!M!Nv?5EC{h8{slgUPO$JE?VX)h=h&{Ji!X}b-}~I-S5LoJTUpomb#L><{{PLz zR~_#0;n5Z>W)UyiNyt_|_vssor=gPix~q5WPW8$p*1Lyx;#IF?M}zjH5$X#nZx^Tq zvK9tjuqFG1-x&BlS%nN-&z&ktJ0eydFa^AZ&41yGv0(P7&@KGEk-zjm*IAAD`7 zePKq}9EHxzrNbz`={o~=eh?mg+3T)BDPIjWLJmUKTG-FF9WtFxS>#wOuodj9uipO= z@+z`vYhW9cjABBED)f&#U!Po3_G8y%77J~cjfOE%$R4h}sa23I=L9SX`~$N+j+skc zCHkYe@mioa)oy2phuML#Jc$qOUvuE{8R#=aMiUB5BMD%Lm8D{%~R_9;?;Lyi>u+c9MyiWEQzQ| z@->tvy;PH=VT(vSkIpZCy6>=EbUOGilX3Ycou}SfDx}I;F0YlSsnS2tn#sVjTHmUv z(o3LbGI5@YQ&Bj3d~%jUy~s#>Xq=5HsJ&chrF=mkRU{>DfCDmZ@T^(`5tq0Dj>)va z&uR@sXyOJqE7JzMwL**Jw1Gt;IdKD=m}!Gkb%X5SiTuP+oSP~1tQaa%6hm=#rqG8g bN-MI%ERwX}TfM>y>+re1s%g)mRMY+eB3*8Y From 2a29e5e074df00872be5c8c67e7cbe25442056a4 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 30 Apr 2026 13:17:26 +0300 Subject: [PATCH 07/51] BEN-2954: fix test error --- filer/__init__.py | 2 +- setup.py | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/filer/__init__.py b/filer/__init__.py index bde226217..2c9353c53 100644 --- a/filer/__init__.py +++ b/filer/__init__.py @@ -11,4 +11,4 @@ 7. Create a new release on github. """ -__version__ = '3.5.0.pbs.1' +__version__ = '3.5.0+pbs.1' diff --git a/setup.py b/setup.py index 7f2face3e..67ae6463b 100644 --- a/setup.py +++ b/setup.py @@ -1,13 +1,20 @@ import os +import re from setuptools import setup, find_packages -try: - from setuptest import test -except ImportError: - from setuptools.command.test import test -version = __import__('filer').__version__ +def get_version(): + """Read version from filer/__init__.py without importing the package.""" + init_py = os.path.join(os.path.dirname(__file__), 'filer', '__init__.py') + with open(init_py) as f: + match = re.search(r"^__version__\s*=\s*['\"]([^'\"]+)['\"]", f.read(), re.M) + if not match: + raise RuntimeError("Cannot find __version__ in filer/__init__.py") + return match.group(1) + + +version = get_version() def read(fname): @@ -60,10 +67,4 @@ def read(fname): 'Programming Language :: Python :: 3.13', 'Topic :: Internet :: WWW/HTTP', ], - cmdclass={'test': test}, - test_suite='setuptest.setuptest.SetupTestSuite', - tests_require=( - 'django-setuptest>=0.1.1', - 'argparse', # apparently needed by django-setuptest on python 2.6 - ), ) From fac8419525da6d199534e06d86f9d38cabc16937 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 30 Apr 2026 14:06:50 +0300 Subject: [PATCH 08/51] BEN-2954: fix tests --- UPSTREAM_MERGE_FIXES.md | 107 +++++++++++++++++++ filer/admin/fileadmin.py | 2 +- filer/admin/folderadmin.py | 97 ++++++++++++----- filer/admin/views.py | 2 +- filer/models/abstract.py | 5 +- filer/server/backends/default.py | 8 +- filer/server/backends/nginx.py | 9 +- filer/server/backends/xsendfile.py | 7 +- filer/templates/admin/filer/submit_line.html | 2 +- filer/tests/admin.py | 6 +- 10 files changed, 202 insertions(+), 43 deletions(-) create mode 100644 UPSTREAM_MERGE_FIXES.md diff --git a/UPSTREAM_MERGE_FIXES.md b/UPSTREAM_MERGE_FIXES.md new file mode 100644 index 000000000..cae20ca01 --- /dev/null +++ b/UPSTREAM_MERGE_FIXES.md @@ -0,0 +1,107 @@ +# Upstream Merge Fix Progress + +**Before this session:** 67 failed, 86 passed, 68 skipped +**After this session:** 59 failed, 94 passed, 68 skipped (8 tests fixed) + +## Fixes Applied + +### 1. `setup.py` — Build-time import error (Fix for GHA) +- **Problem:** `__import__('filer').__version__` fails because Django isn't installed in the build environment +- **Fix:** Replaced with regex-based `get_version()` that reads `filer/__init__.py` without importing +- **Also:** Removed deprecated `setuptools.command.test` references + +### 2. `filer/__init__.py` — PEP 440 version +- **Problem:** `3.5.0.pbs.1` is invalid per PEP 440 +- **Fix:** Changed to `3.5.0+pbs.1` (local version identifier) + +### 3. `filer/models/abstract.py` — VILImage import +- **Problem:** `from easy_thumbnails.VIL import Image` fails without `reportlab` +- **Fix:** Wrapped in try/except, set `VILImage = None` as fallback + +### 4. `filer/admin/fileadmin.py` — `display_canonical` FieldError +- **Problem:** `get_readonly_fields` returned only model field names for restricted/core files, but fieldsets contain `display_canonical` (an admin method) +- **Fix:** Appended `'display_canonical'` to the readonly fields list in that code path + +### 5. `filer/templates/admin/filer/submit_line.html` — Delete URL with empty pk +- **Problem:** `{% url opts|admin_urlname:'delete' obj.pk %}` failed when `obj.pk` was empty +- **Fix:** Changed to `original.pk` and added `and original.pk` guard + +### 6. `filer/admin/folderadmin.py` — Multiple fixes +- **`destination_folders` AJAX view:** Added missing URL and view for the fancytree folder picker +- **`move_file_to_clipboard` signature:** Added missing `request` argument at both call sites +- **`KeyError: 'name'`:** Added guard `if 'name' not in cleaned_data: return cleaned_data` +- **`log_deletion` deprecation:** Removed dead `else` branches for Django < 5.1; fixed bug where `files_queryset` was logged instead of `folders_queryset` + +### 7. `filer/server/backends/` — Server backend fixes +- **`default.py`, `nginx.py`, `xsendfile.py`:** Changed `filer_file.mime_type` to fallback using `mimetypes.guess_type()` since `filer_file` is a `FieldFile`, not the `File` model +- **All backends:** Changed `file_obj=filer_file.file` to `file_obj=filer_file` in `default_headers()` call — `filer_file` is already the `FieldFile` + +### 8. `filer/admin/views.py` — NewFolderForm missing `site` field +- **Problem:** Form only had `fields = ('name',)`, ignoring `site` from POST data +- **Fix:** Added `'site'` to form fields + +### 9. `filer/tests/admin.py` — Test fixes +- **Clipboard:** Replaced `self.superuser.filer_clipboard` with `Clipboard.objects.get(user=self.superuser)` +- **Return values:** Removed `return folders, files` from test methods (Python 3.12 deprecation) + +--- + +## Remaining Failures (59 tests) + +### Category 1: Clipboard/Upload (5 tests) +- `test_file_upload_no_duplicate_files` +- `test_filer_ajax_upload_long_filename` +- `test_filer_upload_image_no_extension` +- `test_paste_from_clipboard_no_duplicate_files` +- `test_move_to_clipboard_action` + +**Root cause:** Upstream rewrote the upload flow. The `ajax_upload` view no longer truncates filenames, no longer auto-creates clipboards, and the clipboard model changed from `ForeignKey` to `OneToOneField`. + +### Category 2: Folder Type Permissions (22 tests) +All `TestFolderTypePermissionForSuperUser` tests fail. These test PBS-specific folder type permissions (CORE_FOLDER, SITE_FOLDER), move/copy restrictions, clipboard operations. + +**Root cause:** Upstream's `move_files_and_folders` and `copy_files_and_folders` lost PBS site-validation checks. The PBS permission model hooks (site mismatch, no-site, root folder prevention) were not preserved in the merge. + +### Category 3: Folder Operations (6 tests) +- `TestFolderTypeFunctionality` (2) +- `TestMPTTCorruptionsOnFolderOperations` (3) +- `test_filer_make_root_folder_post` + +**Root cause:** `make_folder` view changes, MPTT tree corruption, folder form validation. + +### Category 4: File Validation (3 tests) +- `test_name_extension_change` +- `test_name_with_slash` +- `test_name_without_extension` + +**Root cause:** Upstream added `validate_upload` with image size validation that PBS tests don't expect. + +### Category 5: Image Change Form (2 tests) +- `test_image_change_data_only` +- `test_image_change_name_and_data` + +**Root cause:** Upstream's `ImageAdmin` added new form validation and image processing. + +### Category 6: Model Tests (8 tests) +- `test_cdn_urls`, `test_cdn_urls_no_timezone_support` — CDN URL format changed +- `test_credit_text_length_max_size` — Field length validation +- `test_slash_not_allowed_in_name` — `clean()` validation order +- `test_bulk_deleting_folder_deletes_all_files_from_filesystem` — File cleanup +- `ArchiveTest` (4) — Archive model attribute errors + +### Category 7: Other (3 tests) +- `test_cascade_change_on_parent_restriction` — Restriction propagation +- `TestSharedFolderFunctionality` (3) — Shared folder M2M +- `test_restore_item_view` — Trash admin +- `test_thumbnails_removed_when_source_is_soft_deleted` — Thumbnail cleanup + +--- + +## Recommended Next Steps + +1. **Fix move/copy PBS validation hooks** in `folderadmin.py` `move_files_and_folders()` and `copy_files_and_folders()` — re-add site checks +2. **Restore filename truncation** in `ajax_upload` or update tests to match upstream behavior +3. **Fix Archive model** — ensure `archivemodels.py` is compatible with new `filemodels.py` +4. **Fix Image change form** — align `ImageAdmin` fieldsets with PBS model fields +5. **Fix CDN URL tests** — update to match current `canonical_url` property + diff --git a/filer/admin/fileadmin.py b/filer/admin/fileadmin.py index 0747cd61c..498a99411 100644 --- a/filer/admin/fileadmin.py +++ b/filer/admin/fileadmin.py @@ -81,7 +81,7 @@ class FileAdmin(PrimitivePermissionAwareModelAdmin): def get_readonly_fields(self, request, obj=None): if obj and (obj.is_readonly_for_user(request.user) or obj.is_restricted_for_user(request.user)): - return [field.name for field in obj.__class__._meta.fields] + return [field.name for field in obj.__class__._meta.fields] + ['display_canonical'] readonly = list(self.readonly_fields) self._make_restricted_field_readonly(request.user, obj) if not request.user.is_superuser: diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 9398ac0a0..b9879a440 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -16,7 +16,7 @@ from django.db import models, router from django.db.models import Case, F, OuterRef, Subquery, When from django.db.models.functions import Coalesce, Lower -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect, JsonResponse from django.shortcuts import get_object_or_404 from django.template.response import TemplateResponse from django.urls import path, reverse @@ -95,6 +95,8 @@ def get_form(self, request, obj=None, **kwargs): def folder_form_clean(form_obj): cleaned_data = form_obj.cleaned_data + if 'name' not in cleaned_data: + return cleaned_data folders_with_same_name = self.get_queryset(request).filter( parent=form_obj.instance.parent, name=cleaned_data['name']) @@ -246,6 +248,10 @@ def get_urls(self): self.admin_site.admin_view(self.directory_listing), {'viewtype': 'unfiled_images'}, name='filer-directory_listing-unfiled_images'), + + path('destination_folders/', + self.admin_site.admin_view(self.destination_folders), + name='filer-destination_folders'), ] + super().get_urls() # custom views @@ -404,7 +410,7 @@ def directory_listing(self, request, folder_id=None, viewtype=None): if "move-to-clipboard-%d" % (f.id,) in request.POST: clipboard = tools.get_user_clipboard(request.user) if f.has_edit_permission(request): - tools.move_file_to_clipboard([f], clipboard) + tools.move_file_to_clipboard(request, [f], clipboard) return HttpResponseRedirect(request.get_full_path()) else: raise PermissionDenied @@ -665,7 +671,7 @@ def move_to_clipboard(self, request, files_queryset, folders_queryset): files_count = [0] def move_files(files): - files_count[0] += tools.move_file_to_clipboard(files, clipboard) + files_count[0] += tools.move_file_to_clipboard(request, files, clipboard) def move_folders(folders): for f in folders: @@ -782,15 +788,10 @@ def delete_files_or_folders(self, request, files_queryset, folders_queryset): n = files_queryset.count() + folders_queryset.count() if n: # delete all explicitly selected files - if DJANGO_VERSION >= (5, 1): - self.log_deletions(request, files_queryset) - # Still need to delete files individually (not only the database entries) - for f in files_queryset: - f.delete() - else: - for f in files_queryset: - self.log_deletion(request, f, force_str(f)) - f.delete() + self.log_deletions(request, files_queryset) + # Still need to delete files individually (not only the database entries) + for f in files_queryset: + f.delete() # delete all files in all selected folders and their children # This would happen automatically by ways of the delete # cascade, but then the individual .delete() methods won't be @@ -799,24 +800,14 @@ def delete_files_or_folders(self, request, files_queryset, folders_queryset): for folder in folders_queryset: folder_ids.add(folder.id) folder_ids.update(folder.get_descendants_ids()) - if DJANGO_VERSION >= (5, 1): - qs = File.objects.filter(folder__in=folder_ids) - self.log_deletions(request, qs) - # Still need to delete files individually (not only the database entries) - for f in qs: - f.delete() - else: - for f in File.objects.filter(folder__in=folder_ids): - self.log_deletion(request, f, force_str(f)) - f.delete() + qs = File.objects.filter(folder__in=folder_ids) + self.log_deletions(request, qs) + # Still need to delete files individually (not only the database entries) + for f in qs: + f.delete() # delete all folders - if DJANGO_VERSION >= (5, 1): - self.log_deletions(request, files_queryset) - folders_queryset.delete() - else: - for f in folders_queryset: - self.log_deletion(request, f, force_str(f)) - f.delete() + self.log_deletions(request, folders_queryset) + folders_queryset.delete() self.message_user(request, _("Successfully deleted %(count)d files and/or folders.") % {"count": n, }) # Return None to display the change list page again. return None @@ -931,6 +922,54 @@ def _list_all_destination_folders(self, request, folders_queryset, current_folde root_folders = self.get_queryset(request).filter(parent__isnull=True).order_by('name') return list(self._list_all_destination_folders_recursive(request, folders_queryset, current_folder, root_folders, allow_self, 0)) + def destination_folders(self, request): + """ + AJAX view returning JSON list of destination folders for the fancytree + widget used in move/copy operations. + """ + import json + selected_folders_raw = request.GET.get('selected_folders', '[]') + try: + selected_ids = json.loads(selected_folders_raw) + except (json.JSONDecodeError, TypeError): + selected_ids = [] + selected_qs = Folder.objects.filter(pk__in=selected_ids) + + current_folder_id = request.GET.get('current_folder') + current_folder = None + if current_folder_id and current_folder_id != 'null': + try: + current_folder = Folder.objects.get(pk=int(current_folder_id)) + except (Folder.DoesNotExist, ValueError): + pass + + parent_raw = request.GET.get('parent') + if parent_raw and parent_raw != 'null': + try: + parent_id = int(parent_raw) + folders = Folder.objects.filter(parent_id=parent_id).order_by('name') + except (ValueError, TypeError): + folders = Folder.objects.filter(parent__isnull=True).order_by('name') + else: + folders = Folder.objects.filter(parent__isnull=True).order_by('name') + + result = [] + for fo in folders: + if fo in selected_qs: + continue + if not fo.has_read_permission(request): + continue + is_selectable = (fo != current_folder) and fo.has_add_children_permission(request) + has_children = fo.children.exists() + result.append({ + 'key': fo.pk, + 'title': fo.name, + 'folder': True, + 'lazy': has_children, + 'unselectable': not is_selectable, + }) + return JsonResponse(result, safe=False) + def _move_files_and_folders_impl(self, files_queryset, folders_queryset, destination): files_queryset.update(folder=destination) folders_queryset.update(parent=destination) diff --git a/filer/admin/views.py b/filer/admin/views.py index 542cff139..de512fe66 100644 --- a/filer/admin/views.py +++ b/filer/admin/views.py @@ -16,7 +16,7 @@ class NewFolderForm(forms.ModelForm): class Meta: model = Folder - fields = ('name',) + fields = ('name', 'site') widgets = { 'name': widgets.AdminTextInputWidget, } diff --git a/filer/models/abstract.py b/filer/models/abstract.py index e4345896f..38270d565 100644 --- a/filer/models/abstract.py +++ b/filer/models/abstract.py @@ -9,7 +9,10 @@ from django.utils.translation import gettext_lazy as _ import easy_thumbnails.utils -from easy_thumbnails.VIL import Image as VILImage +try: + from easy_thumbnails.VIL import Image as VILImage +except (ImportError, ModuleNotFoundError): + VILImage = None from PIL.Image import MAX_IMAGE_PIXELS from .. import settings as filer_settings diff --git a/filer/server/backends/default.py b/filer/server/backends/default.py index 2aed251d4..736061a75 100644 --- a/filer/server/backends/default.py +++ b/filer/server/backends/default.py @@ -1,3 +1,4 @@ +import mimetypes import os import stat @@ -23,11 +24,14 @@ def serve(self, request, filer_file, **kwargs): raise Http404('"%s" does not exist' % fullpath) # Respect the If-Modified-Since header. statobj = os.stat(fullpath) - response_params = {'content_type': filer_file.mime_type} + mime_type = getattr(filer_file, 'mime_type', None) + if mime_type is None: + mime_type = mimetypes.guess_type(fullpath)[0] or 'application/octet-stream' + response_params = {'content_type': mime_type} if not was_modified_since(request.META.get('HTTP_IF_MODIFIED_SINCE'), statobj[stat.ST_MTIME]): return HttpResponseNotModified(**response_params) response = HttpResponse(open(fullpath, 'rb').read(), **response_params) response["Last-Modified"] = http_date(statobj[stat.ST_MTIME]) - self.default_headers(request=request, response=response, file_obj=filer_file.file, **kwargs) + self.default_headers(request=request, response=response, file_obj=filer_file, **kwargs) return response diff --git a/filer/server/backends/nginx.py b/filer/server/backends/nginx.py index 03a7ff17f..73e222b20 100644 --- a/filer/server/backends/nginx.py +++ b/filer/server/backends/nginx.py @@ -1,3 +1,5 @@ +import mimetypes + from django.http import HttpResponse from .base import ServerBase @@ -20,8 +22,11 @@ def get_nginx_location(self, path): def serve(self, request, filer_file, **kwargs): response = HttpResponse() - response['Content-Type'] = filer_file.mime_type + mime_type = getattr(filer_file, 'mime_type', None) + if mime_type is None: + mime_type = mimetypes.guess_type(filer_file.path)[0] or 'application/octet-stream' + response['Content-Type'] = mime_type nginx_path = self.get_nginx_location(filer_file.path) response['X-Accel-Redirect'] = nginx_path - self.default_headers(request=request, response=response, file_obj=filer_file.file, **kwargs) + self.default_headers(request=request, response=response, file_obj=filer_file, **kwargs) return response diff --git a/filer/server/backends/xsendfile.py b/filer/server/backends/xsendfile.py index 476a87f7b..27d73654f 100644 --- a/filer/server/backends/xsendfile.py +++ b/filer/server/backends/xsendfile.py @@ -1,3 +1,5 @@ +import mimetypes + from django.http import HttpResponse from .base import ServerBase @@ -11,7 +13,8 @@ def serve(self, request, filer_file, **kwargs): # This is needed for lighttpd, hopefully this will # not be needed after this is fixed: # http://redmine.lighttpd.net/issues/2076 - response['Content-Type'] = filer_file.mime_type + response['Content-Type'] = getattr(filer_file, 'mime_type', None) or \ + mimetypes.guess_type(filer_file.path)[0] or 'application/octet-stream' - self.default_headers(request=request, response=response, file_obj=filer_file.file, **kwargs) + self.default_headers(request=request, response=response, file_obj=filer_file, **kwargs) return response diff --git a/filer/templates/admin/filer/submit_line.html b/filer/templates/admin/filer/submit_line.html index db27b0d58..3c0fa1c73 100644 --- a/filer/templates/admin/filer/submit_line.html +++ b/filer/templates/admin/filer/submit_line.html @@ -1,6 +1,6 @@ {% load i18n admin_urls %}
- {% if show_delete_link %}{% trans "Delete" %}{% endif %} + {% if show_delete_link and original.pk %}{% trans "Delete" %}{% endif %} {% if show_save_as_new %}{%endif%} {% if show_save_and_add_another %}{% endif %} {% if show_save_and_continue %}{% endif %} diff --git a/filer/tests/admin.py b/filer/tests/admin.py index 398bb7e29..0f9f67625 100644 --- a/filer/tests/admin.py +++ b/filer/tests/admin.py @@ -278,7 +278,7 @@ def upload(): def paste(uploaded_image): # current user should have one clipboard created - clipboard = self.superuser.filer_clipboard + clipboard = Clipboard.objects.get(user=self.superuser) response = self.client.post( reverse('admin:filer-paste_clipboard_to_folder'), {'folder_id': first_folder.pk, @@ -291,7 +291,7 @@ def paste(uploaded_image): second_upload = upload() # second paste failed due to name conflict second_pasted_image = paste(second_upload) - clipboard = self.superuser.filer_clipboard + clipboard = Clipboard.objects.get(user=self.superuser) # file should remain in clipboard and should not be located in # destination folder self.assertEqual(clipboard.files.count(), 1) @@ -863,7 +863,6 @@ def test_move_site_folder_to_core_destination_folder(self): self.client, folders['bar'], f1, [folders['baz1']]) assert Folder.objects.filter(parent=f1).count() == 0 f1.delete(to_trash=False) - return folders, files def _get_clipboard_files(self): clipboard, _ = Clipboard.objects.get_or_create( @@ -1099,7 +1098,6 @@ def test_copy_site_folder_to_core_destination_folder(self): messages = [str(m) for m in response.context['messages']] assert any("The selected destination was not valid" in m for m in messages),\ "Warning message not found in wrong copy response" - return folders, files def test_file_from_core_folder_is_unchangeable(self): f1 = Folder.objects.create(name='foo', folder_type=Folder.CORE_FOLDER) From d140d5bf562c87eb50ab072c40f2b2c3fc0ec2b4 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 30 Apr 2026 15:27:59 +0300 Subject: [PATCH 09/51] BEN-2954: more test fixes --- UPSTREAM_MERGE_FIXES.md | 197 +++++++++++++-- conftest.py | 2 + filer/admin/clipboardadmin.py | 28 ++- filer/admin/common_admin.py | 12 +- filer/admin/folderadmin.py | 235 +++++++++++++++--- filer/admin/views.py | 48 ++-- ...nailoption_alter_image_options_and_more.py | 4 - filer/models/abstract.py | 64 ++--- filer/models/archivemodels.py | 4 +- filer/models/filemodels.py | 6 +- filer/models/imagemodels.py | 24 ++ filer/templatetags/filer_admin_tags.py | 35 +++ filer/templatetags/filermedia.py | 17 ++ filer/test_settings.py | 6 + filer/utils/files.py | 8 +- pytest.ini | 1 + 16 files changed, 574 insertions(+), 117 deletions(-) create mode 100644 filer/templatetags/filermedia.py diff --git a/UPSTREAM_MERGE_FIXES.md b/UPSTREAM_MERGE_FIXES.md index cae20ca01..5beeb49f3 100644 --- a/UPSTREAM_MERGE_FIXES.md +++ b/UPSTREAM_MERGE_FIXES.md @@ -1,52 +1,178 @@ # Upstream Merge Fix Progress -**Before this session:** 67 failed, 86 passed, 68 skipped -**After this session:** 59 failed, 94 passed, 68 skipped (8 tests fixed) +## Overview + +**Upstream source:** `https://github.com/django-cms/django-filer` (master branch, v3.4.4) +**Fork divergence:** Forked at tag `0.9` (commit `a9364960`), ~790 PBS vs ~1,977 upstream commits, 603 files changed. +**Target:** Django 5.1 / Python 3.12+ + +### Test Results Timeline + +| Stage | Failed | Passed | Skipped | +|-------|--------|--------|---------| +| Pre-merge (PBS baseline) | 0 | 153 | 68 | +| After upstream merge | 73 | ~80 | 68 | +| After Session 1 fixes | 67 | 86 | 68 | +| After Session 2 fixes | 59 | 94 | 68 | + +--- ## Fixes Applied -### 1. `setup.py` — Build-time import error (Fix for GHA) +### 1. `setup.py` — Build-time import error (GHA blocker) + - **Problem:** `__import__('filer').__version__` fails because Django isn't installed in the build environment - **Fix:** Replaced with regex-based `get_version()` that reads `filer/__init__.py` without importing -- **Also:** Removed deprecated `setuptools.command.test` references +- **Also:** Removed deprecated `setuptools.command.test` references and `test_suite`/`tests_require` +- **Code:** + ```python + def get_version(): + """Read version from filer/__init__.py without importing the package.""" + init_py = os.path.join(os.path.dirname(__file__), 'filer', '__init__.py') + with open(init_py) as f: + match = re.search(r"^__version__\s*=\s*['\"]([^'\"]+)['\"]", f.read(), re.M) + if not match: + raise RuntimeError("Cannot find __version__ in filer/__init__.py") + return match.group(1) + ``` ### 2. `filer/__init__.py` — PEP 440 version + - **Problem:** `3.5.0.pbs.1` is invalid per PEP 440 - **Fix:** Changed to `3.5.0+pbs.1` (local version identifier) ### 3. `filer/models/abstract.py` — VILImage import + - **Problem:** `from easy_thumbnails.VIL import Image` fails without `reportlab` - **Fix:** Wrapped in try/except, set `VILImage = None` as fallback +- **Code:** + ```python + try: + from easy_thumbnails.VIL import Image as VILImage + except (ImportError, ModuleNotFoundError): + VILImage = None + ``` ### 4. `filer/admin/fileadmin.py` — `display_canonical` FieldError -- **Problem:** `get_readonly_fields` returned only model field names for restricted/core files, but fieldsets contain `display_canonical` (an admin method) + +- **Problem:** `get_readonly_fields` returned only model field names for restricted/core files, but fieldsets contain `display_canonical` (an admin method, not a model field) - **Fix:** Appended `'display_canonical'` to the readonly fields list in that code path +- **Error:** `FieldError: Unknown field(s) (display_canonical) specified for File` ### 5. `filer/templates/admin/filer/submit_line.html` — Delete URL with empty pk + - **Problem:** `{% url opts|admin_urlname:'delete' obj.pk %}` failed when `obj.pk` was empty - **Fix:** Changed to `original.pk` and added `and original.pk` guard ### 6. `filer/admin/folderadmin.py` — Multiple fixes -- **`destination_folders` AJAX view:** Added missing URL and view for the fancytree folder picker -- **`move_file_to_clipboard` signature:** Added missing `request` argument at both call sites -- **`KeyError: 'name'`:** Added guard `if 'name' not in cleaned_data: return cleaned_data` -- **`log_deletion` deprecation:** Removed dead `else` branches for Django < 5.1; fixed bug where `files_queryset` was logged instead of `folders_queryset` -### 7. `filer/server/backends/` — Server backend fixes -- **`default.py`, `nginx.py`, `xsendfile.py`:** Changed `filer_file.mime_type` to fallback using `mimetypes.guess_type()` since `filer_file` is a `FieldFile`, not the `File` model -- **All backends:** Changed `file_obj=filer_file.file` to `file_obj=filer_file` in `default_headers()` call — `filer_file` is already the `FieldFile` +#### 6a. `destination_folders` AJAX view +- **Problem:** `NoReverseMatch: 'filer-destination_folders' not found` — the fancytree folder picker widget needed this URL +- **Fix:** Added AJAX view and URL pattern to `FolderAdmin.get_urls()` + +#### 6b. `move_file_to_clipboard` signature mismatch +- **Problem:** Both call sites passed wrong number of arguments +- **Fix:** Added missing `request` argument at both call sites + +#### 6c. `KeyError: 'name'` in folder form clean +- **Problem:** Folder form clean method assumed `'name'` was always in `cleaned_data` +- **Fix:** Added guard `if 'name' not in cleaned_data: return cleaned_data` + +#### 6d. `exclude` tuple incomplete +- **Problem:** Upstream had `exclude = ('parent',)` but PBS needs `('parent', 'owner', 'folder_type')` +- **Fix:** Restored full PBS exclude tuple + +#### 6e. `get_form()` — PBS field visibility logic +- **Problem:** Upstream `get_form()` didn't handle PBS-specific dynamic field visibility +- **Fix:** Restored full PBS logic: + - Hide `site`/`shared` for child folders and core folders + - Only show `shared` to superusers + - Pop `restricted` for add view + - Set `owner`/`parent` in clean method + +#### 6f. `_move_files_and_folders_impl` — MPTT corruption +- **Problem:** Upstream used bulk `update()` which bypasses MPTT tree updates and model signals +- **Fix:** Changed to individual `save()` calls to trigger MPTT tree recalculation + +#### 6g. `move_files_and_folders()` — PBS validation +- **Problem:** PBS site validation checks were missing from upstream's move implementation +- **Fix:** Restored: + - Root folder move prevention + - Site consistency checks (all moved items must belong to same site as destination) +- **Code:** + ```python + # PBS: prevent moving root folders + if folders_queryset.filter(parent=None).exists(): + messages.error(request, "To prevent potential problems, users " + "are not allowed to move root folders.") + return + # PBS: site consistency checks + sites_from_folders = \ + set(folders_queryset.values_list('site_id', flat=True)) | \ + set(files_queryset.exclude(folder__isnull=True).\ + values_list('folder__site_id', flat=True)) + if sites_from_folders and None in sites_from_folders: + messages.error(request, "Some of the selected files/folders " + "do not belong to any site.") + return + ``` + +#### 6h. `log_deletion` deprecation +- **Problem:** Dead `else` branches for Django < 5.1; bug where `files_queryset` was logged instead of `folders_queryset` +- **Fix:** Removed dead branches, fixed queryset reference + +### 7. `filer/server/backends/` — Server backend fixes (3 files) + +- **Files:** `default.py`, `nginx.py`, `xsendfile.py` +- **Problem 1:** `filer_file.mime_type` — `filer_file` is a `FieldFile` (not the `File` model), so it has no `mime_type` attribute +- **Fix 1:** Added `mimetypes.guess_type()` fallback +- **Problem 2:** `file_obj=filer_file.file` — `filer_file` is already the `FieldFile`, `.file` is the raw Python file object +- **Fix 2:** Changed to `file_obj=filer_file` +- **Error:** `AttributeError: 'MultiStorageFieldFile' has no attribute 'mime_type'` ### 8. `filer/admin/views.py` — NewFolderForm missing `site` field -- **Problem:** Form only had `fields = ('name',)`, ignoring `site` from POST data -- **Fix:** Added `'site'` to form fields -### 9. `filer/tests/admin.py` — Test fixes -- **Clipboard:** Replaced `self.superuser.filer_clipboard` with `Clipboard.objects.get(user=self.superuser)` -- **Return values:** Removed `return folders, files` from test methods (Python 3.12 deprecation) +- **Problem:** Form only had `fields = ('name',)`, ignoring PBS `site` field from POST data +- **Fix:** Added `'site'` to form fields: `fields = ('name', 'site')` + +### 9. `filer/templatetags/filermedia.py` — Deleted by upstream merge + +- **Problem:** Upstream deleted `filermedia.py` but 8+ templates still reference `{% load filermedia %}` +- **Fix:** Restored file with `filer_staticmedia_prefix` simple tag +- **Error:** `TemplateSyntaxError: 'filermedia' is not a registered tag library` + +### 10. `filer/admin/clipboardadmin.py` — Clipboard not created on upload + +- **Problem:** Upstream commented out `Clipboard.objects.get_or_create(user=request.user)` in `ajax_upload` +- **Fix:** Restored the get_or_create call so clipboard is created during upload +- **Error:** `Clipboard.DoesNotExist` + +### 11. `filer/tests/admin.py` — Test compatibility fixes + +- **Clipboard access:** Replaced `self.superuser.filer_clipboard` with `Clipboard.objects.get(user=self.superuser)` +- **Return values:** Removed `return folders, files` from test methods --- -## Remaining Failures (59 tests) +## PBS-Specific Features Preserved + +These features exist in the PBS fork but not in upstream django-filer: + +| Feature | Description | +|---------|-------------| +| **Trash / Soft-delete** | Files/folders are soft-deleted to trash before permanent deletion | +| **Site-based permissions** | Folders belong to Django sites; users have site-scoped access | +| **Folder types** | `CORE_FOLDER`, `SITE_FOLDER` — restricts operations on system folders | +| **Restricted flag** | Files/folders can be marked restricted; cascades to children | +| **Shared folders** | M2M relationship allowing folders shared across sites | +| **CDN invalidation** | URL hashing and CDN cache invalidation on file changes | +| **S3/Botocore storage** | Multi-storage backend with S3 support | +| **Clipboard model** | Per-user clipboard for file operations | +| **Folder-affects-URL** | Hash-based filenames tied to folder structure | + +--- + +## Remaining Failures (~59 tests) ### Category 1: Clipboard/Upload (5 tests) - `test_file_upload_no_duplicate_files` @@ -60,7 +186,7 @@ ### Category 2: Folder Type Permissions (22 tests) All `TestFolderTypePermissionForSuperUser` tests fail. These test PBS-specific folder type permissions (CORE_FOLDER, SITE_FOLDER), move/copy restrictions, clipboard operations. -**Root cause:** Upstream's `move_files_and_folders` and `copy_files_and_folders` lost PBS site-validation checks. The PBS permission model hooks (site mismatch, no-site, root folder prevention) were not preserved in the merge. +**Root cause:** Upstream's `copy_files_and_folders` lost PBS site-validation checks. The PBS permission model hooks (site mismatch, no-site, root folder prevention) were not preserved in the merge. Need to restore `_clean_destination` and `_are_candidate_names_valid`. ### Category 3: Folder Operations (6 tests) - `TestFolderTypeFunctionality` (2) @@ -89,7 +215,7 @@ All `TestFolderTypePermissionForSuperUser` tests fail. These test PBS-specific f - `test_bulk_deleting_folder_deletes_all_files_from_filesystem` — File cleanup - `ArchiveTest` (4) — Archive model attribute errors -### Category 7: Other (3 tests) +### Category 7: Other (13 tests) - `test_cascade_change_on_parent_restriction` — Restriction propagation - `TestSharedFolderFunctionality` (3) — Shared folder M2M - `test_restore_item_view` — Trash admin @@ -99,9 +225,30 @@ All `TestFolderTypePermissionForSuperUser` tests fail. These test PBS-specific f ## Recommended Next Steps -1. **Fix move/copy PBS validation hooks** in `folderadmin.py` `move_files_and_folders()` and `copy_files_and_folders()` — re-add site checks -2. **Restore filename truncation** in `ajax_upload` or update tests to match upstream behavior -3. **Fix Archive model** — ensure `archivemodels.py` is compatible with new `filemodels.py` -4. **Fix Image change form** — align `ImageAdmin` fieldsets with PBS model fields -5. **Fix CDN URL tests** — update to match current `canonical_url` property +1. **Restore PBS `copy_files_and_folders` validation** — re-add `_clean_destination()` with site checks instead of upstream pattern +2. **Restore PBS `destination_folders` view** — full site-aware filtering logic +3. **Restore filename truncation** in `ajax_upload` or update tests to match upstream behavior +4. **Fix Archive model** — ensure `archivemodels.py` is compatible with new `filemodels.py` +5. **Fix Image change form** — align `ImageAdmin` fieldsets with PBS model fields +6. **Fix CDN URL tests** — update to match current `canonical_url` property +7. **Fix file validation** — reconcile PBS `clean()` with upstream `validate_upload()` + +--- +## Files Modified (Summary) + +| File | Type of Change | +|------|---------------| +| `setup.py` | Build fix (regex version reader) | +| `filer/__init__.py` | PEP 440 version fix | +| `filer/models/abstract.py` | Import guard for VILImage | +| `filer/admin/fileadmin.py` | Readonly fields fix | +| `filer/admin/folderadmin.py` | 8 separate fixes (AJAX view, move/copy validation, MPTT, field visibility) | +| `filer/admin/views.py` | NewFolderForm site field | +| `filer/admin/clipboardadmin.py` | Clipboard creation restored | +| `filer/server/backends/default.py` | mime_type + file_obj fixes | +| `filer/server/backends/nginx.py` | mime_type + file_obj fixes | +| `filer/server/backends/xsendfile.py` | mime_type + file_obj fixes | +| `filer/templatetags/filermedia.py` | Restored deleted file | +| `filer/templates/admin/filer/submit_line.html` | Delete URL pk guard | +| `filer/tests/admin.py` | Test compatibility fixes | diff --git a/conftest.py b/conftest.py index 2091456e0..a91cddad2 100644 --- a/conftest.py +++ b/conftest.py @@ -3,5 +3,7 @@ collect_ignore = [ os.path.join(os.path.dirname(__file__), "filer", "tests", "utils"), os.path.join(os.path.dirname(__file__), "filer", "tests", "__init__.py"), + os.path.join(os.path.dirname(__file__), "filer", "contrib"), + os.path.join(os.path.dirname(__file__), "filer", "management"), ] diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index 71d95daa7..ba3d0037b 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -9,7 +9,7 @@ from .. import settings as filer_settings from ..models import Clipboard, ClipboardItem, Folder from ..settings import FILER_THUMBNAIL_ICON_SIZE -from ..utils.files import handle_request_files_upload, handle_upload +from ..utils.files import handle_request_files_upload, handle_upload, truncate_filename from ..utils.loader import load_model from ..validation import validate_upload from . import views @@ -36,6 +36,9 @@ class ClipboardAdmin(admin.ModelAdmin): raw_id_fields = ('user',) verbose_name = "DEBUG Clipboard" verbose_name_plural = "DEBUG Clipboards" + messages = { + 'already-exists': "File '{}' already exists in the clipboard.", + } def get_urls(self): return [ @@ -98,9 +101,19 @@ def ajax_upload(request, folder_id=None): else: # else process the request as usual upload, filename, is_raw, mime_type = handle_upload(request) - # TODO: Deprecated/refactor - # Get clipboad - # clipboard = Clipboard.objects.get_or_create(user=request.user)[0] + + # Truncate long filenames + filename = truncate_filename(upload, maxlen=100) + upload.name = filename + + # Get clipboard + clipboard = Clipboard.objects.get_or_create(user=request.user)[0] + + # Check for duplicate files in clipboard + existing_in_clipboard = clipboard.files.filter(original_filename=filename) + if existing_in_clipboard.exists(): + error_msg = ClipboardAdmin.messages['already-exists'].format(filename) + return JsonResponse({'error': error_msg}) # find the file type for filer_class in filer_settings.FILER_FILE_MODELS: @@ -127,10 +140,9 @@ def ajax_upload(request, folder_id=None): return JsonResponse({'error': str(error)}) file_obj.folder = folder file_obj.save() - # TODO: Deprecated/refactor - # clipboard_item = ClipboardItem( - # clipboard=clipboard, file=file_obj) - # clipboard_item.save() + clipboard_item = ClipboardItem( + clipboard=clipboard, file=file_obj) + clipboard_item.save() try: thumbnail = None diff --git a/filer/admin/common_admin.py b/filer/admin/common_admin.py index 4e34716cc..f9cadd9c6 100644 --- a/filer/admin/common_admin.py +++ b/filer/admin/common_admin.py @@ -147,12 +147,20 @@ def response_change(self, request, obj): class FolderPermissionModelAdmin(CommonModelAdmin): def has_add_permission(self, request): - # allow only make folder view + # allow only make folder views current_view = resolve(request.path_info).url_name - if not current_view == 'filer-directory_listing-make_root_folder': + allowed_views = ( + 'filer-directory_listing-make_root_folder', + 'filer-directory_listing-make_folder', + ) + if current_view not in allowed_views: return False folder_id = get_param_from_request(request, 'parent_id') + # Also check URL kwargs for folder_id + if not folder_id: + resolved = resolve(request.path_info) + folder_id = resolved.kwargs.get('folder_id') if not folder_id: # only site admins and superusers can add root folders if has_admin_role(request.user): diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index b9879a440..62904d062 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -42,6 +42,7 @@ from .forms import CopyFilesAndFoldersForm, RenameFilesForm, ResizeImagesForm from .patched.admin_utils import get_deleted_objects from .permissions import PrimitivePermissionAwareModelAdmin +from .common_admin import FolderPermissionModelAdmin from .tools import ( AdminContext, admin_url_params_encoded, check_files_edit_permissions, check_files_read_permissions, check_folder_edit_permissions, check_folder_read_permissions, get_directory_listing_type, popup_status, @@ -60,16 +61,17 @@ class Meta: fields = ('name',) -class FolderAdmin(PrimitivePermissionAwareModelAdmin): +class FolderAdmin(FolderPermissionModelAdmin): list_display = ('name',) - exclude = ('parent',) + exclude = ('parent', 'owner', 'folder_type') list_per_page = 100 list_filter = ('owner',) search_fields = ['name'] autocomplete_fields = ['owner'] save_as = True # see ImageAdmin actions = ['delete_files_or_folders', 'move_files_and_folders', - 'copy_files_and_folders', 'resize_images', 'rename_files'] + 'copy_files_and_folders', 'resize_images', 'rename_files', + 'extract_files', 'move_to_clipboard'] if DJANGO_VERSION >= (5, 2): directory_listing_template = 'admin/filer/folder/directory_listing.html' @@ -79,38 +81,109 @@ class FolderAdmin(PrimitivePermissionAwareModelAdmin): order_by_file_fields = ['_file_size', 'original_filename', 'name', 'owner', 'uploaded_at', 'modified_at'] + def get_readonly_fields(self, request, obj=None): + self.readonly_fields = [ro_field + for ro_field in self.readonly_fields] + self._make_restricted_field_readonly(request.user, obj) + return super().get_readonly_fields(request, obj) + + def formfield_for_foreignkey(self, db_field, request=None, **kwargs): + from django.contrib.sites.models import Site + formfield = super().formfield_for_foreignkey( + db_field, request, **kwargs) + if request and db_field.remote_field.model is Site: + if request.user.is_superuser: + formfield.queryset = Site.objects.all() + else: + from filer.utils.cms_roles import get_admin_sites_for_user + admin_sites = [site.id + for site in get_admin_sites_for_user(request.user)] + formfield.queryset = Site.objects.filter(id__in=admin_sites) + return formfield + + def formfield_for_manytomany(self, db_field, request, **kwargs): + from django.contrib.sites.models import Site + formfield = super().formfield_for_manytomany( + db_field, request, **kwargs) + if request and db_field.remote_field.model is Site: + if request.user.is_superuser: + formfield.queryset = Site.objects.all() + else: + from filer.utils.cms_roles import get_admin_sites_for_user + admin_sites = [site.id + for site in get_admin_sites_for_user(request.user)] + formfield.queryset = Site.objects.filter(id__in=admin_sites) + return formfield + def get_form(self, request, obj=None, **kwargs): """ Returns a Form class for use in the admin add view. This is used by add_view and change_view. + + Sets the parent folder and owner for the folder that will be edited + in the form. """ parent_id = request.GET.get('parent_id', None) if not parent_id: parent_id = request.POST.get('parent_id', None) if parent_id: return AddFolderPopupForm + + folder_form = super().get_form( + request, obj=obj, **kwargs) + + if 'site' in folder_form.base_fields: + folder_form.base_fields['site'].widget.can_add_related = False + folder_form.base_fields['site'].widget.can_delete_related = False + folder_form.base_fields['site'].widget.can_change_related = False + + if 'shared' in folder_form.base_fields: + folder_form.base_fields['shared'].widget.can_add_related = False + + # only show shared sites field for superusers + if not request.user.is_superuser: + folder_form.base_fields.pop('shared', None) + + # check if site field should be visible in the form + is_core_folder = False + if obj and obj.pk: + # change view + change_parent_id = obj.parent_id + is_core_folder = obj.is_core() else: - folder_form = super().get_form( - request, obj=None, **kwargs) - - def folder_form_clean(form_obj): - cleaned_data = form_obj.cleaned_data - if 'name' not in cleaned_data: - return cleaned_data - folders_with_same_name = self.get_queryset(request).filter( - parent=form_obj.instance.parent, - name=cleaned_data['name']) - if form_obj.instance.pk: - folders_with_same_name = folders_with_same_name.exclude( - pk=form_obj.instance.pk) - if folders_with_same_name.exists(): - raise ValidationError( - 'Folder with this name already exists.') + # add view + change_parent_id = parent_id + folder_form.base_fields.pop('restricted', None) + + # hide site/shared for child folders or core folders + pop_site_fields = change_parent_id or is_core_folder + if pop_site_fields: + folder_form.base_fields.pop('site', None) + folder_form.base_fields.pop('shared', None) + + def folder_form_clean(form_obj): + cleaned_data = form_obj.cleaned_data + if 'name' not in cleaned_data: return cleaned_data - - # attach clean to the default form rather than defining a new form class - folder_form.clean = folder_form_clean - return folder_form + # make sure owner and parent are passed to the model clean method + current_folder = form_obj.instance + if not current_folder.owner: + current_folder.owner = request.user + if parent_id: + current_folder.parent = Folder.objects.get(id=parent_id) + folders_with_same_name = self.get_queryset(request).filter( + parent=form_obj.instance.parent, + name=cleaned_data['name']) + if form_obj.instance.pk: + folders_with_same_name = folders_with_same_name.exclude( + pk=form_obj.instance.pk) + if folders_with_same_name.exists(): + raise ValidationError( + 'Folder with this name already exists.') + return cleaned_data + + folder_form.clean = folder_form_clean + return folder_form def save_form(self, request, form, change): """ @@ -165,6 +238,23 @@ def render_change_form(self, request, context, add=False, change=False, request=request, context=context, add=add, change=change, form_url=form_url, obj=obj) + def add_view(self, request, *args, **kwargs): + raise PermissionDenied + + def make_folder(self, request, folder_id=None, *args, **kwargs): + response = super(FolderAdmin, self).add_view(request, *args, **kwargs) + + if (request.method == 'POST' and popup_status(request) and + not isinstance(response, HttpResponseRedirect)): + if hasattr(response, 'render'): + response = response.render() + content = getattr(response, 'content', b'') + if response.status_code == 200 and b'errorlist' not in content: + return HttpResponse('') + return response + def delete_view(self, request, object_id, extra_context=None): """ Overrides the default to enable redirecting to the directory view after @@ -233,10 +323,10 @@ def get_urls(self): name='filer-directory_listing'), path('/make_folder/', - self.admin_site.admin_view(views.make_folder), + self.admin_site.admin_view(self.make_folder), name='filer-directory_listing-make_folder'), path('make_folder/', - self.admin_site.admin_view(views.make_folder), + self.admin_site.admin_view(self.make_folder), name='filer-directory_listing-make_root_folder'), path('images_with_missing_data/', @@ -805,9 +895,10 @@ def delete_files_or_folders(self, request, files_queryset, folders_queryset): # Still need to delete files individually (not only the database entries) for f in qs: f.delete() - # delete all folders + # delete all folders individually to trigger soft-delete self.log_deletions(request, folders_queryset) - folders_queryset.delete() + for folder in folders_queryset: + folder.delete() self.message_user(request, _("Successfully deleted %(count)d files and/or folders.") % {"count": n, }) # Return None to display the change list page again. return None @@ -971,13 +1062,25 @@ def destination_folders(self, request): return JsonResponse(result, safe=False) def _move_files_and_folders_impl(self, files_queryset, folders_queryset, destination): - files_queryset.update(folder=destination) - folders_queryset.update(parent=destination) + for f in files_queryset: + f.folder = destination + f.save() + for f_id in folders_queryset.values_list('id', flat=True): + f = Folder.objects.get(id=f_id) + f.parent = destination + f.save() def move_files_and_folders(self, request, files_queryset, folders_queryset): opts = self.model._meta app_label = opts.app_label + # PBS: prevent moving root folders + if folders_queryset.filter(parent=None).exists(): + messages.error(request, "To prevent potential problems, users " + "are not allowed to move root folders. You may copy folders " + "and files.") + return + current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) perms_needed = self._check_move_perms(request, files_queryset, folders_queryset) to_move = self._list_all_to_copy_or_move(request, files_queryset, folders_queryset) @@ -993,6 +1096,29 @@ def move_files_and_folders(self, request, files_queryset, folders_queryset): folders_dict = dict(folders) if destination not in folders_dict or not folders_dict[destination][1]: raise PermissionDenied + + # PBS: site consistency checks + sites_from_folders = \ + set(folders_queryset.values_list('site_id', flat=True)) | \ + set(files_queryset.exclude(folder__isnull=True).\ + values_list('folder__site_id', flat=True)) + + if sites_from_folders and None in sites_from_folders: + messages.error(request, "Some of the selected files/folders " + "do not belong to any site. Folders need to be assigned " + "to a site before you can move files/folders from it.") + return + elif len(sites_from_folders) > 1: + messages.error(request, "You cannot move files/folders that " + "belong to several sites. Select files/folders that " + "belong to only one site.") + return + elif (sites_from_folders and destination.site and + sites_from_folders.pop() != destination.site.id): + messages.error(request, "Selected files/folders need to " + "belong to the same site as the destination folder.") + return + # We count only topmost files and folders here n = files_queryset.count() + folders_queryset.count() conflicting_names = [folder.name for folder in self.get_queryset(request).filter(parent=destination, name__in=folders_queryset.values('name'))] @@ -1111,6 +1237,57 @@ def rename_files(self, request, files_queryset, folders_queryset): rename_files.short_description = _("Rename files") + def extract_files(self, request, files_queryset, folders_queryset): + from django.contrib.contenttypes.models import ContentType + from ..models import Archive + success_format = "Successfully extracted archive {}." + + files_queryset = files_queryset.filter( + polymorphic_ctype=ContentType.objects.get_for_model(Archive).id) + # cannot extract in unfiled files folder + if files_queryset.filter(folder__isnull=True).exists(): + raise PermissionDenied + + if not has_multi_file_action_permission(request, files_queryset, + Folder.objects.none()): + raise PermissionDenied + + def is_valid_archive(filer_file): + is_valid = filer_file.is_valid() + if not is_valid: + error_format = "{} is not a valid zip file" + message = error_format.format(filer_file.clean_actual_name) + messages.error(request, _(message)) + return is_valid + + def has_collisions(filer_file): + collisions = filer_file.collisions() + if collisions: + error_format = "Files/Folders from {archive} with names:" + error_format += "{names} already exist." + names = ", ".join(collisions) + archive = filer_file.clean_actual_name + message = error_format.format( + archive=archive, + names=names, + ) + messages.error(request, _(message)) + return len(collisions) > 0 + + for f in files_queryset: + if not is_valid_archive(f) or has_collisions(f): + continue + f.extract() + message = success_format.format(f.actual_name) + self.message_user(request, _(message)) + for err_msg in f.extract_errors: + messages.warning( + request, + _("%s: %s" % (f.actual_name, err_msg)) + ) + + extract_files.short_description = _("Extract selected zip files") + def _generate_new_filename(self, filename, suffix): basename, extension = os.path.splitext(filename) return basename + suffix + extension diff --git a/filer/admin/views.py b/filer/admin/views.py index de512fe66..7493f7c0e 100644 --- a/filer/admin/views.py +++ b/filer/admin/views.py @@ -21,6 +21,22 @@ class Meta: 'name': widgets.AdminTextInputWidget, } + def __init__(self, *args, **kwargs): + self.is_root_folder = kwargs.pop('is_root_folder', True) + super().__init__(*args, **kwargs) + if self.is_root_folder: + self.fields['site'].required = True + else: + # Hide site field for child folders + if 'site' in self.fields: + del self.fields['site'] + + def clean(self): + cleaned_data = super().clean() + if self.is_root_folder and not cleaned_data.get('site'): + raise forms.ValidationError('Site is required') + return cleaned_data + @login_required def make_folder(request, folder_id=None): @@ -36,7 +52,9 @@ def make_folder(request, folder_id=None): else: folder = None - if request.user.is_superuser: + if folder and not folder.has_add_permission(request.user): + raise PermissionDenied + elif request.user.is_superuser: pass elif folder is None: # regular users may not add root folders unless configured otherwise @@ -47,20 +65,28 @@ def make_folder(request, folder_id=None): raise PermissionDenied if request.method == 'POST': - new_folder_form = NewFolderForm(request.POST) + new_folder_form = NewFolderForm(request.POST, is_root_folder=(folder is None)) if new_folder_form.is_valid(): new_folder = new_folder_form.save(commit=False) if (folder or FolderRoot()).contains_folder(new_folder.name): new_folder_form._errors['name'] = new_folder_form.error_class( [_('Folder with this name already exists.')]) else: - context = admin.site.each_context(request) new_folder.parent = folder new_folder.owner = request.user new_folder.save() - return TemplateResponse(request, 'admin/filer/dismiss_popup.html', context) + if popup_status(request): + context = admin.site.each_context(request) + return TemplateResponse(request, 'admin/filer/dismiss_popup.html', context) + else: + from django.urls import reverse + if folder: + url = reverse('admin:filer-directory_listing', kwargs={'folder_id': folder.id}) + else: + url = reverse('admin:filer-directory_listing-root') + return HttpResponseRedirect(url) else: - new_folder_form = NewFolderForm() + new_folder_form = NewFolderForm(is_root_folder=(folder is None)) context = admin.site.each_context(request) context.update({ @@ -74,15 +100,12 @@ def make_folder(request, folder_id=None): @login_required def paste_clipboard_to_folder(request): - if True: - # TODO: cleanly remove Clipboard code if it is no longer needed - return HttpResponseBadRequest('not implemented anymore') if request.method == 'POST': folder = Folder.objects.get(id=request.POST.get('folder_id')) clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) if folder.has_add_children_permission(request): - tools.move_files_from_clipboard_to_folder(clipboard, folder) + tools.move_files_from_clipboard_to_folder(request, clipboard, folder) tools.discard_clipboard(clipboard) else: raise PermissionDenied @@ -99,10 +122,6 @@ def paste_clipboard_to_folder(request): @login_required def discard_clipboard(request): - if True: - # TODO: cleanly remove Clipboard code if it is no longer needed - return HttpResponseBadRequest('not implemented anymore') - if request.method == 'POST': clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) tools.discard_clipboard(clipboard) @@ -116,9 +135,6 @@ def discard_clipboard(request): @login_required def delete_clipboard(request): - if True: - # TODO: cleanly remove Clipboard code if it is no longer needed - return HttpResponseBadRequest('not implemented anymore') if request.method == 'POST': clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) diff --git a/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py b/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py index f6196990c..97260eb30 100644 --- a/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py +++ b/filer/migrations/0008_thumbnailoption_alter_image_options_and_more.py @@ -37,10 +37,6 @@ class Migration(migrations.Migration): name='image', options={'default_manager_name': 'objects', 'verbose_name': 'image', 'verbose_name_plural': 'images'}, ), - migrations.RemoveField( - model_name='image', - name='default_credit', - ), migrations.AddField( model_name='file', name='mime_type', diff --git a/filer/models/abstract.py b/filer/models/abstract.py index 38270d565..499e21624 100644 --- a/filer/models/abstract.py +++ b/filer/models/abstract.py @@ -61,6 +61,7 @@ class BaseImage(File): } file_type = 'Image' _icon = "image" + _filename_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.svg', '.webp'] _height = models.FloatField( null=True, @@ -116,6 +117,8 @@ class Meta: def matches_file_type(cls, iname, ifile, mime_type): # source: https://www.freeformatter.com/mime-types-list.html from ..settings import IMAGE_MIME_TYPES + if not mime_type: + return False maintype, subtype = mime_type.split('/') return maintype == 'image' and subtype in IMAGE_MIME_TYPES @@ -149,35 +152,35 @@ def clean(self): # the image gets attached to a folder and saved. We also # send the error msg in the JSON and also post the message # so that they know what is wrong with the image they uploaded - if not self.file or not FILER_MAX_IMAGE_PIXELS: - return - - if self._width is None or self._height is None: - # If image size exceeds Pillow's max image size, Pillow will not return width or height - pixels = 2 * FILER_MAX_IMAGE_PIXELS + 1 - aspect = 16 / 9 - else: - width, height = max(1, self.width), max(1, self.height) - pixels: int = width * height - aspect: float = width / height - res_x: int = int((FILER_MAX_IMAGE_PIXELS * aspect) ** 0.5) - res_y: int = int(res_x / aspect) - if pixels > 2 * FILER_MAX_IMAGE_PIXELS: - msg = _( - "Image format not recognized or image size exceeds limit of %(max_pixels)d million " - "pixels by a factor of two or more. Before uploading again, check file format or resize " - "image to %(width)d x %(height)d resolution or lower." - ) % dict(max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, width=res_x, height=res_y) - raise ValidationError(str(msg), code="image_size") - - if pixels > FILER_MAX_IMAGE_PIXELS: - msg = _( - "Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " - "million pixels. Before uploading again, resize image to %(width)d x %(height)d " - "resolution or lower." - ) % dict(pixels=pixels // 1000000, max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, - width=res_x, height=res_y) - raise ValidationError(str(msg), code="image_size") + # Only check pixel size for new uploads (no pk yet) + if self.file and FILER_MAX_IMAGE_PIXELS and not self.pk: + if self._width is None or self._height is None: + # If image size exceeds Pillow's max image size, Pillow will not return width or height + pixels = 2 * FILER_MAX_IMAGE_PIXELS + 1 + aspect = 16 / 9 + else: + width, height = max(1, self.width), max(1, self.height) + pixels: int = width * height + aspect: float = width / height + res_x: int = int((FILER_MAX_IMAGE_PIXELS * aspect) ** 0.5) + res_y: int = int(res_x / aspect) + if pixels > 2 * FILER_MAX_IMAGE_PIXELS: + msg = _( + "Image format not recognized or image size exceeds limit of %(max_pixels)d million " + "pixels by a factor of two or more. Before uploading again, check file format or resize " + "image to %(width)d x %(height)d resolution or lower." + ) % dict(max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, width=res_x, height=res_y) + raise ValidationError(str(msg), code="image_size") + + if pixels > FILER_MAX_IMAGE_PIXELS: + msg = _( + "Image size (%(pixels)d million pixels) exceeds limit of %(max_pixels)d " + "million pixels. Before uploading again, resize image to %(width)d x %(height)d " + "resolution or lower." + ) % dict(pixels=pixels // 1000000, max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, + width=res_x, height=res_y) + raise ValidationError(str(msg), code="image_size") + super().clean() def save(self, *args, **kwargs): self.has_all_mandatory_data = self._check_validity() @@ -243,12 +246,13 @@ def height(self): return self._height or 0.0 def _generate_thumbnails(self, required_thumbnails): + from filer.utils.cdn import get_cdn_url _thumbnails = {} for name, opts in required_thumbnails.items(): try: opts.update({'subject_location': self.subject_location}) thumb = self.file.get_thumbnail(opts) - _thumbnails[name] = thumb.url + _thumbnails[name] = get_cdn_url(self, thumb.url) except Exception as e: # catch exception and manage it. We can re-raise it for debugging # purposes and/or just logging it, provided user configured diff --git a/filer/models/archivemodels.py b/filer/models/archivemodels.py index 70bed0d7f..019bac515 100644 --- a/filer/models/archivemodels.py +++ b/filer/models/archivemodels.py @@ -156,8 +156,10 @@ def _is_valid_image(self, content_file): def _create_file(self, basename, folder, data): """Helper wrapper of creating a filer file.""" + import mimetypes file_data = ContentFile(data, name=basename) - matched_file_types = matching_file_subtypes(basename, None, None) + mime_type = mimetypes.guess_type(basename)[0] + matched_file_types = matching_file_subtypes(basename, None, mime_type) FileSubClass = matched_file_types[0] if (FileSubClass is FilerImage and not self._is_valid_image(file_data)): diff --git a/filer/models/filemodels.py b/filer/models/filemodels.py index 4f00fe388..8fb1fb110 100644 --- a/filer/models/filemodels.py +++ b/filer/models/filemodels.py @@ -431,6 +431,9 @@ def save(self, *args, **kwargs): pass elif issubclass(self.__class__, File): self._file_type_plugin_name = self.__class__.__name__ + # Ensure file metadata is computed on first save + if not self.sha1 and self.file: + self.file_data_changed() # cache the file size try: self._file_size = self.file.size @@ -742,7 +745,8 @@ def url(self): r = self.file.url except: # noqa r = '' - return r + from filer.utils.cdn import get_cdn_url + return get_cdn_url(self, r) @property def canonical_time(self): diff --git a/filer/models/imagemodels.py b/filer/models/imagemodels.py index 00d0ef270..e385cf595 100644 --- a/filer/models/imagemodels.py +++ b/filer/models/imagemodels.py @@ -2,6 +2,7 @@ from datetime import datetime from django.conf import settings +from django.core.exceptions import ValidationError from django.db import models from django.utils.timezone import get_current_timezone, make_aware, now from django.utils.translation import gettext_lazy as _ @@ -28,6 +29,15 @@ class Image(BaseImage): blank=True, ) + default_credit = models.CharField( + _('default credit text'), max_length=255, blank=True, null=True, + help_text=_('Credit text gives credit to the owner or licensor of ' + 'an image; it is displayed below the image plugin, or ' + 'below the caption text on an image plugin, if that ' + 'option is selected; it is displayed along the bottom ' + 'of an image in the photo gallery plugin; there is a ' + '30-character limit, including spaces.')) + must_always_publish_author_credit = models.BooleanField( _("must always publish author credit"), default=False, @@ -42,6 +52,20 @@ class Meta(BaseImage.Meta): swappable = 'FILER_IMAGE_MODEL' default_manager_name = 'objects' + def clean(self): + if self.default_credit: + self.default_credit = self.default_credit.strip() + if self.default_alt_text: + self.default_alt_text = self.default_alt_text.strip() + if self.default_caption: + self.default_caption = self.default_caption.strip() + + if int(len(self.default_credit or '')) > 30: + raise ValidationError( + "Ensure default credit text has at most 30 characters (" + "%s characters found)." % len(self.default_credit)) + super().clean() + def save(self, *args, **kwargs): if self.date_taken is None: try: diff --git a/filer/templatetags/filer_admin_tags.py b/filer/templatetags/filer_admin_tags.py index 8ef9bd9fe..c62b5c906 100644 --- a/filer/templatetags/filer_admin_tags.py +++ b/filer/templatetags/filer_admin_tags.py @@ -20,6 +20,7 @@ from filer.settings import ( DEFERRED_THUMBNAIL_SIZES, FILER_MAX_SVG_THUMBNAIL_SIZE, FILER_TABLE_ICON_SIZE, FILER_THUMBNAIL_ICON_SIZE, ) +import filer.models register = Library() @@ -227,3 +228,37 @@ def icon_css_library(): for lib in settings.ICON_CSS_LIB: html += f'' return mark_safe(html) + + +@register.simple_tag(takes_context=True) +def get_popup_params(context, sep='?'): + is_popup = context.get('is_popup', False) + select_folder = context.get('select_folder', False) + current_site = context.get('current_site', False) + file_type = context.get('file_type', None) + params = '' + if is_popup: + params += '%s_popup=1' % sep + if select_folder: + params += '&select_folder=1' + if current_site: + params += '¤t_site=%s' % current_site + if file_type: + params += '&file_type=%s' % file_type + return params + + +@register.filter +def pretty_display(filer_obj): + if isinstance(filer_obj, filer.models.Folder): + return '/%s' % '/'.join(filer_obj.get_ancestors(include_self=True) + .values_list('name', flat=True)) + if isinstance(filer_obj, filer.models.File): + name = filer_obj.actual_name + if not filer_obj.folder_id: + return '/%s' % name + return '/%s' % '/'.join( + list(filer.models.Folder.all_objects.get(id=filer_obj.folder_id) + .get_ancestors(include_self=True) + .values_list('name', flat=True)) + [name]) + return '' diff --git a/filer/templatetags/filermedia.py b/filer/templatetags/filermedia.py new file mode 100644 index 000000000..92f86360a --- /dev/null +++ b/filer/templatetags/filermedia.py @@ -0,0 +1,17 @@ +#-*- coding: utf-8 -*- +from django.template import Library + +register = Library() + + +@register.simple_tag +def filer_staticmedia_prefix(): + """ + Returns the string contained in the setting FILER_STATICMEDIA_PREFIX. + """ + try: + from filer import settings + except ImportError: + return '' + return settings.FILER_STATICMEDIA_PREFIX + diff --git a/filer/test_settings.py b/filer/test_settings.py index a31aa84cc..6d7bfcd19 100644 --- a/filer/test_settings.py +++ b/filer/test_settings.py @@ -60,6 +60,12 @@ CACHE_BACKEND = 'locmem:///' +FILER_FILE_MODELS = ( + 'filer.Image', + 'filer.Archive', + 'filer.File', +) + SECRET_KEY = 'secret' TEST_RUNNER = 'django.test.runner.DiscoverRunner' diff --git a/filer/utils/files.py b/filer/utils/files.py index 16a887a75..2b87eed34 100644 --- a/filer/utils/files.py +++ b/filer/utils/files.py @@ -176,12 +176,18 @@ def matching_file_subtypes(filename, file_pointer, request): from ..settings import FILER_FILE_MODELS from .loader import load_model + # If request/mime_type is None, try to guess from filename + mime_type = request + if mime_type is None and filename: + import mimetypes + mime_type = mimetypes.guess_type(filename)[0] + types = [] for model_path in FILER_FILE_MODELS: types.append(load_model(model_path)) def _match_subtype(subtype): - return subtype.matches_file_type(filename, file_pointer, request) + return subtype.matches_file_type(filename, file_pointer, mime_type) type_matches = list(filter(_match_subtype, types)) return type_matches diff --git a/pytest.ini b/pytest.ini index 39dca3f80..1ddb7e95a 100644 --- a/pytest.ini +++ b/pytest.ini @@ -2,4 +2,5 @@ python_files = *.py python_classes = Test* *Tests *TestCase python_functions = test_* +testpaths = filer/tests From 1d8f171cf1ac7a3e2ab987676640c326fce5dc24 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 30 Apr 2026 16:54:26 +0300 Subject: [PATCH 10/51] BEN-2954: PBS fixes --- UPSTREAM_MERGE_FIXES.md | 1 + filer/admin/clipboardadmin.py | 6 + filer/admin/fileadmin.py | 4 + filer/admin/folderadmin.py | 175 ++++++++++++++---- filer/admin/views.py | 22 ++- filer/fields/multistorage_file.py | 6 + filer/models/filemodels.py | 3 + .../admin/filer/file/change_form.html | 7 + filer/templates/admin/filer/submit_line.html | 2 +- .../templates/admin/filer/trash/file_row.html | 2 +- .../admin/filer/trash/subfolder_row.html | 2 +- 11 files changed, 181 insertions(+), 49 deletions(-) diff --git a/UPSTREAM_MERGE_FIXES.md b/UPSTREAM_MERGE_FIXES.md index 5beeb49f3..55b5645d4 100644 --- a/UPSTREAM_MERGE_FIXES.md +++ b/UPSTREAM_MERGE_FIXES.md @@ -14,6 +14,7 @@ | After upstream merge | 73 | ~80 | 68 | | After Session 1 fixes | 67 | 86 | 68 | | After Session 2 fixes | 59 | 94 | 68 | +| **After all fixes (final)** | **0** | **153** | **68** | --- diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index ba3d0037b..1f4ac6e1e 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -106,6 +106,12 @@ def ajax_upload(request, folder_id=None): filename = truncate_filename(upload, maxlen=100) upload.name = filename + # Re-detect mime_type after truncation may have added an extension + import mimetypes as _mimetypes + guessed_type = _mimetypes.guess_type(filename)[0] + if guessed_type and mime_type == 'application/octet-stream': + mime_type = guessed_type + # Get clipboard clipboard = Clipboard.objects.get_or_create(user=request.user)[0] diff --git a/filer/admin/fileadmin.py b/filer/admin/fileadmin.py index 498a99411..17b7b8c7a 100644 --- a/filer/admin/fileadmin.py +++ b/filer/admin/fileadmin.py @@ -156,12 +156,16 @@ def response_change(self, request, obj): def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None): + # PBS: flag readonly files to suppress submit buttons in template + is_readonly = obj and (obj.is_readonly_for_user(request.user) or + obj.is_restricted_for_user(request.user)) context.update({ 'show_delete': True, 'history_url': admin_urlname(self.opts, 'history'), 'expand_image_url': None, 'is_popup': popup_status(request), 'filer_admin_context': AdminContext(request), + 'is_readonly_file': is_readonly, }) if obj and obj.mime_maintype == 'image' and obj.file.exists(): if 'svg' in obj.mime_type: diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 62904d062..9895509d1 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -45,7 +45,8 @@ from .common_admin import FolderPermissionModelAdmin from .tools import ( AdminContext, admin_url_params_encoded, check_files_edit_permissions, check_files_read_permissions, - check_folder_edit_permissions, check_folder_read_permissions, get_directory_listing_type, popup_status, + check_folder_edit_permissions, check_folder_read_permissions, get_directory_listing_type, + has_multi_file_action_permission, popup_status, userperms_for_request, ) @@ -71,7 +72,8 @@ class FolderAdmin(FolderPermissionModelAdmin): save_as = True # see ImageAdmin actions = ['delete_files_or_folders', 'move_files_and_folders', 'copy_files_and_folders', 'resize_images', 'rename_files', - 'extract_files', 'move_to_clipboard'] + 'extract_files', 'move_to_clipboard', + 'enable_restriction', 'disable_restriction'] if DJANGO_VERSION >= (5, 2): directory_listing_template = 'admin/filer/folder/directory_listing.html' @@ -126,8 +128,6 @@ def get_form(self, request, obj=None, **kwargs): parent_id = request.GET.get('parent_id', None) if not parent_id: parent_id = request.POST.get('parent_id', None) - if parent_id: - return AddFolderPopupForm folder_form = super().get_form( request, obj=obj, **kwargs) @@ -278,6 +278,11 @@ def delete_view(self, request, object_id, extra_context=None): except self.model.DoesNotExist: parent_folder = None + # PBS: block deletion of core folders + if obj and not self.has_delete_permission(request, obj): + from django.http import HttpResponseForbidden + return HttpResponseForbidden("Permission denied") + if request.POST: self.delete_files_or_folders( request, @@ -349,6 +354,7 @@ def directory_listing(self, request, folder_id=None, viewtype=None): if not request.user.has_perm("filer.can_use_directory_listing"): raise PermissionDenied() clipboard = tools.get_user_clipboard(request.user) + file_type = request.GET.get('file_type', None) if viewtype == 'images_with_missing_data': folder = ImagesWithMissingData() elif viewtype == 'unfiled_images': @@ -426,6 +432,10 @@ def directory_listing(self, request, folder_id=None, viewtype=None): file_qs = folder.files.all() show_result_count = False + # PBS: filter by file_type if requested + if file_type == 'image': + file_qs = file_qs.instance_of(Image) + folder_qs = folder_qs.order_by('name').select_related("owner") order_by = request.GET.get('order_by', None) order_by_annotation = None @@ -495,15 +505,14 @@ def directory_listing(self, request, folder_id=None, viewtype=None): # Are we moving to clipboard? if request.method == 'POST' and '_save' not in request.POST: - # TODO: Refactor/remove clipboard parts - for f in folder_qs: + clipboard = tools.get_user_clipboard(request.user) + for f in file_qs: if "move-to-clipboard-%d" % (f.id,) in request.POST: - clipboard = tools.get_user_clipboard(request.user) - if f.has_edit_permission(request): - tools.move_file_to_clipboard(request, [f], clipboard) - return HttpResponseRedirect(request.get_full_path()) - else: + if (f.is_readonly_for_user(request.user) or + f.is_restricted_for_user(request.user)): raise PermissionDenied + tools.move_file_to_clipboard(request, [f], clipboard) + return HttpResponseRedirect(request.get_full_path()) selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) # Actions with no confirmation @@ -738,24 +747,18 @@ def get_actions(self, request): def move_to_clipboard(self, request, files_queryset, folders_queryset): """ - Action which moves the selected files and files in selected folders - to clipboard. + Action which moves the selected files to clipboard. + PBS: Only moves files, not folders. Checks has_multi_file_action_permission. """ - - if not self.has_change_permission(request): - raise PermissionDenied - if request.method != 'POST': return None - clipboard = tools.get_user_clipboard(request.user) - - check_files_edit_permissions(request, files_queryset) - check_folder_edit_permissions(request, folders_queryset) - - # TODO: Display a confirmation page if moving more than X files to - # clipboard? + if not has_multi_file_action_permission( + request, files_queryset, + Folder.objects.none()): + raise PermissionDenied + clipboard = tools.get_user_clipboard(request.user) # We define it like that so that we can modify it inside the # move_files function files_count = [0] @@ -763,17 +766,14 @@ def move_to_clipboard(self, request, files_queryset, folders_queryset): def move_files(files): files_count[0] += tools.move_file_to_clipboard(request, files, clipboard) - def move_folders(folders): - for f in folders: - move_files(f.files) - move_folders(f.children.all()) - move_files(files_queryset) - move_folders(folders_queryset) - - self.message_user(request, _("Successfully moved %(count)d files to " - "clipboard.") % {"count": files_count[0]}) - + if files_count[0] > 0: + self.message_user(request, + _("Successfully moved %(count)d files to clipboard.") % { + "count": files_count[0], }) + else: + self.message_user(request, + _("No files were moved to clipboard.")) return None move_to_clipboard.short_description = _("Move selected files to clipboard") @@ -834,6 +834,11 @@ def files_set_public(self, request, files_queryset, folders_queryset): files_set_public.short_description = _("Disable permissions for selected files") + def log_deletions(self, request, queryset): + """Log deletion for each object in the queryset.""" + for obj in queryset: + self.log_deletion(request, obj, str(obj)) + def delete_files_or_folders(self, request, files_queryset, folders_queryset): """ Action which deletes the selected files and/or folders. @@ -852,6 +857,12 @@ def delete_files_or_folders(self, request, files_queryset, folders_queryset): if not self.has_delete_permission(request): raise PermissionDenied + # PBS: block deletion of readonly/core/restricted folders/files + if not has_multi_file_action_permission(request, files_queryset, folders_queryset): + messages.error(request, _("You do not have permission to delete " + "the selected files and/or folders.")) + return None + current_folder = self._get_current_action_folder( request, files_queryset, folders_queryset) @@ -1017,6 +1028,7 @@ def destination_folders(self, request): """ AJAX view returning JSON list of destination folders for the fancytree widget used in move/copy operations. + PBS: Filters by site access, excludes core folders and orphaned folders. """ import json selected_folders_raw = request.GET.get('selected_folders', '[]') @@ -1024,13 +1036,13 @@ def destination_folders(self, request): selected_ids = json.loads(selected_folders_raw) except (json.JSONDecodeError, TypeError): selected_ids = [] - selected_qs = Folder.objects.filter(pk__in=selected_ids) + selected_qs = self.get_queryset(request).filter(pk__in=selected_ids) current_folder_id = request.GET.get('current_folder') current_folder = None if current_folder_id and current_folder_id != 'null': try: - current_folder = Folder.objects.get(pk=int(current_folder_id)) + current_folder = self.get_queryset(request).get(pk=int(current_folder_id)) except (Folder.DoesNotExist, ValueError): pass @@ -1038,11 +1050,11 @@ def destination_folders(self, request): if parent_raw and parent_raw != 'null': try: parent_id = int(parent_raw) - folders = Folder.objects.filter(parent_id=parent_id).order_by('name') + folders = self.get_queryset(request).filter(parent_id=parent_id).order_by('name') except (ValueError, TypeError): - folders = Folder.objects.filter(parent__isnull=True).order_by('name') + folders = self.get_queryset(request).filter(parent__isnull=True).order_by('name') else: - folders = Folder.objects.filter(parent__isnull=True).order_by('name') + folders = self.get_queryset(request).filter(parent__isnull=True).order_by('name') result = [] for fo in folders: @@ -1050,6 +1062,11 @@ def destination_folders(self, request): continue if not fo.has_read_permission(request): continue + # PBS: exclude core folders and orphaned folders (no site) as destinations + if fo.is_core(): + continue + if fo.parent is None and not fo.site: + continue is_selectable = (fo != current_folder) and fo.has_add_children_permission(request) has_children = fo.children.exists() result.append({ @@ -1097,6 +1114,11 @@ def move_files_and_folders(self, request, files_queryset, folders_queryset): if destination not in folders_dict or not folders_dict[destination][1]: raise PermissionDenied + # PBS: validate destination is not a core folder + if destination.is_core(): + messages.error(request, "You cannot move files/folders into a core folder.") + return None + # PBS: site consistency checks sites_from_folders = \ set(folders_queryset.values_list('site_id', flat=True)) | \ @@ -1108,6 +1130,10 @@ def move_files_and_folders(self, request, files_queryset, folders_queryset): "do not belong to any site. Folders need to be assigned " "to a site before you can move files/folders from it.") return + elif not destination.site: + messages.error(request, "The destination folder does not " + "belong to any site.") + return elif len(sites_from_folders) > 1: messages.error(request, "You cannot move files/folders that " "belong to several sites. Select files/folders that " @@ -1288,6 +1314,59 @@ def has_collisions(filer_file): extract_files.short_description = _("Extract selected zip files") + def files_toggle_restriction(self, request, restriction, + files_qs, folders_qs): + """ + Action which enables or disables restriction for files/folders. + """ + if request.method != 'POST': + return None + # cannot restrict/unrestrict unfiled files + unfiled_files = files_qs.filter(folder__isnull=True) + if unfiled_files.exists(): + messages.warning(request, _("Some of the selected files do not have parents: %s, " + "so their rights cannot be changed.") % + ', '.join([str(unfiled_file) for unfiled_file in unfiled_files.all()])) + return None + + if not has_multi_file_action_permission(request, files_qs, folders_qs): + messages.warning(request, _("You are not allowed to modify the restrictions on " + "the selected files and folders.")) + return None + + count = [0] + + def set_files_or_folders(filer_obj): + for f in filer_obj: + if f.restricted != restriction: + f.restricted = restriction + f.save() + count[0] += 1 + + set_files_or_folders(files_qs) + set_files_or_folders(folders_qs) + count = count[0] + if restriction: + self.message_user(request, + _("Successfully enabled restriction for %(count)d files " + "and/or folders.") % {"count": count,}) + else: + self.message_user(request, + _("Successfully disabled restriction for %(count)d files " + "and/or folders.") % {"count": count,}) + + def enable_restriction(self, request, files_qs, folders_qs): + return self.files_toggle_restriction( + request, True, files_qs, folders_qs) + + enable_restriction.short_description = _("Enable restriction for selected files and/or folders") + + def disable_restriction(self, request, files_qs, folders_qs): + return self.files_toggle_restriction( + request, False, files_qs, folders_qs) + + disable_restriction.short_description = _("Disable restriction for selected files and/or folders") + def _generate_new_filename(self, filename, suffix): basename, extension = os.path.splitext(filename) return basename + suffix + extension @@ -1378,6 +1457,24 @@ def copy_files_and_folders(self, request, files_queryset, folders_queryset): folders_dict = dict(folders) if destination not in folders_dict or not folders_dict[destination][1]: raise PermissionDenied + + # PBS: validate destination is not a core folder + if destination.is_core(): + messages.warning(request, _("The selected destination was not valid. " + "You cannot copy files/folders into a core folder.")) + return None + + # PBS: site consistency checks (same as move) + sites_from_folders = \ + set(folders_queryset.values_list('site_id', flat=True)) | \ + set(files_queryset.exclude(folder__isnull=True).\ + values_list('folder__site_id', flat=True)) + if sites_from_folders and destination.site and \ + any(s != destination.site_id for s in sites_from_folders if s is not None): + messages.warning(request, _("The selected destination was not valid. " + "Selected files/folders need to belong to the same site as the destination folder.")) + return None + if files_queryset.count() + folders_queryset.count(): # We count all files and folders here (recursively) n = self._copy_files_and_folders_impl(files_queryset, folders_queryset, destination, form.cleaned_data['suffix'], False) diff --git a/filer/admin/views.py b/filer/admin/views.py index 7493f7c0e..265950ab1 100644 --- a/filer/admin/views.py +++ b/filer/admin/views.py @@ -10,7 +10,7 @@ from .. import settings as filer_settings from ..models import Clipboard, Folder, FolderRoot, tools -from .tools import AdminContext, admin_url_params_encoded, popup_status +from ..admin.tools import AdminContext, admin_url_params_encoded, is_valid_destination, popup_status class NewFolderForm(forms.ModelForm): @@ -66,6 +66,9 @@ def make_folder(request, folder_id=None): if request.method == 'POST': new_folder_form = NewFolderForm(request.POST, is_root_folder=(folder is None)) + # Set parent on the instance before validation so model clean() works correctly + new_folder_form.instance.parent = folder + new_folder_form.instance.owner = request.user if new_folder_form.is_valid(): new_folder = new_folder_form.save(commit=False) if (folder or FolderRoot()).contains_folder(new_folder.name): @@ -102,13 +105,18 @@ def make_folder(request, folder_id=None): def paste_clipboard_to_folder(request): if request.method == 'POST': - folder = Folder.objects.get(id=request.POST.get('folder_id')) - clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) - if folder.has_add_children_permission(request): - tools.move_files_from_clipboard_to_folder(request, clipboard, folder) - tools.discard_clipboard(clipboard) - else: + folder_id = request.POST.get('folder_id') + if not folder_id: + raise PermissionDenied + try: + folder = Folder.objects.get(id=folder_id) + except Folder.DoesNotExist: raise PermissionDenied + if not is_valid_destination(request, folder): + raise PermissionDenied + clipboard = Clipboard.objects.get(id=request.POST.get('clipboard_id')) + files_moved = tools.move_files_from_clipboard_to_folder(request, clipboard, folder) + tools.discard_clipboard_files(clipboard, files_moved) redirect = request.GET.get('redirect_to', '') if not redirect: redirect = request.POST.get('redirect_to', '') diff --git a/filer/fields/multistorage_file.py b/filer/fields/multistorage_file.py index 99f730403..83e73b5c9 100644 --- a/filer/fields/multistorage_file.py +++ b/filer/fields/multistorage_file.py @@ -115,6 +115,12 @@ def _thumbnail_base_dir(self): else: return self.thumbnail_options['private'].get('base_dir', '') + def get_thumbnail(self, thumbnail_options, save=True, generate=None): + # PBS: prevent thumbnail generation for soft-deleted (trashed) files + if hasattr(self.instance, 'is_in_trash') and self.instance.is_in_trash(): + return None + return super().get_thumbnail(thumbnail_options, save=save, generate=generate) + def save(self, name, content, save=True): content.seek(0) # Ensure we upload the whole file super().save(name, content, save) diff --git a/filer/models/filemodels.py b/filer/models/filemodels.py index 8fb1fb110..488ca1d23 100644 --- a/filer/models/filemodels.py +++ b/filer/models/filemodels.py @@ -495,6 +495,7 @@ def update_location_on_storage(self, *args, **kwargs): def copy_and_save(): saved_as = self._copy_file(new_location) assert saved_as == new_location, '%s %s' % (saved_as, new_location) + self._file_data_changed_hint = False self.file = saved_as super(File, self).save(*args, **kwargs) @@ -741,6 +742,8 @@ def url(self): """ to make the model behave like a file field """ + if self.is_in_trash(): + return '' try: r = self.file.url except: # noqa diff --git a/filer/templates/admin/filer/file/change_form.html b/filer/templates/admin/filer/file/change_form.html index a1d5b21fc..601ed99c3 100644 --- a/filer/templates/admin/filer/file/change_form.html +++ b/filer/templates/admin/filer/file/change_form.html @@ -21,3 +21,10 @@ {% endif %} {% include "admin/filer/tools/detail_info.html" %} {% endblock %} + +{% block submit_buttons_bottom %} + {% if not is_readonly_file %} + {% submit_row %} + {% endif %} +{% endblock %} + diff --git a/filer/templates/admin/filer/submit_line.html b/filer/templates/admin/filer/submit_line.html index 3c0fa1c73..04f9428e4 100644 --- a/filer/templates/admin/filer/submit_line.html +++ b/filer/templates/admin/filer/submit_line.html @@ -5,4 +5,4 @@ {% if show_save_and_add_another %}{% endif %} {% if show_save_and_continue %}{% endif %} {% if show_save %}{% endif %} -
\ No newline at end of file +
diff --git a/filer/templates/admin/filer/trash/file_row.html b/filer/templates/admin/filer/trash/file_row.html index bdc21dcd0..a8c712209 100644 --- a/filer/templates/admin/filer/trash/file_row.html +++ b/filer/templates/admin/filer/trash/file_row.html @@ -12,5 +12,5 @@ {% trans "Owner" %}: {% firstof file.owner.email file.owner.username "n/a" %} - {% client_timezone file.deleted_at %} + {{ file.deleted_at }} diff --git a/filer/templates/admin/filer/trash/subfolder_row.html b/filer/templates/admin/filer/trash/subfolder_row.html index 90ef43900..a01a496b2 100644 --- a/filer/templates/admin/filer/trash/subfolder_row.html +++ b/filer/templates/admin/filer/trash/subfolder_row.html @@ -11,5 +11,5 @@
{% trans "Owner" %}: {% firstof subfolder.owner.email subfolder.owner.username "n/a" %}
- {% client_timezone subfolder.deleted_at %} + {{ subfolder.deleted_at }} From f2283df37fcf900e2d497a632636df2516b1c598 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 30 Apr 2026 17:00:09 +0300 Subject: [PATCH 11/51] BEN-2954: set version 3.4.4 --- filer/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filer/__init__.py b/filer/__init__.py index 2c9353c53..e901419d4 100644 --- a/filer/__init__.py +++ b/filer/__init__.py @@ -11,4 +11,4 @@ 7. Create a new release on github. """ -__version__ = '3.5.0+pbs.1' +__version__ = '3.4.4' From ae5bf9d51b697c83c9d3c70a84535500facf3c73 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 30 Apr 2026 17:29:16 +0300 Subject: [PATCH 12/51] BEN-2954: fix cdn --- UPSTREAM_MERGE_FIXES.md | 68 ++++++----------------------------------- filer/utils/cdn.py | 3 ++ 2 files changed, 13 insertions(+), 58 deletions(-) diff --git a/UPSTREAM_MERGE_FIXES.md b/UPSTREAM_MERGE_FIXES.md index 55b5645d4..237a27d2e 100644 --- a/UPSTREAM_MERGE_FIXES.md +++ b/UPSTREAM_MERGE_FIXES.md @@ -153,6 +153,12 @@ - **Clipboard access:** Replaced `self.superuser.filer_clipboard` with `Clipboard.objects.get(user=self.superuser)` - **Return values:** Removed `return folders, files` from test methods +### 12. `filer/utils/cdn.py` — `modified_at` None guard + +- **Problem:** `get_cdn_url()` crashes with `TypeError: unsupported operand type(s) for +: 'NoneType' and 'datetime.timedelta'` when `file_obj.modified_at` is `None` +- **Fix:** Added early return `if file_obj.modified_at is None: return url` before the timedelta arithmetic +- **Error:** `TypeError: unsupported operand type(s) for +: 'NoneType' and 'datetime.timedelta'` + --- ## PBS-Specific Features Preserved @@ -173,66 +179,11 @@ These features exist in the PBS fork but not in upstream django-filer: --- -## Remaining Failures (~59 tests) - -### Category 1: Clipboard/Upload (5 tests) -- `test_file_upload_no_duplicate_files` -- `test_filer_ajax_upload_long_filename` -- `test_filer_upload_image_no_extension` -- `test_paste_from_clipboard_no_duplicate_files` -- `test_move_to_clipboard_action` - -**Root cause:** Upstream rewrote the upload flow. The `ajax_upload` view no longer truncates filenames, no longer auto-creates clipboards, and the clipboard model changed from `ForeignKey` to `OneToOneField`. - -### Category 2: Folder Type Permissions (22 tests) -All `TestFolderTypePermissionForSuperUser` tests fail. These test PBS-specific folder type permissions (CORE_FOLDER, SITE_FOLDER), move/copy restrictions, clipboard operations. - -**Root cause:** Upstream's `copy_files_and_folders` lost PBS site-validation checks. The PBS permission model hooks (site mismatch, no-site, root folder prevention) were not preserved in the merge. Need to restore `_clean_destination` and `_are_candidate_names_valid`. - -### Category 3: Folder Operations (6 tests) -- `TestFolderTypeFunctionality` (2) -- `TestMPTTCorruptionsOnFolderOperations` (3) -- `test_filer_make_root_folder_post` - -**Root cause:** `make_folder` view changes, MPTT tree corruption, folder form validation. - -### Category 4: File Validation (3 tests) -- `test_name_extension_change` -- `test_name_with_slash` -- `test_name_without_extension` - -**Root cause:** Upstream added `validate_upload` with image size validation that PBS tests don't expect. - -### Category 5: Image Change Form (2 tests) -- `test_image_change_data_only` -- `test_image_change_name_and_data` - -**Root cause:** Upstream's `ImageAdmin` added new form validation and image processing. - -### Category 6: Model Tests (8 tests) -- `test_cdn_urls`, `test_cdn_urls_no_timezone_support` — CDN URL format changed -- `test_credit_text_length_max_size` — Field length validation -- `test_slash_not_allowed_in_name` — `clean()` validation order -- `test_bulk_deleting_folder_deletes_all_files_from_filesystem` — File cleanup -- `ArchiveTest` (4) — Archive model attribute errors - -### Category 7: Other (13 tests) -- `test_cascade_change_on_parent_restriction` — Restriction propagation -- `TestSharedFolderFunctionality` (3) — Shared folder M2M -- `test_restore_item_view` — Trash admin -- `test_thumbnails_removed_when_source_is_soft_deleted` — Thumbnail cleanup - ---- +## Test Results — ✅ All Passing -## Recommended Next Steps +**Final result: 153 passed, 68 skipped, 0 failed** (matches PBS baseline) -1. **Restore PBS `copy_files_and_folders` validation** — re-add `_clean_destination()` with site checks instead of upstream pattern -2. **Restore PBS `destination_folders` view** — full site-aware filtering logic -3. **Restore filename truncation** in `ajax_upload` or update tests to match upstream behavior -4. **Fix Archive model** — ensure `archivemodels.py` is compatible with new `filemodels.py` -5. **Fix Image change form** — align `ImageAdmin` fieldsets with PBS model fields -6. **Fix CDN URL tests** — update to match current `canonical_url` property -7. **Fix file validation** — reconcile PBS `clean()` with upstream `validate_upload()` +All 59 previously failing tests have been resolved. The upstream merge is fully compatible with the PBS test suite. --- @@ -253,3 +204,4 @@ All `TestFolderTypePermissionForSuperUser` tests fail. These test PBS-specific f | `filer/templatetags/filermedia.py` | Restored deleted file | | `filer/templates/admin/filer/submit_line.html` | Delete URL pk guard | | `filer/tests/admin.py` | Test compatibility fixes | +| `filer/utils/cdn.py` | `modified_at` None guard for CDN URL | diff --git a/filer/utils/cdn.py b/filer/utils/cdn.py index cdcbcba81..cd4086b3d 100644 --- a/filer/utils/cdn.py +++ b/filer/utils/cdn.py @@ -12,6 +12,9 @@ def get_cdn_url(file_obj, url): if cdn_domain is None: return url + if file_obj.modified_at is None: + return url + invalidated_at = file_obj.modified_at + datetime.timedelta( seconds=filer_settings.CDN_INVALIDATION_TIME) # django uses django.utils.timezone.now() to set value for From 77b78d84edda0da38f90e0171d9e1224d542dacd Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 28 May 2026 13:22:33 +0300 Subject: [PATCH 13/51] BEN-2954: use bento3 patch versioning --- filer/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filer/__init__.py b/filer/__init__.py index e901419d4..5f45d5c29 100644 --- a/filer/__init__.py +++ b/filer/__init__.py @@ -11,4 +11,4 @@ 7. Create a new release on github. """ -__version__ = '3.4.4' +__version__ = '3.4.4+bento3.patch.1' From 857efaa2e6936d7fa771b600f04ff13d61f46e8e Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 28 May 2026 15:33:28 +0300 Subject: [PATCH 14/51] Ben-2954: test --- filer/static/filer/css/admin_filer.css | 2 +- filer/static/filer/js/base.js | 11 + filer/tests/image_name | Bin 11200 -> 0 bytes filer/tests/new_one.jpg | Bin 1119 -> 0 bytes filer/tests/new_three.jpg | Bin 1119 -> 0 bytes ...sttesttesttesttesttesttesttesttesttest.jpg | Bin 11200 -> 0 bytes package-lock.json | 1492 +++++++++++++++++ package.json | 18 + webpack.config.js | 15 + 9 files changed, 1537 insertions(+), 1 deletion(-) delete mode 100644 filer/tests/image_name delete mode 100644 filer/tests/new_one.jpg delete mode 100644 filer/tests/new_three.jpg delete mode 100644 filer/tests/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest.jpg create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 webpack.config.js diff --git a/filer/static/filer/css/admin_filer.css b/filer/static/filer/css/admin_filer.css index a149b7ae1..c510053e9 100644 --- a/filer/static/filer/css/admin_filer.css +++ b/filer/static/filer/css/admin_filer.css @@ -1,3 +1,3 @@ /*! * @copyright: https://github.com/divio/django-filer - */html,body{min-width:320px;height:100% !important}.text-left{text-align:left}.text-right{text-align:right}.clearfix:after{content:"";display:table;clear:both}.related-widget-wrapper{float:none !important}.related-lookup.hidden{display:none !important}.tiny{font-size:12px !important;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important}.nav-pages{position:relative;font-size:12px;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;padding-left:10px;padding-right:20px;padding-top:15px;padding-bottom:15px;box-sizing:border-box;background:var(--dca-white, var(--body-bg, #fff))}.nav-pages span{font-size:12px;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important}.nav-pages .actions{float:right}#id_upload_button:before{display:none}#content #content-main{margin-top:0}.filebrowser.cms-admin-sideframe #container .breadcrumbs+#content,.filebrowser.cms-admin-sideframe #container .breadcrumbs+.messagelist+#content{margin-left:0 !important;margin-right:0 !important}.filebrowser.cms-admin-sideframe #container .breadcrumbs{left:0 !important;padding-left:20px !important}.filebrowser #container{min-width:auto}.filebrowser #container #content{padding:0;box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.filebrowser #container .breadcrumbs+#content,.filebrowser #container .breadcrumbs+.messagelist+#content{margin-left:3% !important}.filebrowser h1.folder_header{position:relative;top:6px}.filebrowser h2{display:none}.filebrowser #content-main{background-color:var(--dca-white, var(--body-bg, #fff))}.filer-widget{width:100%}.field-file,.field-sha1{word-wrap:break-word;word-break:break-all}.well.img-preview{display:none;margin-top:0}.img-wrapper{width:180px;height:180px}.file-duplicates{clear:both;padding:20px 0 0}form .cancel-link{height:auto !important;line-height:inherit !important;padding:10px 15px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.hidden{display:none !important}.filer-info-bar{min-height:15px;margin:0 0 2px !important;padding:15px 20px;box-shadow:0 0 10px -2px rgba(0,0,0,.2);background-color:var(--dca-white, var(--body-bg, #fff))}.navigator .actions span.all,.navigator .actions span.clear,.navigator .actions span.question{font-size:13px;margin:0 .5em;display:none}#all-items-action-toggle{display:none !important}.image-info{position:relative;float:right;box-sizing:border-box;width:28%;margin-top:0;border:0;border-radius:3px;background:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.image-info .image-details,.image-info .actions-list{margin:0;padding:0}.image-info .image-details.image-details,.image-info .actions-list.image-details{margin:10px 0;padding:0 10px}.image-info .image-details li,.image-info .actions-list li{list-style-type:none}.image-info .image-details a,.image-info .actions-list a{cursor:pointer}.image-info.image-info-detail:before,.image-info.image-info-detail:after{content:" ";display:table}.image-info.image-info-detail:after{clear:both}.image-info.image-info-detail{position:static;float:none;width:100%;margin-bottom:20px;padding:25px;border-radius:0}.image-info.image-info-detail+#content-main .object-tools{margin-top:20px;margin-right:20px;background-color:rgba(0,0,0,0)}.image-info.image-info-detail+#content-main .object-tools:before{display:none}.image-info.image-info-detail .image-details-left{float:left}.image-info.image-info-detail .image-details-right{float:left;margin-left:50px}.image-info.image-info-detail .image-details,.image-info.image-info-detail .actions-list{margin-top:0;border:0 !important}.image-info.image-info-detail .image-details.image-details,.image-info.image-info-detail .actions-list.image-details{margin-top:20px;margin-bottom:15px;padding:0}.image-info.image-info-detail .image-details dt,.image-info.image-info-detail .actions-list dt{float:left;color:var(--dca-gray-light, var(--body-quiet-color, #999));font-size:13px;line-height:1rem !important;font-weight:normal;margin-top:0}.image-info.image-info-detail .image-details dd,.image-info.image-info-detail .actions-list dd{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:13px;line-height:16px !important;padding-left:80px;margin-bottom:5px}.image-info.image-info-detail .image-details .text,.image-info.image-info-detail .actions-list .text{font-size:13px;margin-right:15px}.image-info.image-info-detail .image-details .text strong,.image-info.image-info-detail .actions-list .text strong{font-size:13px}.image-info.image-info-detail .image-details li,.image-info.image-info-detail .actions-list li{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:13px !important;font-weight:normal !important;padding:1px 0 !important;border:0 !important}.image-info.image-info-detail .image-details a,.image-info.image-info-detail .actions-list a{padding:0}.image-info.image-info-detail .image-info-title{overflow:hidden;color:var(--dca-gray, var(--body-quiet-color, #666));white-space:nowrap;text-overflow:ellipsis;padding:0 0 5px}.image-info.image-info-detail .image-info-title .icon{float:left;margin-right:5px}.image-info.image-info-detail .image-preview-container{text-align:left;margin:20px 0 0;padding:0}.image-info.image-info-detail .image-preview-container>img{margin-bottom:15px}.image-info.image-info-detail .actions-list .icon{font-size:16px}.image-info.image-info-detail .actions-list .icon:last-child{float:none}@media screen and (max-width: 720px){.image-info{float:none;width:100%}.image-info.image-info-detail .image-details-left,.image-info.image-info-detail .image-details-right{float:none;margin-left:0}}.image-info-close{position:absolute;top:-10px;right:-7px;font-size:20px;cursor:pointer}.image-info-title{padding:5px 10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.image-info-title a{margin-left:5px}.image-preview-container{text-align:center;margin:10px 0;padding:0 10px}.image-preview-container .image-preview{display:inline-block;position:relative;margin-bottom:15px;outline:1px solid var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));background-image:url("data:image/gif;base64,R0lGODlhCAAIAKECAOPj4/z8/P///////yH5BAEKAAIALAAAAAAIAAgAAAINhBEZh8q6DoTPSWvoKQA7")}.image-preview-container .image-preview img{display:block}.image-preview-container .image-preview-field{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.image-preview-container .image-preview-circle{position:relative;z-index:1;width:26px;height:26px;border:solid 2px red;margin:-13px;border-radius:30px;cursor:move;background:hsla(0,0%,100%,.5)}.image-preview-container audio,.image-preview-container video{margin-bottom:15px}.image-preview-container audio:focus,.image-preview-container video:focus{outline:none}.button-group .button{margin-right:10px;padding:10px 15px}.actions-list-dropdown a{display:block;padding:5px 10px}.actions-list-dropdown .caret-down{display:inline-block}.actions-list-dropdown .caret-right{display:none}.actions-list-dropdown.js-collapsed{border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list-dropdown.js-collapsed .caret-down{display:none}.actions-list-dropdown.js-collapsed .caret-right{display:inline-block}.actions-list{border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list:last-child{border-top:none}.actions-list:last-child a{border-bottom:none}.actions-list a{display:block;font-size:20px;padding:5px 10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list .icon:first-child{width:20px}.actions-list .icon:last-child{float:right;margin-top:3px}.actions-separated-list{display:inline-block;margin:0;padding-left:0}@media screen and (max-width: 720px){.actions-separated-list{float:left;margin-left:0}}.actions-separated-list li{display:inline-block;line-height:34px;vertical-align:middle;padding:0 10px;list-style:none}@media screen and (max-width: 720px){.actions-separated-list li:first-child{padding-left:0}}.actions-separated-list li span{vertical-align:middle}.actions-separated-list li a{color:var(--dca-gray, var(--body-quiet-color, #666))}.actions-separated-list span:before{font-size:18px}.search-is-focused .filter-files-container{position:static}.search-is-focused .filter-filers-container-inner{position:absolute;top:0;left:0;right:0}@media screen and (max-width: 720px){.search-is-focused .filter-filers-container-inner{position:static}}.search-is-focused .breadcrumbs-container{position:relative}.search-is-focused.breadcrumb-min-width .filter-filers-container-inner{position:static}.filter-files-container:before,.filter-files-container:after{content:" ";display:table}.filter-files-container:after{clear:both}.filter-files-container{display:table-cell;vertical-align:middle;position:relative;width:245px;margin:0;padding:0;background:none;box-shadow:none;z-index:1000}@media screen and (max-width: 720px){.filter-files-container{display:block;width:auto;margin-right:0;margin-top:10px}.filter-files-container .filter-files-button{float:none}}.filter-files-container .filer-dropdown-container{position:absolute;top:0;right:0}.filter-files-container .filer-dropdown-container>a,.filter-files-container .filer-dropdown-container>a:visited,.filter-files-container .filer-dropdown-container>a:link:visited,.filter-files-container .filer-dropdown-container>a:link{display:inline-block;line-height:34px;text-align:center;width:34px;height:34px;padding:0}.filter-files-container .filer-dropdown-container.open+.filer-dropdown-menu-checkboxes{display:block;width:calc(100% - 30px)}.filter-files-container .filer-dropdown-container.open+.filer-dropdown-menu-checkboxes li{margin:0;padding:0;list-style-type:none}.filter-files-container .filter-search-wrapper{position:relative;float:left;text-align:right;width:calc(100% - 43px);margin-right:5px}@media screen and (max-width: 720px){.filter-files-container .filter-search-wrapper{float:left}}.filter-files-container .filter-search-wrapper .filer-dropdown-container span{line-height:34px !important;height:34px !important}.filter-files-container .filter-files-button{float:right;text-align:center;white-space:nowrap;height:35px;margin:0;padding:8px !important}.filter-files-container .filter-files-button .icon{position:relative;left:2px;font-size:16px !important;vertical-align:top}.filter-files-container .filter-files-field{color:var(--dca-gray-darkest, var(--body-fg, #333));font-size:12px !important;line-height:35px;font-weight:normal;box-sizing:border-box;min-width:200px !important;height:35px;margin:0;padding:0 35px 0 10px !important;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:max-width 200ms}.filter-files-container .filter-files-field::-ms-clear{display:none}.filter-files-container .filer-dropdown-menu{margin-top:0 !important;margin-right:-1px !important}.filter-files-cancel{margin:5px 20px}body.dz-drag-hover .drag-hover-border{display:none !important}body.dz-drag-hover .navigator-table tbody td,body.dz-drag-hover .navigator-table tbody .unfiled td{background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}body.reset-hover td{background-color:var(--dca-white, var(--body-bg, #fff)) !important}.drag-hover-border{position:fixed;border-top:solid 2px var(--dca-primary, var(--primary, #0bf));border-bottom:solid 2px var(--dca-primary, var(--primary, #0bf));pointer-events:none;z-index:100;display:none}.thumbnail-drag-hover-border{border:solid 2px var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-list,.filebrowser .navigator-table{width:100%;margin:0;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd)) !important;border-collapse:collapse !important}.filebrowser .navigator-list .navigator-header,.filebrowser .navigator-list thead th,.filebrowser .navigator-list tbody td,.filebrowser .navigator-table .navigator-header,.filebrowser .navigator-table thead th,.filebrowser .navigator-table tbody td{text-align:left;font-weight:normal;vertical-align:middle;padding:5px !important;border-left:0 !important;border-bottom:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));border-top:1px solid rgba(0,0,0,0);background:none !important}.filebrowser .navigator-list tbody tr.selected .action-button span,.filebrowser .navigator-table tbody tr.selected .action-button span{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important}.filebrowser .navigator-list .navigator-body,.filebrowser .navigator-list .unfiled td,.filebrowser .navigator-table .navigator-body,.filebrowser .navigator-table .unfiled td{padding:12px 5px !important;background-color:var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7)) !important}.filebrowser .navigator-list .navigator-body a,.filebrowser .navigator-list .navigator-body a:hover,.filebrowser .navigator-list .unfiled td a,.filebrowser .navigator-list .unfiled td a:hover,.filebrowser .navigator-table .navigator-body a,.filebrowser .navigator-table .navigator-body a:hover,.filebrowser .navigator-table .unfiled td a,.filebrowser .navigator-table .unfiled td a:hover{color:var(--dca-gray, var(--body-quiet-color, #666)) !important}.filebrowser .navigator-list .column-checkbox,.filebrowser .navigator-table .column-checkbox{text-align:center;width:20px;padding-left:20px !important}.filebrowser .navigator-list .column-checkbox input,.filebrowser .navigator-table .column-checkbox input{vertical-align:middle;margin:0}.filebrowser .navigator-list .column-name a,.filebrowser .navigator-table .column-name a{color:var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-list .column-icon,.filebrowser .navigator-table .column-icon{width:50px;padding-top:0 !important;padding-bottom:0 !important}.filebrowser .navigator-list .column-action,.filebrowser .navigator-table .column-action{text-align:center;width:90px;white-space:nowrap;padding-right:20px !important}.filebrowser .navigator-list .column-action a,.filebrowser .navigator-table .column-action a{font-size:16px !important;margin:0}.filebrowser .navigator-list .column-action .action-button,.filebrowser .navigator-table .column-action .action-button{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}.filebrowser .navigator-list .column-action .action-button:focus,.filebrowser .navigator-list .column-action .action-button.focus,.filebrowser .navigator-list .column-action .action-button:hover,.filebrowser .navigator-table .column-action .action-button:focus,.filebrowser .navigator-table .column-action .action-button.focus,.filebrowser .navigator-table .column-action .action-button:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}.filebrowser .navigator-list .column-action .action-button:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-active,.filebrowser .navigator-table .column-action .action-button:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}.filebrowser .navigator-list .column-action .action-button:active:hover,.filebrowser .navigator-list .column-action .action-button:active:focus,.filebrowser .navigator-list .column-action .action-button:active.focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-active:hover,.filebrowser .navigator-list .column-action .action-button.cms-btn-active:focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-active.focus,.filebrowser .navigator-table .column-action .action-button:active:hover,.filebrowser .navigator-table .column-action .action-button:active:focus,.filebrowser .navigator-table .column-action .action-button:active.focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-active:hover,.filebrowser .navigator-table .column-action .action-button.cms-btn-active:focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}.filebrowser .navigator-list .column-action .action-button:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-active,.filebrowser .navigator-table .column-action .action-button:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-active{background-image:none !important}.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:hover,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.cms-btn-active,.filebrowser .navigator-list .column-action .action-button[disabled],.filebrowser .navigator-list .column-action .action-button[disabled]:hover,.filebrowser .navigator-list .column-action .action-button[disabled]:focus,.filebrowser .navigator-list .column-action .action-button[disabled].focus,.filebrowser .navigator-list .column-action .action-button[disabled]:active,.filebrowser .navigator-list .column-action .action-button[disabled].cms-btn-active,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:hover,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.cms-btn-active,.filebrowser .navigator-table .column-action .action-button[disabled],.filebrowser .navigator-table .column-action .action-button[disabled]:hover,.filebrowser .navigator-table .column-action .action-button[disabled]:focus,.filebrowser .navigator-table .column-action .action-button[disabled].focus,.filebrowser .navigator-table .column-action .action-button[disabled]:active,.filebrowser .navigator-table .column-action .action-button[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:hover:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:focus:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.focus:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:active:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.cms-btn-active:before,.filebrowser .navigator-list .column-action .action-button[disabled]:before,.filebrowser .navigator-list .column-action .action-button[disabled]:hover:before,.filebrowser .navigator-list .column-action .action-button[disabled]:focus:before,.filebrowser .navigator-list .column-action .action-button[disabled].focus:before,.filebrowser .navigator-list .column-action .action-button[disabled]:active:before,.filebrowser .navigator-list .column-action .action-button[disabled].cms-btn-active:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:hover:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:focus:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.focus:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:active:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.cms-btn-active:before,.filebrowser .navigator-table .column-action .action-button[disabled]:before,.filebrowser .navigator-table .column-action .action-button[disabled]:hover:before,.filebrowser .navigator-table .column-action .action-button[disabled]:focus:before,.filebrowser .navigator-table .column-action .action-button[disabled].focus:before,.filebrowser .navigator-table .column-action .action-button[disabled]:active:before,.filebrowser .navigator-table .column-action .action-button[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}.filebrowser .navigator-list .column-action .action-button,.filebrowser .navigator-table .column-action .action-button{margin:3px;padding:2px 6px 8px !important}.filebrowser .navigator-list .column-action .action-button span,.filebrowser .navigator-table .column-action .action-button span{font-size:17px;line-height:33px;vertical-align:middle}.filebrowser .navigator-list .no-files,.filebrowser .navigator-table .no-files{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:14px;text-align:center;padding:40px 0 !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}.filebrowser .navigator-list .no-files span,.filebrowser .navigator-table .no-files span{font-size:20px;margin-right:10px}.filebrowser .navigator-list .no-files span:before,.filebrowser .navigator-table .no-files span:before{vertical-align:sub}.filebrowser .navigator-list .dz-drag-hover td,.filebrowser .navigator-table .dz-drag-hover td{position:relative;background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;box-sizing:border-box !important}.filebrowser .navigator-list .dz-drag-hover td a.icon,.filebrowser .navigator-table .dz-drag-hover td a.icon{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important;background-color:var(--dca-white, var(--body-bg, #fff)) !important}.filebrowser .navigator-list .dz-drag-hover td a,.filebrowser .navigator-table .dz-drag-hover td a{color:var(--dca-primary, var(--primary, #0bf)) !important}.filebrowser .navigator-list.dz-drag-hover,.filebrowser .navigator-table.dz-drag-hover{position:relative}.filebrowser .navigator-list.dz-drag-hover .drag-hover-border,.filebrowser .navigator-table.dz-drag-hover .drag-hover-border{display:none !important}.filebrowser .navigator-list.dz-drag-hover td,.filebrowser .navigator-table.dz-drag-hover td{background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;box-sizing:border-box !important}.filebrowser .navigator-list .reset-hover td,.filebrowser .navigator-list.reset-hover td,.filebrowser .navigator-table .reset-hover td,.filebrowser .navigator-table.reset-hover td{background-color:var(--dca-white, var(--body-bg, #fff)) !important}.filebrowser .navigator-list .reset-hover .dz-drag-hover td,.filebrowser .navigator-list.reset-hover .dz-drag-hover td,.filebrowser .navigator-table .reset-hover .dz-drag-hover td,.filebrowser .navigator-table.reset-hover .dz-drag-hover td{background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}.navigator-top-nav{position:relative;clear:both;min-height:35px;padding:15px 20px;background:var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7));border-bottom:var(--dca-gray-lighter, var(--border-color, #ddd)) solid 1px}.navigator-top-nav .breadcrumbs-container-wrapper{display:table;width:100%}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container-wrapper{display:block}}.navigator-top-nav .breadcrumbs-container-inner{display:table;table-layout:fixed;width:100%}.navigator-top-nav .breadcrumbs-container-inner .filer-dropdown-container{display:table-cell;width:30px;height:35px;vertical-align:middle}.navigator-top-nav .breadcrumbs-container-inner .filer-dropdown-container span{line-height:35px;height:35px;vertical-align:middle}.navigator-top-nav .breadcrumbs-container{display:table-cell;vertical-align:middle}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container{position:static;margin-right:20px}}.navigator-top-nav .tools-container:before,.navigator-top-nav .tools-container:after{content:" ";display:table}.navigator-top-nav .tools-container:after{clear:both}.navigator-top-nav .tools-container{display:table-cell;vertical-align:middle;text-align:right;margin-top:2px}@media screen and (max-width: 720px){.navigator-top-nav .tools-container{display:inline;text-align:left}}.navigator-top-nav .nav-button{display:inline-block;color:var(--dca-gray, var(--body-quiet-color, #666));font-size:20px;line-height:34px;vertical-align:top;margin:0 10px}.navigator-top-nav .nav-button span{vertical-align:middle}.navigator-top-nav .nav-button-filter{position:relative;top:-1px}.navigator-top-nav .nav-button-dots{margin:0;padding:0 15px}.navigator-top-nav .separator{display:inline-block;position:relative;vertical-align:top;width:1px;height:34px;margin:0 5px}.navigator-top-nav .separator:before{content:"";display:block;position:absolute;top:-14px;bottom:-11px;overflow:hidden;width:1px;background-color:var(--dca-gray-lighter, var(--border-color, #ddd))}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper,.breadcrumb-min-width .breadcrumbs-container-wrapper,.breadcrumb-min-width .breadcrumbs-container,.breadcrumb-min-width .tools-container,.breadcrumb-min-width .filter-files-container,.breadcrumb-min-width .navigator-breadcrumbs,.breadcrumb-min-width .navigator-button-wrapper{display:inline-block;text-align:left}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper .actions-wrapper,.breadcrumb-min-width .breadcrumbs-container-wrapper .actions-wrapper,.breadcrumb-min-width .breadcrumbs-container .actions-wrapper,.breadcrumb-min-width .tools-container .actions-wrapper,.breadcrumb-min-width .filter-files-container .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs .actions-wrapper,.breadcrumb-min-width .navigator-button-wrapper .actions-wrapper{white-space:nowrap;margin-left:0;margin-top:10px}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .breadcrumbs-container-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .breadcrumbs-container .actions-wrapper li:first-child,.breadcrumb-min-width .tools-container .actions-wrapper li:first-child,.breadcrumb-min-width .filter-files-container .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-button-wrapper .actions-wrapper li:first-child{padding-left:0}.breadcrumb-min-width .navigator-button-wrapper{margin-top:10px}.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper{min-height:inherit}.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-container .fa-caret-down{vertical-align:text-top}.breadcrumb-min-width .breadcrumbs-container-inner .filer-dropdown-container{display:inline-block !important}.breadcrumb-min-width .navigator-tools{white-space:normal}.breadcrumb-min-width .filter-files-container{width:100%;margin-top:10px;z-index:auto}.breadcrumb-min-width .breadcrumbs-container{margin-right:0}.breadcrumb-min-width .navigator-breadcrumbs .icon{vertical-align:middle}.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper{float:left;width:calc(100% - 30px)}.navigator-tools:before,.navigator-tools:after{content:" ";display:table}.navigator-tools:after{clear:both}.navigator-tools{white-space:nowrap}@media screen and (max-width: 720px){.navigator-tools{display:inline}}.navigator-tools .actions-wrapper{display:inline-block;margin-bottom:0;margin-left:10px}.navigator-tools .actions-wrapper a,.navigator-tools .actions-wrapper a:hover{color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;cursor:not-allowed}@media screen and (max-width: 720px){.navigator-tools .actions-wrapper:before,.navigator-tools .actions-wrapper:after{content:" ";display:table}.navigator-tools .actions-wrapper:after{clear:both}.navigator-tools .actions-wrapper{float:none;margin-left:0}}.navigator-tools .actions-wrapper.action-selected a{color:var(--dca-gray, var(--body-quiet-color, #666)) !important;cursor:pointer}.navigator-tools .actions-wrapper.action-selected .actions-separated-list{display:inline-block}.navigator-tools .actions-wrapper+.filer-list-type-switcher-wrapper{border-left:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));margin-left:0}.navigator-tools .actions{display:none;float:right}@media screen and (max-width: 720px){.navigator-tools .actions:before,.navigator-tools .actions:after{content:" ";display:table}.navigator-tools .actions:after{clear:both}.navigator-tools .actions{float:none;margin-bottom:10px}}.navigator-tools .actions .all,.navigator-tools .actions .question,.navigator-tools .actions .clear,.navigator-tools .actions .action-counter{font-size:12px;line-height:34px;vertical-align:text-top}.navigator-tools .actions .action-counter,.navigator-tools .actions .all{color:var(--dca-gray-light, var(--body-quiet-color, #999))}.navigator-tools .actions .question,.navigator-tools .actions .clear{margin-left:10px;padding-left:10px;border-left:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.navigator-tools .filer-list-type-switcher-wrapper{display:inline-block;margin-left:10px}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container{float:none}.navigator-top-nav .navigator-tools{float:none}.navigator-top-nav .navigator-tools .separator:before{top:0;bottom:0}}.navigator-button-wrapper{display:inline-block;vertical-align:top;text-align:right;margin-bottom:0;margin-left:10px}@media screen and (max-width: 720px){.navigator-button-wrapper{display:block;float:none;text-align:left;margin-top:0;margin-left:0}}.navigator-button{margin-right:10px}.navigator-button,.navigator-button:visited,.navigator-button:link:visited,.navigator-button:link{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border:1px solid var(--dca-black, var(--body-fg, #000)) !important;background-clip:padding-box;-webkit-appearance:none}.navigator-button:focus,.navigator-button.focus,.navigator-button:hover,.navigator-button:visited:focus,.navigator-button:visited.focus,.navigator-button:visited:hover,.navigator-button:link:visited:focus,.navigator-button:link:visited.focus,.navigator-button:link:visited:hover,.navigator-button:link:focus,.navigator-button:link.focus,.navigator-button:link:hover{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:invert(0.05) !important;text-decoration:none !important}.navigator-button:active,.navigator-button.cms-btn-active,.navigator-button:visited:active,.navigator-button:visited.cms-btn-active,.navigator-button:link:visited:active,.navigator-button:link:visited.cms-btn-active,.navigator-button:link:active,.navigator-button:link.cms-btn-active{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}.navigator-button:active:hover,.navigator-button:active:focus,.navigator-button:active.focus,.navigator-button.cms-btn-active:hover,.navigator-button.cms-btn-active:focus,.navigator-button.cms-btn-active.focus,.navigator-button:visited:active:hover,.navigator-button:visited:active:focus,.navigator-button:visited:active.focus,.navigator-button:visited.cms-btn-active:hover,.navigator-button:visited.cms-btn-active:focus,.navigator-button:visited.cms-btn-active.focus,.navigator-button:link:visited:active:hover,.navigator-button:link:visited:active:focus,.navigator-button:link:visited:active.focus,.navigator-button:link:visited.cms-btn-active:hover,.navigator-button:link:visited.cms-btn-active:focus,.navigator-button:link:visited.cms-btn-active.focus,.navigator-button:link:active:hover,.navigator-button:link:active:focus,.navigator-button:link:active.focus,.navigator-button:link.cms-btn-active:hover,.navigator-button:link.cms-btn-active:focus,.navigator-button:link.cms-btn-active.focus{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}.navigator-button:active,.navigator-button.cms-btn-active,.navigator-button:visited:active,.navigator-button:visited.cms-btn-active,.navigator-button:link:visited:active,.navigator-button:link:visited.cms-btn-active,.navigator-button:link:active,.navigator-button:link.cms-btn-active{background-image:none !important}.navigator-button.cms-btn-disabled,.navigator-button.cms-btn-disabled:hover,.navigator-button.cms-btn-disabled:focus,.navigator-button.cms-btn-disabled.focus,.navigator-button.cms-btn-disabled:active,.navigator-button.cms-btn-disabled.cms-btn-active,.navigator-button[disabled],.navigator-button[disabled]:hover,.navigator-button[disabled]:focus,.navigator-button[disabled].focus,.navigator-button[disabled]:active,.navigator-button[disabled].cms-btn-active,.navigator-button:visited.cms-btn-disabled,.navigator-button:visited.cms-btn-disabled:hover,.navigator-button:visited.cms-btn-disabled:focus,.navigator-button:visited.cms-btn-disabled.focus,.navigator-button:visited.cms-btn-disabled:active,.navigator-button:visited.cms-btn-disabled.cms-btn-active,.navigator-button:visited[disabled],.navigator-button:visited[disabled]:hover,.navigator-button:visited[disabled]:focus,.navigator-button:visited[disabled].focus,.navigator-button:visited[disabled]:active,.navigator-button:visited[disabled].cms-btn-active,.navigator-button:link:visited.cms-btn-disabled,.navigator-button:link:visited.cms-btn-disabled:hover,.navigator-button:link:visited.cms-btn-disabled:focus,.navigator-button:link:visited.cms-btn-disabled.focus,.navigator-button:link:visited.cms-btn-disabled:active,.navigator-button:link:visited.cms-btn-disabled.cms-btn-active,.navigator-button:link:visited[disabled],.navigator-button:link:visited[disabled]:hover,.navigator-button:link:visited[disabled]:focus,.navigator-button:link:visited[disabled].focus,.navigator-button:link:visited[disabled]:active,.navigator-button:link:visited[disabled].cms-btn-active,.navigator-button:link.cms-btn-disabled,.navigator-button:link.cms-btn-disabled:hover,.navigator-button:link.cms-btn-disabled:focus,.navigator-button:link.cms-btn-disabled.focus,.navigator-button:link.cms-btn-disabled:active,.navigator-button:link.cms-btn-disabled.cms-btn-active,.navigator-button:link[disabled],.navigator-button:link[disabled]:hover,.navigator-button:link[disabled]:focus,.navigator-button:link[disabled].focus,.navigator-button:link[disabled]:active,.navigator-button:link[disabled].cms-btn-active{background-color:var(--default-button-bg) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}.navigator-button.cms-btn-disabled:before,.navigator-button.cms-btn-disabled:hover:before,.navigator-button.cms-btn-disabled:focus:before,.navigator-button.cms-btn-disabled.focus:before,.navigator-button.cms-btn-disabled:active:before,.navigator-button.cms-btn-disabled.cms-btn-active:before,.navigator-button[disabled]:before,.navigator-button[disabled]:hover:before,.navigator-button[disabled]:focus:before,.navigator-button[disabled].focus:before,.navigator-button[disabled]:active:before,.navigator-button[disabled].cms-btn-active:before,.navigator-button:visited.cms-btn-disabled:before,.navigator-button:visited.cms-btn-disabled:hover:before,.navigator-button:visited.cms-btn-disabled:focus:before,.navigator-button:visited.cms-btn-disabled.focus:before,.navigator-button:visited.cms-btn-disabled:active:before,.navigator-button:visited.cms-btn-disabled.cms-btn-active:before,.navigator-button:visited[disabled]:before,.navigator-button:visited[disabled]:hover:before,.navigator-button:visited[disabled]:focus:before,.navigator-button:visited[disabled].focus:before,.navigator-button:visited[disabled]:active:before,.navigator-button:visited[disabled].cms-btn-active:before,.navigator-button:link:visited.cms-btn-disabled:before,.navigator-button:link:visited.cms-btn-disabled:hover:before,.navigator-button:link:visited.cms-btn-disabled:focus:before,.navigator-button:link:visited.cms-btn-disabled.focus:before,.navigator-button:link:visited.cms-btn-disabled:active:before,.navigator-button:link:visited.cms-btn-disabled.cms-btn-active:before,.navigator-button:link:visited[disabled]:before,.navigator-button:link:visited[disabled]:hover:before,.navigator-button:link:visited[disabled]:focus:before,.navigator-button:link:visited[disabled].focus:before,.navigator-button:link:visited[disabled]:active:before,.navigator-button:link:visited[disabled].cms-btn-active:before,.navigator-button:link.cms-btn-disabled:before,.navigator-button:link.cms-btn-disabled:hover:before,.navigator-button:link.cms-btn-disabled:focus:before,.navigator-button:link.cms-btn-disabled.focus:before,.navigator-button:link.cms-btn-disabled:active:before,.navigator-button:link.cms-btn-disabled.cms-btn-active:before,.navigator-button:link[disabled]:before,.navigator-button:link[disabled]:hover:before,.navigator-button:link[disabled]:focus:before,.navigator-button:link[disabled].focus:before,.navigator-button:link[disabled]:active:before,.navigator-button:link[disabled].cms-btn-active:before{color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1)}.navigator-button,.navigator-button:visited,.navigator-button:link:visited,.navigator-button:link{display:inline-block;vertical-align:top;padding:10px 20px !important}.navigator-button .icon{position:relative;margin-right:3px}.navigator-button .fa-folder{top:0}.navigator-button.navigator-button-upload{margin-right:0}.upload-button-disabled{display:inline-block}.navigator-button+.filer-dropdown-menu{margin-top:-2px}.navigator{position:relative;overflow-x:auto;width:100%}.navigator form{margin:0;padding:0;box-shadow:none}.filer-dropdown-container{display:inline-block;position:relative;vertical-align:top}.filer-dropdown-container .fa-caret-down,.filer-dropdown-container .cms-icon-caret-down{font-size:14px}.filer-dropdown-container .filer-dropdown-menu,.filer-dropdown-container+.filer-dropdown-menu{display:none;right:0;left:auto;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-dropdown-container .filer-dropdown-menu>li>a,.filer-dropdown-container+.filer-dropdown-menu>li>a{display:block;color:var(--dca-primary, var(--primary, #0bf));font-weight:normal;white-space:normal;padding:12px 20px !important}@media screen and (min-width: 720px){.filer-dropdown-container .filer-dropdown-menu>li>a,.filer-dropdown-container+.filer-dropdown-menu>li>a{white-space:nowrap}}.filer-dropdown-container .filer-dropdown-menu label,.filer-dropdown-container+.filer-dropdown-menu label{display:block;line-height:20px !important;text-transform:none;width:auto;margin:5px 0 !important;padding:0 10px !important}.filer-dropdown-container .filer-dropdown-menu input,.filer-dropdown-container+.filer-dropdown-menu input{position:relative;top:4px;vertical-align:top;margin-right:5px}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes{width:0;min-height:50px;padding:15px;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes:before,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes:before{display:none}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close{position:absolute;top:10px;right:10px;color:var(--dca-gray, var(--body-quiet-color, #666));cursor:pointer}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close:hover,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close:hover{color:var(--dca-primary, var(--primary, #0bf))}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes p,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes p{color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;font-weight:normal;text-transform:uppercase;margin-bottom:5px}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes label,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes label{color:var(--dca-gray, var(--body-quiet-color, #666)) !important;font-weight:normal;padding:0 !important;margin-top:0 !important}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes label input,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes label input{margin-left:0}.filer-dropdown-container .filer-dropdown-menu a:hover,.filer-dropdown-container+.filer-dropdown-menu a:hover{color:var(--dca-white, var(--body-bg, #fff)) !important;background:var(--dca-primary, var(--primary, #0bf)) !important}.filer-dropdown-container.open .filer-dropdown-menu{display:block}.filer-dropdown-container.open .filer-dropdown-menu li{margin:0;padding:0;list-style-type:none}.filer-dropdown-container+.separator{margin-right:10px}.filer-dropdown-container-down>a,.filer-dropdown-container-down>a:link,.filer-dropdown-container-down>a:visited,.filer-dropdown-container-down>a:link:visited{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:20px;line-height:35px;height:35px;padding:0 10px}.filer-dropdown-container-down .filer-dropdown-menu{right:auto;left:-14px;margin-right:10px}.filer-dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;float:left;min-width:160px;margin:2px 0 0;margin-top:0 !important;padding:0;list-style:none;font-size:14px;text-align:left;background-color:var(--dca-white, var(--body-bg, #fff));border-radius:4px;background-clip:padding-box}.filer-dropdown-menu:before{position:absolute;top:-5px;left:35px;z-index:-1;content:"";width:10px;height:10px;margin-left:-5px;transform:rotate(45deg);background-color:var(--dca-white, var(--body-bg, #fff))}.filer-dropdown-menu.create-menu-dropdown:before{left:auto;right:17px}.navigator-breadcrumbs:before,.navigator-breadcrumbs:after{content:" ";display:table}.navigator-breadcrumbs:after{clear:both}.navigator-breadcrumbs{display:table-cell;vertical-align:middle;font-size:16px;white-space:nowrap;width:60px}.navigator-breadcrumbs>a{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important}.navigator-breadcrumbs .icon{color:var(--dca-gray-light, var(--body-quiet-color, #999));line-height:35px;height:35px;margin:0 5px}.navigator-breadcrumbs .icon:before{vertical-align:middle}.navigator-breadcrumbs li{list-style-type:none}.navigator-breadcrumbs-folder-name-wrapper{display:table-cell;overflow:hidden;font-size:16px;font-weight:bold;vertical-align:middle;white-space:nowrap}.navigator-breadcrumbs-folder-name{display:block;overflow:hidden;white-space:normal;line-height:35px;width:100%;height:35px}.navigator-breadcrumbs-folder-name-inner{display:block;position:relative;overflow:hidden;line-height:35px;height:35px;width:100%;text-overflow:ellipsis}.filer-navigator-breadcrumbs-dropdown-container{position:relative;float:left;vertical-align:middle;margin:0 7px 0 0}.filer-navigator-breadcrumbs-dropdown-container>a img{padding:3px 0}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown{left:-15px !important;min-width:200px;padding:0;margin-top:0;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li{padding:0}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li>a{color:var(--dca-primary, var(--primary, #0bf));padding:12px 20px 3px !important;border-bottom:solid 1px var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2))}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li>a:hover{color:var(--dca-white, var(--body-bg, #fff)) !important;background:var(--dca-primary, var(--primary, #0bf)) !important}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li:last-child>a{border-bottom:none}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown img{position:relative;top:-5px;vertical-align:top;margin:0 10px 0 0}.navigator-dropdown-arrow-up{position:relative;left:20px;overflow:hidden;width:20px;height:20px;margin-top:-20px;z-index:1001}.navigator-dropdown-arrow-up:after{content:"";position:absolute;top:15px;left:5px;width:10px;height:10px;background:#fff;transform:rotate(45deg);box-shadow:0 1px 10px rgba(0,0,0,.25)}.navigator-breadcrumbs-name-dropdown-wrapper{display:table;min-height:35px}.navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-menu{left:auto;right:-80px}.navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-menu:before{right:80px;left:auto}.navigator-breadcrumbs-name-dropdown-wrapper a{display:inline-block}.empty-filer-header-cell{display:table-cell;vertical-align:middle}.filebrowser .navigator-thumbnail-list{overflow:hidden}.filebrowser .navigator-thumbnail-list .navigator-list{border-top:0 !important}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header>*{display:inline-block;text-transform:uppercase;margin:0;padding:0;padding-left:10px}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header .navigator-checkbox{float:right;padding-right:20px;text-transform:initial;color:var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header .navigator-checkbox input[type=checkbox]{margin-left:5px;vertical-align:middle}.filebrowser .navigator-thumbnail-list .navigator-body:before,.filebrowser .navigator-thumbnail-list .navigator-body:after{content:" ";display:table}.filebrowser .navigator-thumbnail-list .navigator-body:after{clear:both}.filebrowser .navigator-thumbnail-list .navigator-body{padding:0 !important}.filebrowser .navigator-thumbnail-list .thumbnail-item{float:left;display:inline-block;padding:10px;width:calc(var(--thumbnail-size, 120px) + 5px);height:calc(var(--thumbnail-size, 120px) + 5px);border:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));margin:16px 12px;background-color:var(--dca-white, var(--body-bg, #fff));position:relative;overflow:hidden}.filebrowser .navigator-thumbnail-list .thumbnail-item .thumbnail-file-item-box{padding:10px;width:calc(var(--thumbnail-size, 120px) + 5px);height:calc(var(--thumbnail-size, 120px) + 5px);border:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));margin:16px 12px;background-color:var(--dca-white, var(--body-bg, #fff))}.filebrowser .navigator-thumbnail-list .thumbnail-item .thumbnail-file-item-box:hover{background-color:#f1faff}.filebrowser .navigator-thumbnail-list .thumbnail-item .navigator-checkbox{position:absolute;top:5px;left:5px}.filebrowser .navigator-thumbnail-list .thumbnail-item .navigator-checkbox input{margin:0;vertical-align:top}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon{height:50%;width:50%;margin:10px auto;margin-bottom:18px}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail a,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon a{display:block;height:100%;width:100%}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail img,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon img{width:100%;height:100%}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-name{background:rgba(0,0,0,0);text-align:center;word-break:break-word}.filebrowser .navigator-thumbnail-list .thumbnail-virtual-item{background-color:initial}.filebrowser .navigator-thumbnail-list .thumbnail-folder-item:hover{background-color:#f1faff}.filebrowser .navigator-thumbnail-list .thumbnail-file-item{float:none;width:calc(var(--thumbnail-size, 120px) + 27px);height:calc(var(--thumbnail-size, 120px) + 80px);border:0;padding:0;background-color:rgba(0,0,0,0)}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .thumbnail-file-item-box{float:none;margin:0;margin-bottom:5px}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .item-thumbnail{margin:0;height:100%;width:100%}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .item-name{position:relative;word-break:break-word}.insertlinkButton:before{content:"" !important}.insertlinkButton span{font-size:17px}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box,.popup.app-cmsplugin_filer_image .field-box.field-free_link,.popup.app-cmsplugin_filer_image .field-box.field-page_link,.popup.app-cmsplugin_filer_image .field-box.field-file_link{float:none !important;margin-right:0 !important;margin-top:20px !important}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box:first-child,.popup.app-cmsplugin_filer_image .field-box.field-free_link:first-child,.popup.app-cmsplugin_filer_image .field-box.field-page_link:first-child,.popup.app-cmsplugin_filer_image .field-box.field-file_link:first-child{margin-top:0 !important}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box input,.popup.app-cmsplugin_filer_image .field-box.field-free_link input,.popup.app-cmsplugin_filer_image .field-box.field-page_link input,.popup.app-cmsplugin_filer_image .field-box.field-file_link input{width:100% !important}.popup.app-cmsplugin_filer_image .form-row .field-box.field-crop,.popup.app-cmsplugin_filer_image .form-row .field-box.field-upscale{margin-top:30px}.popup.delete-confirmation .colM ul{margin-bottom:25px !important}.popup .image-info-detail{padding:0;padding-bottom:25px;margin-bottom:30px;box-shadow:none;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.popup.change-list.filebrowser #result_list tbody th,.popup.change-list.filebrowser #result_list tbody td{height:auto}.popup .filer-dropzone{padding:5px 20px}.popup form .form-row .filer-dropzone .filerFile{top:8px}.popup.filebrowser #container #content{margin:0 !important}.popup .navigator-button-wrapper{float:right}@media screen and (max-width: 720px){.popup .navigator-button-wrapper{float:none}}.popup .navigator-top-nav .tools-container{width:70%}.popup .navigator-top-nav .breadcrumbs-container{width:30%}@media screen and (max-width: 720px){.popup .navigator-top-nav .tools-container,.popup .navigator-top-nav .breadcrumbs-container{width:100%}}form .form-row[class*=file] .related-widget-wrapper-link,form .form-row[class*=folder] .related-widget-wrapper-link,form .form-row[class*=img] .related-widget-wrapper-link,form .form-row[class*=image] .related-widget-wrapper-link,form .form-row[class*=visual] .related-widget-wrapper-link{display:none}form .form-row .filer-widget+.related-widget-wrapper-link,form .form-row .filer-widget+*+.related-widget-wrapper-link{display:none}form .form-row .related-widget-wrapper:has(.filer-widget,.filer-dropzone){width:100%}form .form-row .filer-dropzone:before,form .form-row .filer-dropzone:after{content:" ";display:table}form .form-row .filer-dropzone:after{clear:both}form .form-row .filer-dropzone{position:relative;min-width:320px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:var(--dca-border-radius, 5px);background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));box-sizing:border-box !important}form .form-row .filer-dropzone .z-index-fix{position:absolute;top:0;right:0;bottom:0;left:0}form .form-row .filer-dropzone.dz-drag-hover{background-color:var(--dca-primary, var(--primary, #0bf));filter:brightness(1.5);border:solid 2px var(--dca-primary, var(--primary, #0bf)) !important}form .form-row .filer-dropzone.dz-drag-hover .z-index-fix{z-index:1}form .form-row .filer-dropzone.dz-drag-hover .dz-message{opacity:1;display:block !important;visibility:visible}form .form-row .filer-dropzone.dz-drag-hover .filerFile{display:none}form .form-row .filer-dropzone.dz-drag-hover .dz-message,form .form-row .filer-dropzone.dz-drag-hover .dz-message .icon{color:var(--dca-primary, var(--primary, #0bf)) !important}form .form-row .filer-dropzone.dz-started .fileUpload{display:none}form .form-row .filer-dropzone .dz-preview{width:100%;min-height:auto;margin-right:0;margin-bottom:0;margin-left:0;padding-bottom:10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}form .form-row .filer-dropzone .dz-preview.dz-error{position:relative}form .form-row .filer-dropzone .dz-preview.dz-error .dz-error-message{display:none}form .form-row .filer-dropzone .dz-preview.dz-error:hover .dz-error-message{display:block}form .form-row .filer-dropzone .dz-preview .dz-details{min-width:calc(100% - 80px);max-width:calc(100% - 80px);margin-top:7px;margin-left:40px;padding:0;opacity:1}form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename,form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename:hover,form .form-row .filer-dropzone .dz-preview .dz-details .dz-size{float:left;text-align:left}form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename span,form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename:hover span,form .form-row .filer-dropzone .dz-preview .dz-details .dz-size span{color:var(--dca-gray, var(--body-quiet-color, #666));border:0 !important;background-color:rgba(0,0,0,0) !important}form .form-row .filer-dropzone .dz-preview .dz-remove{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-trash' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E%0A");background-size:contain;display:inline-block;position:absolute;top:7px;right:25px;font:0/0 a;width:18px;height:18px}form .form-row .filer-dropzone .dz-preview .dz-error-message{top:65px;left:0;width:100%}form .form-row .filer-dropzone .dz-preview .dz-success-mark,form .form-row .filer-dropzone .dz-preview .dz-error-mark{top:5px;right:0;left:auto;margin-top:0}form .form-row .filer-dropzone .dz-preview .dz-success-mark:before,form .form-row .filer-dropzone .dz-preview .dz-error-mark:before{color:var(--dca-gray, var(--body-quiet-color, #666))}form .form-row .filer-dropzone .dz-preview .dz-success-mark svg,form .form-row .filer-dropzone .dz-preview .dz-error-mark svg{display:none}form .form-row .filer-dropzone .dz-preview .dz-success-mark{width:16px;height:16px;background-image:url("data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2370bf2b' d='M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A");background-size:contain}form .form-row .filer-dropzone .dz-preview .dz-error-mark{background-image:url("data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23dd4646' d='M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A");width:16px;height:16px;background-size:contain}form .form-row .filer-dropzone .dz-preview.dz-image-preview,form .form-row .filer-dropzone .dz-preview.dz-file-preview{background-color:rgba(0,0,0,0)}form .form-row .filer-dropzone .dz-preview.dz-image-preview .dz-image,form .form-row .filer-dropzone .dz-preview.dz-file-preview .dz-image{overflow:hidden;width:36px;height:36px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0}form .form-row .filer-dropzone .dz-preview.dz-image-preview .dz-image img,form .form-row .filer-dropzone .dz-preview.dz-file-preview .dz-image img{width:100%;height:auto}form .form-row .filer-dropzone .dz-preview .dz-progress{top:18px;left:0;width:calc(100% - 40px);height:10px;margin-left:40px}form .form-row .filer-dropzone .dz-message{float:right;color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));width:100%;margin:15px 0 0}form .form-row .filer-dropzone .icon{position:relative;top:3px;color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));font-size:24px;margin-right:10px}form .form-row .filer-dropzone .filerFile .related-lookup{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border:1px solid var(--dca-black, var(--body-fg, #000)) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile .related-lookup:focus,form .form-row .filer-dropzone .filerFile .related-lookup.focus,form .form-row .filer-dropzone .filerFile .related-lookup:hover{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:invert(0.05) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile .related-lookup:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile .related-lookup:active:hover,form .form-row .filer-dropzone .filerFile .related-lookup:active:focus,form .form-row .filer-dropzone .filerFile .related-lookup:active.focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active.focus{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile .related-lookup:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile .related-lookup[disabled],form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:hover,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:focus,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].focus,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:active,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].cms-btn-active{background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].focus:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:active:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].cms-btn-active:before{color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile .related-lookup{float:left !important;overflow:hidden;line-height:14px;width:auto !important;height:auto !important;padding:10px 20px !important;margin-top:24px;margin-left:10px;text-align:center !important;cursor:pointer}form .form-row .filer-dropzone .filerFile .related-lookup .cms-icon{color:var(--dca-white, var(--body-bg, #fff));font-size:17px;margin:0 10px 0 0;vertical-align:middle}form .form-row .filer-dropzone .filerFile .related-lookup:before{display:none}form .form-row .filer-dropzone .filerFile .related-lookup .choose-file,form .form-row .filer-dropzone .filerFile .related-lookup .replace-file,form .form-row .filer-dropzone .filerFile .related-lookup .edit-file{color:var(--dca-white, var(--body-bg, #fff));margin:0}form .form-row .filer-dropzone .filerFile .related-lookup .replace-file{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.edit{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled],form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change{float:right !important;padding:5px 0 !important;width:36px !important;height:36px !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:focus{background-color:var(--dca-white, var(--body-bg, #fff)) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change span{text-align:center;line-height:24px}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .cms-icon{color:var(--dca-gray-light, var(--button-fg, #999));margin-right:0 !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .choose-file{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .replace-file{display:block}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.lookup{display:block !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.edit{display:block}form .form-row .filer-dropzone .filerClearer{width:36px !important;height:36px !important;color:red}form .form-row .filer-dropzone .filerFile{position:absolute;top:9px;left:20px;width:calc(100% - 40px)}form .form-row .filer-dropzone .filerFile img[src*=nofile]{background-color:var(--dca-white, var(--body-bg, #fff))}form .form-row .filer-dropzone .filerFile span:not(:empty):not(.choose-file):not(.replace-file):not(.edit-file){overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 260px);height:80px;line-height:80px}form .form-row .filer-dropzone .filerFile img{width:80px;height:80px;margin-right:10px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0;vertical-align:top}form .form-row .filer-dropzone .filerFile img[src*=nofile]{box-sizing:border-box;margin-right:0;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0}form .form-row .filer-dropzone .filerFile a{box-sizing:border-box;padding-top:10px !important}form .form-row .filer-dropzone .filerFile span{display:inline-block;color:var(--dca-gray, var(--body-quiet-color, #666));font-weight:normal;margin-bottom:6px;text-align:left}form .form-row .filer-dropzone .filerFile span:empty+.related-lookup{float:none !important;margin-left:0 !important}form .form-row .filer-dropzone .filerFile a.filerClearer{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile a.filerClearer:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.focus,form .form-row .filer-dropzone .filerFile a.filerClearer:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active:hover,form .form-row .filer-dropzone .filerFile a.filerClearer:active:focus,form .form-row .filer-dropzone .filerFile a.filerClearer:active.focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled],form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:hover,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:focus,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].focus,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:active,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:hover:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:active:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile a.filerClearer{float:right;padding:5px 0 !important;margin:24px 0 0 10px;width:36px;height:36px;text-align:center;cursor:pointer}form .form-row .filer-dropzone .filerFile a.filerClearer span:before{color:red !important}form .form-row .filer-dropzone .filerFile a.filerClearer span{text-align:center;line-height:24px}form .form-row .filer-dropzone.filer-dropzone-mobile .filerFile{text-align:center}form .form-row .filer-dropzone.filer-dropzone-mobile .dz-message{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-top:75px}form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile{text-align:center}@media screen and (max-width: 810px){form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector .description_text{text-overflow:ellipsis;width:calc(100% - 250px);overflow:hidden}}form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector>span:not(.choose-file):not(.replace-file):not(.edit-file),form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector .dz-name{width:calc(100% - 250px)}form .form-row .filer-dropzone.filer-dropzone-folder .filerFile{top:8px}form .form-row .filer-dropzone.filer-dropzone-folder .filerFile #id_folder_description_txt{float:left}@media(max-width: 767px){form .form-row .filer-dropzone{flex-grow:1}}.filer-dropzone{min-height:100px !important}.filer-dropzone .dz-upload{height:5px;background-color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone .dz-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 145px)}.filer-dropzone .dz-thumbnail{display:inline-block;overflow:hidden;vertical-align:top;width:80px;height:80px;margin-right:10px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:3px;background:var(--dca-white, var(--body-bg, #fff)) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%232980b9' d='M5 2c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V8l-6-6z'/%3E%3Cpath fill='%233498db' d='M5 1c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V7l-6-6z'/%3E%3Cpath fill='%232980b9' d='m21 7-6-6v4c0 1.1.895 2 2 2z'/%3E%3C/svg%3E");background-size:contain}.filer-dropzone .dz-thumbnail img{background:var(--dca-white, var(--body-bg, #fff))}.filer-dropzone .dz-thumbnail img[src=""],.filer-dropzone .dz-thumbnail img:not([src]){width:104%;height:104%;margin:-2%}.filer-dropzone-info-message{position:fixed;bottom:35px;left:50%;z-index:2;text-align:center;width:270px;max-height:300px;overflow-y:auto;margin:-50px 0 0 -150px;padding:15px 15px 0;border-radius:var(--dca-btn-radius, 3px);background:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.filer-dropzone-info-message .icon{font-size:35px;color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone-info-message .text{margin:5px 0 10px}.filer-dropzone-upload-info{margin-top:10px}.filer-dropzone-upload-info .filer-dropzone-file-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.filer-dropzone-upload-info:empty{margin-top:0}.filer-dropzone-progress{height:5px;margin-top:5px;background-color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone-upload-welcome .folder{color:var(--dca-primary, var(--primary, #0bf));padding:10px 0 0;margin:0 -15px;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.filer-dropzone-upload-welcome .folder img,.filer-dropzone-upload-welcome .folder span{vertical-align:middle}.filer-dropzone-upload-welcome .folder img{margin-right:5px}.filer-dropzone-upload-welcome .folder .folder-inner{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 10px}.filer-dropzone-cancel{padding-top:10px;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));margin:15px -15px 10px}.filer-dropzone-cancel a{font-size:12px;color:var(--dca-gray, var(--body-quiet-color, #666)) !important}.filer-dropzone-upload-success,.filer-dropzone-upload-canceled{margin:0 -15px 10px}.filer-dropzone-upload-count{padding-bottom:10px;margin:10px -15px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.filer-tooltip-wrapper{position:relative}.filer-tooltip{position:absolute;left:-30px;right:-30px;color:var(--dca-gray, var(--body-quiet-color, #666));text-align:center;font-size:12px !important;line-height:15px !important;white-space:normal;margin-top:5px;padding:10px;background-color:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 10px rgba(0,0,0,.25);border-radius:5px;z-index:10;cursor:default}.filer-tooltip:before{position:absolute;top:-3px;left:50%;z-index:-1;content:"";width:9px;height:9px;margin-left:-5px;transform:rotate(45deg);background-color:var(--dca-white, var(--body-bg, #fff))}.disabled-btn-tooltip{display:none;outline:none}@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.filer-dropzone,.filer-dropzone *{box-sizing:border-box}.filer-dropzone{min-height:150px;padding:20px 20px;border:2px solid rgba(0,0,0,.3);background:#fff}.filer-dropzone.dz-clickable{cursor:pointer}.filer-dropzone.dz-clickable *{cursor:default}.filer-dropzone.dz-clickable .dz-message,.filer-dropzone.dz-clickable .dz-message *{cursor:pointer}.filer-dropzone.dz-drag-hover{border-style:solid}.filer-dropzone.dz-drag-hover .dz-message{opacity:.5}.filer-dropzone .dz-message{text-align:center;margin:2em 0}.filer-dropzone .dz-preview{display:inline-block;position:relative;vertical-align:top;min-height:100px;margin:16px}.filer-dropzone .dz-preview:hover{z-index:1000}.filer-dropzone .dz-preview:hover .dz-details{opacity:1}.filer-dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:var(--dca-gray-light, var(--body-quiet-color, #999));background:linear-gradient(to bottom, var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)), var(--dca-gray-lighter, var(--border-color, #ddd)))}.filer-dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.filer-dropzone .dz-preview.dz-image-preview{background:#fff}.filer-dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.filer-dropzone .dz-preview .dz-remove{display:block;font-size:14px;text-align:center;border:none;cursor:pointer}.filer-dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.filer-dropzone .dz-preview:hover .dz-details{opacity:1}.filer-dropzone .dz-preview .dz-details{position:absolute;top:0;left:0;z-index:20;color:rgba(0,0,0,.9);font-size:13px;line-height:150%;text-align:center;min-width:100%;max-width:100%;padding:2em 1em;opacity:0}.filer-dropzone .dz-preview .dz-details .dz-size{font-size:16px;margin-bottom:1em}.filer-dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.filer-dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:hsla(0,0%,100%,.8)}.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid rgba(0,0,0,0)}.filer-dropzone .dz-preview .dz-details .dz-filename span,.filer-dropzone .dz-preview .dz-details .dz-size span{padding:0 .4em;border-radius:3px;background-color:hsla(0,0%,100%,.4)}.filer-dropzone .dz-preview:hover .dz-image img{transform:scale(1.05, 1.05);filter:blur(8px)}.filer-dropzone .dz-preview .dz-image{display:block;position:relative;overflow:hidden;z-index:10;width:120px;height:120px;border-radius:20px}.filer-dropzone .dz-preview .dz-image img{display:block}.filer-dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.filer-dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.filer-dropzone .dz-preview .dz-success-mark,.filer-dropzone .dz-preview .dz-error-mark{display:block;position:absolute;top:50%;left:50%;z-index:500;margin-top:-27px;margin-left:-27px;pointer-events:none;opacity:0}.filer-dropzone .dz-preview .dz-success-mark svg,.filer-dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.filer-dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.filer-dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.filer-dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.filer-dropzone .dz-preview .dz-progress{position:absolute;top:50%;left:50%;overflow:hidden;z-index:1000;width:80px;height:16px;margin-top:-8px;margin-left:-40px;border-radius:8px;pointer-events:none;opacity:1;background:hsla(0,0%,100%,.9)}.filer-dropzone .dz-preview .dz-progress .dz-upload{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--dca-gray-darkest, var(--body-fg, #333));background:linear-gradient(to bottom, var(--dca-gray, var(--body-quiet-color, #666)), var(--dca-gray-darkest, var(--body-fg, #333)));transition:width 300ms ease-in-out}.filer-dropzone .dz-preview.dz-error .dz-error-message{display:block}.filer-dropzone .dz-preview.dz-error:hover .dz-error-message{pointer-events:auto;opacity:1}.filer-dropzone .dz-preview .dz-error-message{display:block;display:none;position:absolute;top:130px;left:-10px;z-index:1000;color:var(--dca-white, var(--body-bg, #fff));font-size:13px;width:140px;padding:.5em 1.2em;border-radius:8px;pointer-events:none;opacity:0;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);transition:opacity .3s ease}.filer-dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #be2626;border-left:6px solid rgba(0,0,0,0)} \ No newline at end of file + */html,body{min-width:320px;height:100% !important}.text-left{text-align:left}.text-right{text-align:right}.clearfix:after{content:"";display:table;clear:both}.related-widget-wrapper{float:none !important}.related-lookup.hidden{display:none !important}.tiny{font-size:12px !important;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important}.nav-pages{position:relative;font-size:12px;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;padding-left:10px;padding-right:20px;padding-top:15px;padding-bottom:15px;box-sizing:border-box;background:var(--dca-white, var(--body-bg, #fff))}.nav-pages span{font-size:12px;color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important}.nav-pages .actions{float:right}#id_upload_button:before{display:none}#content #content-main{margin-top:0}.filebrowser.cms-admin-sideframe #container .breadcrumbs+#content,.filebrowser.cms-admin-sideframe #container .breadcrumbs+.messagelist+#content{margin-left:0 !important;margin-right:0 !important}.filebrowser.cms-admin-sideframe #container .breadcrumbs{left:0 !important;padding-left:20px !important}.filebrowser #container{min-width:auto}.filebrowser #container #content{padding:0;box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.filebrowser #container .breadcrumbs+#content,.filebrowser #container .breadcrumbs+.messagelist+#content{margin-left:3% !important}.filebrowser h1.folder_header{position:relative;top:6px}.filebrowser h2{display:none}.filebrowser #content-main{background-color:var(--dca-white, var(--body-bg, #fff))}.filer-widget{width:100%}.field-file,.field-sha1{word-wrap:break-word;word-break:break-all}.well.img-preview{display:none;margin-top:0}.img-wrapper{width:180px;height:180px}.file-duplicates{clear:both;padding:20px 0 0}form .cancel-link{height:auto !important;line-height:inherit !important;padding:10px 15px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.hidden{display:none !important}.filer-info-bar{min-height:15px;margin:0 0 2px !important;padding:15px 20px;box-shadow:0 0 10px -2px rgba(0,0,0,.2);background-color:var(--dca-white, var(--body-bg, #fff))}.navigator .actions span.all,.navigator .actions span.clear,.navigator .actions span.question{font-size:13px;margin:0 .5em;display:none}#all-items-action-toggle{display:none !important}.image-info{position:relative;float:right;box-sizing:border-box;width:28%;margin-top:0;border:0;border-radius:3px;background:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.image-info .image-details,.image-info .actions-list{margin:0;padding:0}.image-info .image-details.image-details,.image-info .actions-list.image-details{margin:10px 0;padding:0 10px}.image-info .image-details li,.image-info .actions-list li{list-style-type:none}.image-info .image-details a,.image-info .actions-list a{cursor:pointer}.image-info.image-info-detail:before,.image-info.image-info-detail:after{content:" ";display:table}.image-info.image-info-detail:after{clear:both}.image-info.image-info-detail{position:static;float:none;width:100%;margin-bottom:20px;padding:25px;border-radius:0}.image-info.image-info-detail+#content-main .object-tools{margin-top:20px;margin-right:20px;background-color:rgba(0,0,0,0)}.image-info.image-info-detail+#content-main .object-tools:before{display:none}.image-info.image-info-detail .image-details-left{float:left}.image-info.image-info-detail .image-details-right{float:left;margin-left:50px}.image-info.image-info-detail .image-details,.image-info.image-info-detail .actions-list{margin-top:0;border:0 !important}.image-info.image-info-detail .image-details.image-details,.image-info.image-info-detail .actions-list.image-details{margin-top:20px;margin-bottom:15px;padding:0}.image-info.image-info-detail .image-details dt,.image-info.image-info-detail .actions-list dt{float:left;color:var(--dca-gray-light, var(--body-quiet-color, #999));font-size:13px;line-height:1rem !important;font-weight:normal;margin-top:0}.image-info.image-info-detail .image-details dd,.image-info.image-info-detail .actions-list dd{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:13px;line-height:16px !important;padding-left:80px;margin-bottom:5px}.image-info.image-info-detail .image-details .text,.image-info.image-info-detail .actions-list .text{font-size:13px;margin-right:15px}.image-info.image-info-detail .image-details .text strong,.image-info.image-info-detail .actions-list .text strong{font-size:13px}.image-info.image-info-detail .image-details li,.image-info.image-info-detail .actions-list li{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:13px !important;font-weight:normal !important;padding:1px 0 !important;border:0 !important}.image-info.image-info-detail .image-details a,.image-info.image-info-detail .actions-list a{padding:0}.image-info.image-info-detail .image-info-title{overflow:hidden;color:var(--dca-gray, var(--body-quiet-color, #666));white-space:nowrap;text-overflow:ellipsis;padding:0 0 5px}.image-info.image-info-detail .image-info-title .icon{float:left;margin-right:5px}.image-info.image-info-detail .image-preview-container{text-align:left;margin:20px 0 0;padding:0}.image-info.image-info-detail .image-preview-container>img{margin-bottom:15px}.image-info.image-info-detail .actions-list .icon{font-size:16px}.image-info.image-info-detail .actions-list .icon:last-child{float:none}@media screen and (max-width: 720px){.image-info{float:none;width:100%}.image-info.image-info-detail .image-details-left,.image-info.image-info-detail .image-details-right{float:none;margin-left:0}}.image-info-close{position:absolute;top:-10px;right:-7px;font-size:20px;cursor:pointer}.image-info-title{padding:5px 10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.image-info-title a{margin-left:5px}.image-preview-container{text-align:center;margin:10px 0;padding:0 10px}.image-preview-container .image-preview{display:inline-block;position:relative;margin-bottom:15px;outline:1px solid var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));background-image:url("data:image/gif;base64,R0lGODlhCAAIAKECAOPj4/z8/P///////yH5BAEKAAIALAAAAAAIAAgAAAINhBEZh8q6DoTPSWvoKQA7")}.image-preview-container .image-preview img{display:block}.image-preview-container .image-preview-field{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.image-preview-container .image-preview-circle{position:relative;z-index:1;width:26px;height:26px;border:solid 2px red;margin:-13px;border-radius:30px;cursor:move;background:hsla(0,0%,100%,.5)}.image-preview-container audio,.image-preview-container video{margin-bottom:15px}.image-preview-container audio:focus,.image-preview-container video:focus{outline:none}.button-group .button{margin-right:10px;padding:10px 15px}.actions-list-dropdown a{display:block;padding:5px 10px}.actions-list-dropdown .caret-down{display:inline-block}.actions-list-dropdown .caret-right{display:none}.actions-list-dropdown.js-collapsed{border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list-dropdown.js-collapsed .caret-down{display:none}.actions-list-dropdown.js-collapsed .caret-right{display:inline-block}.actions-list{border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list:last-child{border-top:none}.actions-list:last-child a{border-bottom:none}.actions-list a{display:block;font-size:20px;padding:5px 10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.actions-list .icon:first-child{width:20px}.actions-list .icon:last-child{float:right;margin-top:3px}.actions-separated-list{display:inline-block;margin:0;padding-left:0}@media screen and (max-width: 720px){.actions-separated-list{float:left;margin-left:0}}.actions-separated-list li{display:inline-block;line-height:34px;vertical-align:middle;padding:0 10px;list-style:none}@media screen and (max-width: 720px){.actions-separated-list li:first-child{padding-left:0}}.actions-separated-list li span{vertical-align:middle}.actions-separated-list li a{color:var(--dca-gray, var(--body-quiet-color, #666))}.actions-separated-list span:before{font-size:18px}.search-is-focused .filter-files-container{position:static}.search-is-focused .filter-filers-container-inner{position:absolute;top:0;left:0;right:0}@media screen and (max-width: 720px){.search-is-focused .filter-filers-container-inner{position:static}}.search-is-focused .breadcrumbs-container{position:relative}.search-is-focused.breadcrumb-min-width .filter-filers-container-inner{position:static}.filter-files-container:before,.filter-files-container:after{content:" ";display:table}.filter-files-container:after{clear:both}.filter-files-container{display:table-cell;vertical-align:middle;position:relative;width:245px;margin:0;padding:0;background:none;box-shadow:none;z-index:1000}@media screen and (max-width: 720px){.filter-files-container{display:block;width:auto;margin-right:0;margin-top:10px}.filter-files-container .filter-files-button{float:none}}.filter-files-container .filer-dropdown-container{position:absolute;top:0;right:0}.filter-files-container .filer-dropdown-container>a,.filter-files-container .filer-dropdown-container>a:visited,.filter-files-container .filer-dropdown-container>a:link:visited,.filter-files-container .filer-dropdown-container>a:link{display:inline-block;line-height:34px;text-align:center;width:34px;height:34px;padding:0}.filter-files-container .filer-dropdown-container.open+.filer-dropdown-menu-checkboxes{display:block;width:calc(100% - 30px)}.filter-files-container .filer-dropdown-container.open+.filer-dropdown-menu-checkboxes li{margin:0;padding:0;list-style-type:none}.filter-files-container .filter-search-wrapper{position:relative;float:left;text-align:right;width:calc(100% - 43px);margin-right:5px}@media screen and (max-width: 720px){.filter-files-container .filter-search-wrapper{float:left}}.filter-files-container .filter-search-wrapper .filer-dropdown-container span{line-height:34px !important;height:34px !important}.filter-files-container .filter-files-button{float:right;text-align:center;white-space:nowrap;height:35px;margin:0;padding:8px !important}.filter-files-container .filter-files-button .icon{position:relative;left:2px;font-size:16px !important;vertical-align:top}.filter-files-container .filter-files-field{color:var(--dca-gray-darkest, var(--body-fg, #333));font-size:12px !important;line-height:35px;font-weight:normal;box-sizing:border-box;min-width:200px !important;height:35px;margin:0;padding:0 35px 0 10px !important;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:max-width 200ms}.filter-files-container .filter-files-field::-ms-clear{display:none}.filter-files-container .filer-dropdown-menu{margin-top:0 !important;margin-right:-1px !important}.filter-files-cancel{margin:5px 20px}body.dz-drag-hover .drag-hover-border{display:none !important}body.dz-drag-hover .navigator-table tbody td,body.dz-drag-hover .navigator-table tbody .unfiled td{background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}body.reset-hover td{background-color:var(--dca-white, var(--body-bg, #fff)) !important}.drag-hover-border{position:fixed;border-top:solid 2px var(--dca-primary, var(--primary, #0bf));border-bottom:solid 2px var(--dca-primary, var(--primary, #0bf));pointer-events:none;z-index:100;display:none}.thumbnail-drag-hover-border{border:solid 2px var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-list,.filebrowser .navigator-table{width:100%;margin:0;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd)) !important;border-collapse:collapse !important}.filebrowser .navigator-list .navigator-header,.filebrowser .navigator-list thead th,.filebrowser .navigator-list tbody td,.filebrowser .navigator-table .navigator-header,.filebrowser .navigator-table thead th,.filebrowser .navigator-table tbody td{text-align:left;font-weight:normal;vertical-align:middle;padding:5px !important;border-left:0 !important;border-bottom:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));border-top:1px solid rgba(0,0,0,0);background:none !important}.filebrowser .navigator-list tbody tr.selected .action-button span,.filebrowser .navigator-table tbody tr.selected .action-button span{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important}.filebrowser .navigator-list .navigator-body,.filebrowser .navigator-list .unfiled td,.filebrowser .navigator-table .navigator-body,.filebrowser .navigator-table .unfiled td{padding:12px 5px !important;background-color:var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7)) !important}.filebrowser .navigator-list .navigator-body a,.filebrowser .navigator-list .navigator-body a:hover,.filebrowser .navigator-list .unfiled td a,.filebrowser .navigator-list .unfiled td a:hover,.filebrowser .navigator-table .navigator-body a,.filebrowser .navigator-table .navigator-body a:hover,.filebrowser .navigator-table .unfiled td a,.filebrowser .navigator-table .unfiled td a:hover{color:var(--dca-gray, var(--body-quiet-color, #666)) !important}.filebrowser .navigator-list .column-checkbox,.filebrowser .navigator-table .column-checkbox{text-align:center;width:20px;padding-left:20px !important}.filebrowser .navigator-list .column-checkbox input,.filebrowser .navigator-table .column-checkbox input{vertical-align:middle;margin:0}.filebrowser .navigator-list .column-name a,.filebrowser .navigator-table .column-name a{color:var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-list .column-icon,.filebrowser .navigator-table .column-icon{width:50px;padding-top:0 !important;padding-bottom:0 !important}.filebrowser .navigator-list .column-action,.filebrowser .navigator-table .column-action{text-align:center;width:90px;white-space:nowrap;padding-right:20px !important}.filebrowser .navigator-list .column-action a,.filebrowser .navigator-table .column-action a{font-size:16px !important;margin:0}.filebrowser .navigator-list .column-action .action-button,.filebrowser .navigator-table .column-action .action-button{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}.filebrowser .navigator-list .column-action .action-button:focus,.filebrowser .navigator-list .column-action .action-button.focus,.filebrowser .navigator-list .column-action .action-button:hover,.filebrowser .navigator-table .column-action .action-button:focus,.filebrowser .navigator-table .column-action .action-button.focus,.filebrowser .navigator-table .column-action .action-button:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}.filebrowser .navigator-list .column-action .action-button:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-active,.filebrowser .navigator-table .column-action .action-button:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}.filebrowser .navigator-list .column-action .action-button:active:hover,.filebrowser .navigator-list .column-action .action-button:active:focus,.filebrowser .navigator-list .column-action .action-button:active.focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-active:hover,.filebrowser .navigator-list .column-action .action-button.cms-btn-active:focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-active.focus,.filebrowser .navigator-table .column-action .action-button:active:hover,.filebrowser .navigator-table .column-action .action-button:active:focus,.filebrowser .navigator-table .column-action .action-button:active.focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-active:hover,.filebrowser .navigator-table .column-action .action-button.cms-btn-active:focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}.filebrowser .navigator-list .column-action .action-button:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-active,.filebrowser .navigator-table .column-action .action-button:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-active{background-image:none !important}.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:hover,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.focus,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:active,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.cms-btn-active,.filebrowser .navigator-list .column-action .action-button[disabled],.filebrowser .navigator-list .column-action .action-button[disabled]:hover,.filebrowser .navigator-list .column-action .action-button[disabled]:focus,.filebrowser .navigator-list .column-action .action-button[disabled].focus,.filebrowser .navigator-list .column-action .action-button[disabled]:active,.filebrowser .navigator-list .column-action .action-button[disabled].cms-btn-active,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:hover,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.focus,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:active,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.cms-btn-active,.filebrowser .navigator-table .column-action .action-button[disabled],.filebrowser .navigator-table .column-action .action-button[disabled]:hover,.filebrowser .navigator-table .column-action .action-button[disabled]:focus,.filebrowser .navigator-table .column-action .action-button[disabled].focus,.filebrowser .navigator-table .column-action .action-button[disabled]:active,.filebrowser .navigator-table .column-action .action-button[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:hover:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:focus:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.focus:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled:active:before,.filebrowser .navigator-list .column-action .action-button.cms-btn-disabled.cms-btn-active:before,.filebrowser .navigator-list .column-action .action-button[disabled]:before,.filebrowser .navigator-list .column-action .action-button[disabled]:hover:before,.filebrowser .navigator-list .column-action .action-button[disabled]:focus:before,.filebrowser .navigator-list .column-action .action-button[disabled].focus:before,.filebrowser .navigator-list .column-action .action-button[disabled]:active:before,.filebrowser .navigator-list .column-action .action-button[disabled].cms-btn-active:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:hover:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:focus:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.focus:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled:active:before,.filebrowser .navigator-table .column-action .action-button.cms-btn-disabled.cms-btn-active:before,.filebrowser .navigator-table .column-action .action-button[disabled]:before,.filebrowser .navigator-table .column-action .action-button[disabled]:hover:before,.filebrowser .navigator-table .column-action .action-button[disabled]:focus:before,.filebrowser .navigator-table .column-action .action-button[disabled].focus:before,.filebrowser .navigator-table .column-action .action-button[disabled]:active:before,.filebrowser .navigator-table .column-action .action-button[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}.filebrowser .navigator-list .column-action .action-button,.filebrowser .navigator-table .column-action .action-button{margin:3px;padding:2px 6px 8px !important}.filebrowser .navigator-list .column-action .action-button span,.filebrowser .navigator-table .column-action .action-button span{font-size:17px;line-height:33px;vertical-align:middle}.filebrowser .navigator-list .no-files,.filebrowser .navigator-table .no-files{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:14px;text-align:center;padding:40px 0 !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}.filebrowser .navigator-list .no-files span,.filebrowser .navigator-table .no-files span{font-size:20px;margin-right:10px}.filebrowser .navigator-list .no-files span:before,.filebrowser .navigator-table .no-files span:before{vertical-align:sub}.filebrowser .navigator-list .dz-drag-hover td,.filebrowser .navigator-table .dz-drag-hover td{position:relative;background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;box-sizing:border-box !important}.filebrowser .navigator-list .dz-drag-hover td a.icon,.filebrowser .navigator-table .dz-drag-hover td a.icon{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important;background-color:var(--dca-white, var(--body-bg, #fff)) !important}.filebrowser .navigator-list .dz-drag-hover td a,.filebrowser .navigator-table .dz-drag-hover td a{color:var(--dca-primary, var(--primary, #0bf)) !important}.filebrowser .navigator-list.dz-drag-hover,.filebrowser .navigator-table.dz-drag-hover{position:relative}.filebrowser .navigator-list.dz-drag-hover .drag-hover-border,.filebrowser .navigator-table.dz-drag-hover .drag-hover-border{display:none !important}.filebrowser .navigator-list.dz-drag-hover td,.filebrowser .navigator-table.dz-drag-hover td{background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;box-sizing:border-box !important}.filebrowser .navigator-list .reset-hover td,.filebrowser .navigator-list.reset-hover td,.filebrowser .navigator-table .reset-hover td,.filebrowser .navigator-table.reset-hover td{background-color:var(--dca-white, var(--body-bg, #fff)) !important}.filebrowser .navigator-list .reset-hover .dz-drag-hover td,.filebrowser .navigator-list.reset-hover .dz-drag-hover td,.filebrowser .navigator-table .reset-hover .dz-drag-hover td,.filebrowser .navigator-table.reset-hover .dz-drag-hover td{background:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important}.navigator-top-nav{position:relative;clear:both;min-height:35px;padding:15px 20px;background:var(--dca-gray-super-lightest, var(--darkened-bg, #f7f7f7));border-bottom:var(--dca-gray-lighter, var(--border-color, #ddd)) solid 1px}.navigator-top-nav .breadcrumbs-container-wrapper{display:table;width:100%}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container-wrapper{display:block}}.navigator-top-nav .breadcrumbs-container-inner{display:table;table-layout:fixed;width:100%}.navigator-top-nav .breadcrumbs-container-inner .filer-dropdown-container{display:table-cell;width:30px;height:35px;vertical-align:middle}.navigator-top-nav .breadcrumbs-container-inner .filer-dropdown-container span{line-height:35px;height:35px;vertical-align:middle}.navigator-top-nav .breadcrumbs-container{display:table-cell;vertical-align:middle}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container{position:static;margin-right:20px}}.navigator-top-nav .tools-container:before,.navigator-top-nav .tools-container:after{content:" ";display:table}.navigator-top-nav .tools-container:after{clear:both}.navigator-top-nav .tools-container{display:table-cell;vertical-align:middle;text-align:right;margin-top:2px}@media screen and (max-width: 720px){.navigator-top-nav .tools-container{display:inline;text-align:left}}.navigator-top-nav .nav-button{display:inline-block;color:var(--dca-gray, var(--body-quiet-color, #666));font-size:20px;line-height:34px;vertical-align:top;margin:0 10px}.navigator-top-nav .nav-button span{vertical-align:middle}.navigator-top-nav .nav-button-filter{position:relative;top:-1px}.navigator-top-nav .nav-button-dots{margin:0;padding:0 15px}.navigator-top-nav .separator{display:inline-block;position:relative;vertical-align:top;width:1px;height:34px;margin:0 5px}.navigator-top-nav .separator:before{content:"";display:block;position:absolute;top:-14px;bottom:-11px;overflow:hidden;width:1px;background-color:var(--dca-gray-lighter, var(--border-color, #ddd))}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper,.breadcrumb-min-width .breadcrumbs-container-wrapper,.breadcrumb-min-width .breadcrumbs-container,.breadcrumb-min-width .tools-container,.breadcrumb-min-width .filter-files-container,.breadcrumb-min-width .navigator-breadcrumbs,.breadcrumb-min-width .navigator-button-wrapper{display:inline-block;text-align:left}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper .actions-wrapper,.breadcrumb-min-width .breadcrumbs-container-wrapper .actions-wrapper,.breadcrumb-min-width .breadcrumbs-container .actions-wrapper,.breadcrumb-min-width .tools-container .actions-wrapper,.breadcrumb-min-width .filter-files-container .actions-wrapper,.breadcrumb-min-width .navigator-breadcrumbs .actions-wrapper,.breadcrumb-min-width .navigator-button-wrapper .actions-wrapper{white-space:nowrap;margin-left:0;margin-top:10px}.breadcrumb-min-width .filer-navigator-breadcrumbs-dropdown-container .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .breadcrumbs-container-wrapper .actions-wrapper li:first-child,.breadcrumb-min-width .breadcrumbs-container .actions-wrapper li:first-child,.breadcrumb-min-width .tools-container .actions-wrapper li:first-child,.breadcrumb-min-width .filter-files-container .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-breadcrumbs .actions-wrapper li:first-child,.breadcrumb-min-width .navigator-button-wrapper .actions-wrapper li:first-child{padding-left:0}.breadcrumb-min-width .navigator-button-wrapper{margin-top:10px}.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper{min-height:inherit}.breadcrumb-min-width .navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-container .fa-caret-down{vertical-align:text-top}.breadcrumb-min-width .breadcrumbs-container-inner .filer-dropdown-container{display:inline-block !important}.breadcrumb-min-width .navigator-tools{white-space:normal}.breadcrumb-min-width .filter-files-container{width:100%;margin-top:10px;z-index:auto}.breadcrumb-min-width .breadcrumbs-container{margin-right:0}.breadcrumb-min-width .navigator-breadcrumbs .icon{vertical-align:middle}.breadcrumb-min-width .navigator-breadcrumbs-folder-name-wrapper{float:left;width:calc(100% - 30px)}.navigator-tools:before,.navigator-tools:after{content:" ";display:table}.navigator-tools:after{clear:both}.navigator-tools{white-space:nowrap}@media screen and (max-width: 720px){.navigator-tools{display:inline}}.navigator-tools .actions-wrapper{display:inline-block;margin-bottom:0;margin-left:10px}.navigator-tools .actions-wrapper a,.navigator-tools .actions-wrapper a:hover{color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;cursor:not-allowed}@media screen and (max-width: 720px){.navigator-tools .actions-wrapper:before,.navigator-tools .actions-wrapper:after{content:" ";display:table}.navigator-tools .actions-wrapper:after{clear:both}.navigator-tools .actions-wrapper{float:none;margin-left:0}}.navigator-tools .actions-wrapper.action-selected a{color:var(--dca-gray, var(--body-quiet-color, #666)) !important;cursor:pointer}.navigator-tools .actions-wrapper.action-selected .actions-separated-list{display:inline-block}.navigator-tools .actions-wrapper+.filer-list-type-switcher-wrapper{border-left:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));margin-left:0}.navigator-tools .actions{display:none;float:right}@media screen and (max-width: 720px){.navigator-tools .actions:before,.navigator-tools .actions:after{content:" ";display:table}.navigator-tools .actions:after{clear:both}.navigator-tools .actions{float:none;margin-bottom:10px}}.navigator-tools .actions .all,.navigator-tools .actions .question,.navigator-tools .actions .clear,.navigator-tools .actions .action-counter{font-size:12px;line-height:34px;vertical-align:text-top}.navigator-tools .actions .action-counter,.navigator-tools .actions .all{color:var(--dca-gray-light, var(--body-quiet-color, #999))}.navigator-tools .actions .question,.navigator-tools .actions .clear{margin-left:10px;padding-left:10px;border-left:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.navigator-tools .filer-list-type-switcher-wrapper{display:inline-block;margin-left:10px}@media screen and (max-width: 720px){.navigator-top-nav .breadcrumbs-container{float:none}.navigator-top-nav .navigator-tools{float:none}.navigator-top-nav .navigator-tools .separator:before{top:0;bottom:0}}.navigator-button-wrapper{display:inline-block;vertical-align:top;text-align:right;margin-bottom:0;margin-left:10px}@media screen and (max-width: 720px){.navigator-button-wrapper{display:block;float:none;text-align:left;margin-top:0;margin-left:0}}.navigator-button{margin-right:10px}.navigator-button,.navigator-button:visited,.navigator-button:link:visited,.navigator-button:link{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg, var(--dca-primary, var(--primary, #0bf))) !important;border:1px solid var(--dca-black, var(--body-fg, #000)) !important;background-clip:padding-box;-webkit-appearance:none}.navigator-button:focus,.navigator-button.focus,.navigator-button:hover,.navigator-button:visited:focus,.navigator-button:visited.focus,.navigator-button:visited:hover,.navigator-button:link:visited:focus,.navigator-button:link:visited.focus,.navigator-button:link:visited:hover,.navigator-button:link:focus,.navigator-button:link.focus,.navigator-button:link:hover{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg, var(--dca-primary, var(--primary, #0bf))) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:invert(0.05) !important;text-decoration:none !important}.navigator-button:active,.navigator-button.cms-btn-active,.navigator-button:visited:active,.navigator-button:visited.cms-btn-active,.navigator-button:link:visited:active,.navigator-button:link:visited.cms-btn-active,.navigator-button:link:active,.navigator-button:link.cms-btn-active{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg, var(--dca-primary, var(--primary, #0bf))) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}.navigator-button:active:hover,.navigator-button:active:focus,.navigator-button:active.focus,.navigator-button.cms-btn-active:hover,.navigator-button.cms-btn-active:focus,.navigator-button.cms-btn-active.focus,.navigator-button:visited:active:hover,.navigator-button:visited:active:focus,.navigator-button:visited:active.focus,.navigator-button:visited.cms-btn-active:hover,.navigator-button:visited.cms-btn-active:focus,.navigator-button:visited.cms-btn-active.focus,.navigator-button:link:visited:active:hover,.navigator-button:link:visited:active:focus,.navigator-button:link:visited:active.focus,.navigator-button:link:visited.cms-btn-active:hover,.navigator-button:link:visited.cms-btn-active:focus,.navigator-button:link:visited.cms-btn-active.focus,.navigator-button:link:active:hover,.navigator-button:link:active:focus,.navigator-button:link:active.focus,.navigator-button:link.cms-btn-active:hover,.navigator-button:link.cms-btn-active:focus,.navigator-button:link.cms-btn-active.focus{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--default-button-bg, var(--dca-primary, var(--primary, #0bf))) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}.navigator-button:active,.navigator-button.cms-btn-active,.navigator-button:visited:active,.navigator-button:visited.cms-btn-active,.navigator-button:link:visited:active,.navigator-button:link:visited.cms-btn-active,.navigator-button:link:active,.navigator-button:link.cms-btn-active{background-image:none !important}.navigator-button.cms-btn-disabled,.navigator-button.cms-btn-disabled:hover,.navigator-button.cms-btn-disabled:focus,.navigator-button.cms-btn-disabled.focus,.navigator-button.cms-btn-disabled:active,.navigator-button.cms-btn-disabled.cms-btn-active,.navigator-button[disabled],.navigator-button[disabled]:hover,.navigator-button[disabled]:focus,.navigator-button[disabled].focus,.navigator-button[disabled]:active,.navigator-button[disabled].cms-btn-active,.navigator-button:visited.cms-btn-disabled,.navigator-button:visited.cms-btn-disabled:hover,.navigator-button:visited.cms-btn-disabled:focus,.navigator-button:visited.cms-btn-disabled.focus,.navigator-button:visited.cms-btn-disabled:active,.navigator-button:visited.cms-btn-disabled.cms-btn-active,.navigator-button:visited[disabled],.navigator-button:visited[disabled]:hover,.navigator-button:visited[disabled]:focus,.navigator-button:visited[disabled].focus,.navigator-button:visited[disabled]:active,.navigator-button:visited[disabled].cms-btn-active,.navigator-button:link:visited.cms-btn-disabled,.navigator-button:link:visited.cms-btn-disabled:hover,.navigator-button:link:visited.cms-btn-disabled:focus,.navigator-button:link:visited.cms-btn-disabled.focus,.navigator-button:link:visited.cms-btn-disabled:active,.navigator-button:link:visited.cms-btn-disabled.cms-btn-active,.navigator-button:link:visited[disabled],.navigator-button:link:visited[disabled]:hover,.navigator-button:link:visited[disabled]:focus,.navigator-button:link:visited[disabled].focus,.navigator-button:link:visited[disabled]:active,.navigator-button:link:visited[disabled].cms-btn-active,.navigator-button:link.cms-btn-disabled,.navigator-button:link.cms-btn-disabled:hover,.navigator-button:link.cms-btn-disabled:focus,.navigator-button:link.cms-btn-disabled.focus,.navigator-button:link.cms-btn-disabled:active,.navigator-button:link.cms-btn-disabled.cms-btn-active,.navigator-button:link[disabled],.navigator-button:link[disabled]:hover,.navigator-button:link[disabled]:focus,.navigator-button:link[disabled].focus,.navigator-button:link[disabled]:active,.navigator-button:link[disabled].cms-btn-active{background-color:var(--default-button-bg, var(--dca-primary, var(--primary, #0bf))) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}.navigator-button.cms-btn-disabled:before,.navigator-button.cms-btn-disabled:hover:before,.navigator-button.cms-btn-disabled:focus:before,.navigator-button.cms-btn-disabled.focus:before,.navigator-button.cms-btn-disabled:active:before,.navigator-button.cms-btn-disabled.cms-btn-active:before,.navigator-button[disabled]:before,.navigator-button[disabled]:hover:before,.navigator-button[disabled]:focus:before,.navigator-button[disabled].focus:before,.navigator-button[disabled]:active:before,.navigator-button[disabled].cms-btn-active:before,.navigator-button:visited.cms-btn-disabled:before,.navigator-button:visited.cms-btn-disabled:hover:before,.navigator-button:visited.cms-btn-disabled:focus:before,.navigator-button:visited.cms-btn-disabled.focus:before,.navigator-button:visited.cms-btn-disabled:active:before,.navigator-button:visited.cms-btn-disabled.cms-btn-active:before,.navigator-button:visited[disabled]:before,.navigator-button:visited[disabled]:hover:before,.navigator-button:visited[disabled]:focus:before,.navigator-button:visited[disabled].focus:before,.navigator-button:visited[disabled]:active:before,.navigator-button:visited[disabled].cms-btn-active:before,.navigator-button:link:visited.cms-btn-disabled:before,.navigator-button:link:visited.cms-btn-disabled:hover:before,.navigator-button:link:visited.cms-btn-disabled:focus:before,.navigator-button:link:visited.cms-btn-disabled.focus:before,.navigator-button:link:visited.cms-btn-disabled:active:before,.navigator-button:link:visited.cms-btn-disabled.cms-btn-active:before,.navigator-button:link:visited[disabled]:before,.navigator-button:link:visited[disabled]:hover:before,.navigator-button:link:visited[disabled]:focus:before,.navigator-button:link:visited[disabled].focus:before,.navigator-button:link:visited[disabled]:active:before,.navigator-button:link:visited[disabled].cms-btn-active:before,.navigator-button:link.cms-btn-disabled:before,.navigator-button:link.cms-btn-disabled:hover:before,.navigator-button:link.cms-btn-disabled:focus:before,.navigator-button:link.cms-btn-disabled.focus:before,.navigator-button:link.cms-btn-disabled:active:before,.navigator-button:link.cms-btn-disabled.cms-btn-active:before,.navigator-button:link[disabled]:before,.navigator-button:link[disabled]:hover:before,.navigator-button:link[disabled]:focus:before,.navigator-button:link[disabled].focus:before,.navigator-button:link[disabled]:active:before,.navigator-button:link[disabled].cms-btn-active:before{color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1)}.navigator-button,.navigator-button:visited,.navigator-button:link:visited,.navigator-button:link{display:inline-block;vertical-align:top;padding:10px 20px !important}.navigator-button .icon{position:relative;margin-right:3px}.navigator-button .fa-folder{top:0}.navigator-button.navigator-button-upload{margin-right:0}.upload-button-disabled{display:inline-block}.navigator-button+.filer-dropdown-menu{margin-top:-2px}.navigator{position:relative;overflow-x:auto;width:100%}.navigator form{margin:0;padding:0;box-shadow:none}.filer-dropdown-container{display:inline-block;position:relative;vertical-align:top}.filer-dropdown-container .fa-caret-down,.filer-dropdown-container .cms-icon-caret-down{font-size:14px}.filer-dropdown-container .filer-dropdown-menu,.filer-dropdown-container+.filer-dropdown-menu{display:none;right:0;left:auto;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-dropdown-container .filer-dropdown-menu>li>a,.filer-dropdown-container+.filer-dropdown-menu>li>a{display:block;color:var(--dca-primary, var(--primary, #0bf));font-weight:normal;white-space:normal;padding:12px 20px !important}@media screen and (min-width: 720px){.filer-dropdown-container .filer-dropdown-menu>li>a,.filer-dropdown-container+.filer-dropdown-menu>li>a{white-space:nowrap}}.filer-dropdown-container .filer-dropdown-menu label,.filer-dropdown-container+.filer-dropdown-menu label{display:block;line-height:20px !important;text-transform:none;width:auto;margin:5px 0 !important;padding:0 10px !important}.filer-dropdown-container .filer-dropdown-menu input,.filer-dropdown-container+.filer-dropdown-menu input{position:relative;top:4px;vertical-align:top;margin-right:5px}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes{width:0;min-height:50px;padding:15px;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes:before,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes:before{display:none}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close{position:absolute;top:10px;right:10px;color:var(--dca-gray, var(--body-quiet-color, #666));cursor:pointer}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close:hover,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes .fa-close:hover{color:var(--dca-primary, var(--primary, #0bf))}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes p,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes p{color:var(--dca-gray-light, var(--body-quiet-color, #999)) !important;font-weight:normal;text-transform:uppercase;margin-bottom:5px}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes label,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes label{color:var(--dca-gray, var(--body-quiet-color, #666)) !important;font-weight:normal;padding:0 !important;margin-top:0 !important}.filer-dropdown-container .filer-dropdown-menu.filer-dropdown-menu-checkboxes label input,.filer-dropdown-container+.filer-dropdown-menu.filer-dropdown-menu-checkboxes label input{margin-left:0}.filer-dropdown-container .filer-dropdown-menu a:hover,.filer-dropdown-container+.filer-dropdown-menu a:hover{color:var(--dca-white, var(--body-bg, #fff)) !important;background:var(--dca-primary, var(--primary, #0bf)) !important}.filer-dropdown-container.open .filer-dropdown-menu{display:block}.filer-dropdown-container.open .filer-dropdown-menu li{margin:0;padding:0;list-style-type:none}.filer-dropdown-container+.separator{margin-right:10px}.filer-dropdown-container-down>a,.filer-dropdown-container-down>a:link,.filer-dropdown-container-down>a:visited,.filer-dropdown-container-down>a:link:visited{color:var(--dca-gray, var(--body-quiet-color, #666));font-size:20px;line-height:35px;height:35px;padding:0 10px}.filer-dropdown-container-down .filer-dropdown-menu{right:auto;left:-14px;margin-right:10px}.filer-dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;float:left;min-width:160px;margin:2px 0 0;margin-top:0 !important;padding:0;list-style:none;font-size:14px;text-align:left;background-color:var(--dca-white, var(--body-bg, #fff));border-radius:4px;background-clip:padding-box}.filer-dropdown-menu:before{position:absolute;top:-5px;left:35px;z-index:-1;content:"";width:10px;height:10px;margin-left:-5px;transform:rotate(45deg);background-color:var(--dca-white, var(--body-bg, #fff))}.filer-dropdown-menu.create-menu-dropdown:before{left:auto;right:17px}.navigator-breadcrumbs:before,.navigator-breadcrumbs:after{content:" ";display:table}.navigator-breadcrumbs:after{clear:both}.navigator-breadcrumbs{display:table-cell;vertical-align:middle;font-size:16px;white-space:nowrap;width:60px}.navigator-breadcrumbs>a{color:var(--dca-gray-darkest, var(--body-fg, #333)) !important}.navigator-breadcrumbs .icon{color:var(--dca-gray-light, var(--body-quiet-color, #999));line-height:35px;height:35px;margin:0 5px}.navigator-breadcrumbs .icon:before{vertical-align:middle}.navigator-breadcrumbs li{list-style-type:none}.navigator-breadcrumbs-folder-name-wrapper{display:table-cell;overflow:hidden;font-size:16px;font-weight:bold;vertical-align:middle;white-space:nowrap}.navigator-breadcrumbs-folder-name{display:block;overflow:hidden;white-space:normal;line-height:35px;width:100%;height:35px}.navigator-breadcrumbs-folder-name-inner{display:block;position:relative;overflow:hidden;line-height:35px;height:35px;width:100%;text-overflow:ellipsis}.filer-navigator-breadcrumbs-dropdown-container{position:relative;float:left;vertical-align:middle;margin:0 7px 0 0}.filer-navigator-breadcrumbs-dropdown-container>a img{padding:3px 0}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown{left:-15px !important;min-width:200px;padding:0;margin-top:0;border:0;box-shadow:0 1px 10px rgba(0,0,0,.25)}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li{padding:0}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li>a{color:var(--dca-primary, var(--primary, #0bf));padding:12px 20px 3px !important;border-bottom:solid 1px var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2))}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li>a:hover{color:var(--dca-white, var(--body-bg, #fff)) !important;background:var(--dca-primary, var(--primary, #0bf)) !important}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown>li:last-child>a{border-bottom:none}.filer-navigator-breadcrumbs-dropdown-container .navigator-breadcrumbs-dropdown img{position:relative;top:-5px;vertical-align:top;margin:0 10px 0 0}.navigator-dropdown-arrow-up{position:relative;left:20px;overflow:hidden;width:20px;height:20px;margin-top:-20px;z-index:1001}.navigator-dropdown-arrow-up:after{content:"";position:absolute;top:15px;left:5px;width:10px;height:10px;background:#fff;transform:rotate(45deg);box-shadow:0 1px 10px rgba(0,0,0,.25)}.navigator-breadcrumbs-name-dropdown-wrapper{display:table;min-height:35px}.navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-menu{left:auto;right:-80px}.navigator-breadcrumbs-name-dropdown-wrapper .filer-dropdown-menu:before{right:80px;left:auto}.navigator-breadcrumbs-name-dropdown-wrapper a{display:inline-block}.empty-filer-header-cell{display:table-cell;vertical-align:middle}.filebrowser .navigator-thumbnail-list{overflow:hidden}.filebrowser .navigator-thumbnail-list .navigator-list{border-top:0 !important}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header>*{display:inline-block;text-transform:uppercase;margin:0;padding:0;padding-left:10px}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header .navigator-checkbox{float:right;padding-right:20px;text-transform:initial;color:var(--dca-primary, var(--primary, #0bf))}.filebrowser .navigator-thumbnail-list .navigator-thumbnail-list-header .navigator-checkbox input[type=checkbox]{margin-left:5px;vertical-align:middle}.filebrowser .navigator-thumbnail-list .navigator-body:before,.filebrowser .navigator-thumbnail-list .navigator-body:after{content:" ";display:table}.filebrowser .navigator-thumbnail-list .navigator-body:after{clear:both}.filebrowser .navigator-thumbnail-list .navigator-body{padding:0 !important}.filebrowser .navigator-thumbnail-list .thumbnail-item{float:left;display:inline-block;padding:10px;width:calc(var(--thumbnail-size, 120px) + 5px);height:calc(var(--thumbnail-size, 120px) + 5px);border:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));margin:16px 12px;background-color:var(--dca-white, var(--body-bg, #fff));position:relative;overflow:hidden}.filebrowser .navigator-thumbnail-list .thumbnail-item .thumbnail-file-item-box{padding:10px;width:calc(var(--thumbnail-size, 120px) + 5px);height:calc(var(--thumbnail-size, 120px) + 5px);border:1px solid var(--dca-gray-lighter, var(--border-color, #ddd));margin:16px 12px;background-color:var(--dca-white, var(--body-bg, #fff))}.filebrowser .navigator-thumbnail-list .thumbnail-item .thumbnail-file-item-box:hover{background-color:#f1faff}.filebrowser .navigator-thumbnail-list .thumbnail-item .navigator-checkbox{position:absolute;top:5px;left:5px}.filebrowser .navigator-thumbnail-list .thumbnail-item .navigator-checkbox input{margin:0;vertical-align:top}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon{height:50%;width:50%;margin:10px auto;margin-bottom:18px}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail a,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon a{display:block;height:100%;width:100%}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-thumbnail img,.filebrowser .navigator-thumbnail-list .thumbnail-item .item-icon img{width:100%;height:100%}.filebrowser .navigator-thumbnail-list .thumbnail-item .item-name{background:rgba(0,0,0,0);text-align:center;word-break:break-word}.filebrowser .navigator-thumbnail-list .thumbnail-virtual-item{background-color:initial}.filebrowser .navigator-thumbnail-list .thumbnail-folder-item:hover{background-color:#f1faff}.filebrowser .navigator-thumbnail-list .thumbnail-file-item{float:none;width:calc(var(--thumbnail-size, 120px) + 27px);height:calc(var(--thumbnail-size, 120px) + 80px);border:0;padding:0;background-color:rgba(0,0,0,0)}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .thumbnail-file-item-box{float:none;margin:0;margin-bottom:5px}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .item-thumbnail{margin:0;height:100%;width:100%}.filebrowser .navigator-thumbnail-list .thumbnail-file-item .item-name{position:relative;word-break:break-word}.insertlinkButton:before{content:"" !important}.insertlinkButton span{font-size:17px}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box,.popup.app-cmsplugin_filer_image .field-box.field-free_link,.popup.app-cmsplugin_filer_image .field-box.field-page_link,.popup.app-cmsplugin_filer_image .field-box.field-file_link{float:none !important;margin-right:0 !important;margin-top:20px !important}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box:first-child,.popup.app-cmsplugin_filer_image .field-box.field-free_link:first-child,.popup.app-cmsplugin_filer_image .field-box.field-page_link:first-child,.popup.app-cmsplugin_filer_image .field-box.field-file_link:first-child{margin-top:0 !important}.popup.app-cmsplugin_filer_image .form-row.field-image .field-box input,.popup.app-cmsplugin_filer_image .field-box.field-free_link input,.popup.app-cmsplugin_filer_image .field-box.field-page_link input,.popup.app-cmsplugin_filer_image .field-box.field-file_link input{width:100% !important}.popup.app-cmsplugin_filer_image .form-row .field-box.field-crop,.popup.app-cmsplugin_filer_image .form-row .field-box.field-upscale{margin-top:30px}.popup.delete-confirmation .colM ul{margin-bottom:25px !important}.popup .image-info-detail{padding:0;padding-bottom:25px;margin-bottom:30px;box-shadow:none;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.popup.change-list.filebrowser #result_list tbody th,.popup.change-list.filebrowser #result_list tbody td{height:auto}.popup .filer-dropzone{padding:5px 20px}.popup form .form-row .filer-dropzone .filerFile{top:8px}.popup.filebrowser #container #content{margin:0 !important}.popup .navigator-button-wrapper{float:right}@media screen and (max-width: 720px){.popup .navigator-button-wrapper{float:none}}.popup .navigator-top-nav .tools-container{width:70%}.popup .navigator-top-nav .breadcrumbs-container{width:30%}@media screen and (max-width: 720px){.popup .navigator-top-nav .tools-container,.popup .navigator-top-nav .breadcrumbs-container{width:100%}}form .form-row[class*=file] .related-widget-wrapper-link,form .form-row[class*=folder] .related-widget-wrapper-link,form .form-row[class*=img] .related-widget-wrapper-link,form .form-row[class*=image] .related-widget-wrapper-link,form .form-row[class*=visual] .related-widget-wrapper-link{display:none}form .form-row .filer-widget+.related-widget-wrapper-link,form .form-row .filer-widget+*+.related-widget-wrapper-link{display:none}form .form-row .related-widget-wrapper:has(.filer-widget,.filer-dropzone){width:100%}form .form-row .filer-dropzone:before,form .form-row .filer-dropzone:after{content:" ";display:table}form .form-row .filer-dropzone:after{clear:both}form .form-row .filer-dropzone{position:relative;min-width:320px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:var(--dca-border-radius, 5px);background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));box-sizing:border-box !important}form .form-row .filer-dropzone .z-index-fix{position:absolute;top:0;right:0;bottom:0;left:0}form .form-row .filer-dropzone.dz-drag-hover{background-color:var(--dca-primary, var(--primary, #0bf));filter:brightness(1.5);border:solid 2px var(--dca-primary, var(--primary, #0bf)) !important}form .form-row .filer-dropzone.dz-drag-hover .z-index-fix{z-index:1}form .form-row .filer-dropzone.dz-drag-hover .dz-message{opacity:1;display:block !important;visibility:visible}form .form-row .filer-dropzone.dz-drag-hover .filerFile{display:none}form .form-row .filer-dropzone.dz-drag-hover .dz-message,form .form-row .filer-dropzone.dz-drag-hover .dz-message .icon{color:var(--dca-primary, var(--primary, #0bf)) !important}form .form-row .filer-dropzone.dz-started .fileUpload{display:none}form .form-row .filer-dropzone .dz-preview{width:100%;min-height:auto;margin-right:0;margin-bottom:0;margin-left:0;padding-bottom:10px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}form .form-row .filer-dropzone .dz-preview.dz-error{position:relative}form .form-row .filer-dropzone .dz-preview.dz-error .dz-error-message{display:none}form .form-row .filer-dropzone .dz-preview.dz-error:hover .dz-error-message{display:block}form .form-row .filer-dropzone .dz-preview .dz-details{min-width:calc(100% - 80px);max-width:calc(100% - 80px);margin-top:7px;margin-left:40px;padding:0;opacity:1}form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename,form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename:hover,form .form-row .filer-dropzone .dz-preview .dz-details .dz-size{float:left;text-align:left}form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename span,form .form-row .filer-dropzone .dz-preview .dz-details .dz-filename:hover span,form .form-row .filer-dropzone .dz-preview .dz-details .dz-size span{color:var(--dca-gray, var(--body-quiet-color, #666));border:0 !important;background-color:rgba(0,0,0,0) !important}form .form-row .filer-dropzone .dz-preview .dz-remove{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-trash' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E%0A");background-size:contain;display:inline-block;position:absolute;top:7px;right:25px;font:0/0 a;width:18px;height:18px}form .form-row .filer-dropzone .dz-preview .dz-error-message{top:65px;left:0;width:100%}form .form-row .filer-dropzone .dz-preview .dz-success-mark,form .form-row .filer-dropzone .dz-preview .dz-error-mark{top:5px;right:0;left:auto;margin-top:0}form .form-row .filer-dropzone .dz-preview .dz-success-mark:before,form .form-row .filer-dropzone .dz-preview .dz-error-mark:before{color:var(--dca-gray, var(--body-quiet-color, #666))}form .form-row .filer-dropzone .dz-preview .dz-success-mark svg,form .form-row .filer-dropzone .dz-preview .dz-error-mark svg{display:none}form .form-row .filer-dropzone .dz-preview .dz-success-mark{width:16px;height:16px;background-image:url("data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2370bf2b' d='M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A");background-size:contain}form .form-row .filer-dropzone .dz-preview .dz-error-mark{background-image:url("data:image/svg+xml,%3Csvg width='13' height='13' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23dd4646' d='M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z'/%3E%3C/svg%3E%0A");width:16px;height:16px;background-size:contain}form .form-row .filer-dropzone .dz-preview.dz-image-preview,form .form-row .filer-dropzone .dz-preview.dz-file-preview{background-color:rgba(0,0,0,0)}form .form-row .filer-dropzone .dz-preview.dz-image-preview .dz-image,form .form-row .filer-dropzone .dz-preview.dz-file-preview .dz-image{overflow:hidden;width:36px;height:36px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0}form .form-row .filer-dropzone .dz-preview.dz-image-preview .dz-image img,form .form-row .filer-dropzone .dz-preview.dz-file-preview .dz-image img{width:100%;height:auto}form .form-row .filer-dropzone .dz-preview .dz-progress{top:18px;left:0;width:calc(100% - 40px);height:10px;margin-left:40px}form .form-row .filer-dropzone .dz-message{float:right;color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));width:100%;margin:15px 0 0}form .form-row .filer-dropzone .icon{position:relative;top:3px;color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2));font-size:24px;margin-right:10px}form .form-row .filer-dropzone .filerFile .related-lookup{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border:1px solid var(--dca-black, var(--body-fg, #000)) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile .related-lookup:focus,form .form-row .filer-dropzone .filerFile .related-lookup.focus,form .form-row .filer-dropzone .filerFile .related-lookup:hover{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:invert(0.05) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile .related-lookup:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile .related-lookup:active:hover,form .form-row .filer-dropzone .filerFile .related-lookup:active:focus,form .form-row .filer-dropzone .filerFile .related-lookup:active.focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active.focus{color:var(--default-button-fg, var(--button-fg, #fff)) !important;background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile .related-lookup:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile .related-lookup[disabled],form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:hover,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:focus,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].focus,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:active,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].cms-btn-active{background-color:var(--primary) !important;border-color:var(--dca-black, var(--body-fg, #000)) !important;color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].focus:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled]:active:before,form .form-row .filer-dropzone .filerFile .related-lookup[disabled].cms-btn-active:before{color:var(--default-button-fg, var(--button-fg, #fff)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile .related-lookup{float:left !important;overflow:hidden;line-height:14px;width:auto !important;height:auto !important;padding:10px 20px !important;margin-top:24px;margin-left:10px;text-align:center !important;cursor:pointer}form .form-row .filer-dropzone .filerFile .related-lookup .cms-icon{color:var(--dca-white, var(--body-bg, #fff));font-size:17px;margin:0 10px 0 0;vertical-align:middle}form .form-row .filer-dropzone .filerFile .related-lookup:before{display:none}form .form-row .filer-dropzone .filerFile .related-lookup .choose-file,form .form-row .filer-dropzone .filerFile .related-lookup .replace-file,form .form-row .filer-dropzone .filerFile .related-lookup .edit-file{color:var(--dca-white, var(--body-bg, #fff));margin:0}form .form-row .filer-dropzone .filerFile .related-lookup .replace-file{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.edit{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled],form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:hover,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].focus,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:active,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:hover:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].focus:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled]:active:before,form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change{float:right !important;padding:5px 0 !important;width:36px !important;height:36px !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change:focus{background-color:var(--dca-white, var(--body-bg, #fff)) !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change span{text-align:center;line-height:24px}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .cms-icon{color:var(--dca-gray-light, var(--button-fg, #999));margin-right:0 !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .choose-file{display:none}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change .replace-file{display:block}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.lookup{display:block !important}form .form-row .filer-dropzone .filerFile .related-lookup.related-lookup-change.edit{display:block}form .form-row .filer-dropzone .filerClearer{width:36px !important;height:36px !important;color:red}form .form-row .filer-dropzone .filerFile{position:absolute;top:9px;left:20px;width:calc(100% - 40px)}form .form-row .filer-dropzone .filerFile img[src*=nofile]{background-color:var(--dca-white, var(--body-bg, #fff))}form .form-row .filer-dropzone .filerFile span:not(:empty):not(.choose-file):not(.replace-file):not(.edit-file){overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:calc(100% - 260px);height:80px;line-height:80px}form .form-row .filer-dropzone .filerFile img{width:80px;height:80px;margin-right:10px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0;vertical-align:top}form .form-row .filer-dropzone .filerFile img[src*=nofile]{box-sizing:border-box;margin-right:0;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:0}form .form-row .filer-dropzone .filerFile a{box-sizing:border-box;padding-top:10px !important}form .form-row .filer-dropzone .filerFile span{display:inline-block;color:var(--dca-gray, var(--body-quiet-color, #666));font-weight:normal;margin-bottom:6px;text-align:left}form .form-row .filer-dropzone .filerFile span:empty+.related-lookup{float:none !important;margin-left:0 !important}form .form-row .filer-dropzone .filerFile a.filerClearer{background-image:none !important;margin-bottom:0;border-radius:var(--button-radius, 3px) !important;color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border:1px solid var(--dca-gray-lighter, transparent) !important;background-clip:padding-box;-webkit-appearance:none}form .form-row .filer-dropzone .filerFile a.filerClearer:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.focus,form .form-row .filer-dropzone .filerFile a.filerClearer:hover{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)) !important;border-color:var(--dca-gray-lighter, transparent) !important;text-decoration:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(var(--active-brightness)) opacity(1) !important;box-shadow:inset 0 3px 5px rgba(var(--dca-black, var(--body-fg, #000)), 0.125) !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active:hover,form .form-row .filer-dropzone .filerFile a.filerClearer:active:focus,form .form-row .filer-dropzone .filerFile a.filerClearer:active.focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active:hover,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active.focus{color:var(--dca-gray-light, var(--button-fg, #999)) !important;background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;filter:brightness(calc(var(--focus-brightness) * var(--active-brightness))) opacity(1) !important}form .form-row .filer-dropzone .filerFile a.filerClearer:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-active{background-image:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:hover,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.focus,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:active,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.cms-btn-active,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled],form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:hover,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:focus,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].focus,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:active,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].cms-btn-active{background-color:var(--dca-white, var(--button-bg, #fff)) !important;border-color:var(--dca-gray-lighter, transparent) !important;color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1);cursor:not-allowed;box-shadow:none !important}form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:hover:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled:active:before,form .form-row .filer-dropzone .filerFile a.filerClearer.cms-btn-disabled.cms-btn-active:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:hover:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].focus:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled]:active:before,form .form-row .filer-dropzone .filerFile a.filerClearer[disabled].cms-btn-active:before{color:var(--dca-gray-light, var(--button-fg, #999)) true;filter:brightness(0.6) opacity(1)}form .form-row .filer-dropzone .filerFile a.filerClearer{float:right;padding:5px 0 !important;margin:24px 0 0 10px;width:36px;height:36px;text-align:center;cursor:pointer}form .form-row .filer-dropzone .filerFile a.filerClearer span:before{color:red !important}form .form-row .filer-dropzone .filerFile a.filerClearer span{text-align:center;line-height:24px}form .form-row .filer-dropzone.filer-dropzone-mobile .filerFile{text-align:center}form .form-row .filer-dropzone.filer-dropzone-mobile .dz-message{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-top:75px}form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile{text-align:center}@media screen and (max-width: 810px){form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector .description_text{text-overflow:ellipsis;width:calc(100% - 250px);overflow:hidden}}form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector>span:not(.choose-file):not(.replace-file):not(.edit-file),form .form-row .filer-dropzone.filer-dropzone-mobile.js-object-attached .filerFile.js-file-selector .dz-name{width:calc(100% - 250px)}form .form-row .filer-dropzone.filer-dropzone-folder .filerFile{top:8px}form .form-row .filer-dropzone.filer-dropzone-folder .filerFile #id_folder_description_txt{float:left}@media(max-width: 767px){form .form-row .filer-dropzone{flex-grow:1}}.filer-dropzone{min-height:100px !important}.filer-dropzone .dz-upload{height:5px;background-color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone .dz-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 145px)}.filer-dropzone .dz-thumbnail{display:inline-block;overflow:hidden;vertical-align:top;width:80px;height:80px;margin-right:10px;border:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));border-radius:3px;background:var(--dca-white, var(--body-bg, #fff)) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%232980b9' d='M5 2c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V8l-6-6z'/%3E%3Cpath fill='%233498db' d='M5 1c-1.105 0-2 .9-2 2v18c0 1.1.895 2 2 2h14c1.105 0 2-.9 2-2V7l-6-6z'/%3E%3Cpath fill='%232980b9' d='m21 7-6-6v4c0 1.1.895 2 2 2z'/%3E%3C/svg%3E");background-size:contain}.filer-dropzone .dz-thumbnail img{background:var(--dca-white, var(--body-bg, #fff))}.filer-dropzone .dz-thumbnail img[src=""],.filer-dropzone .dz-thumbnail img:not([src]){width:104%;height:104%;margin:-2%}.filer-dropzone-info-message{position:fixed;bottom:35px;left:50%;z-index:2;text-align:center;width:270px;max-height:300px;overflow-y:auto;margin:-50px 0 0 -150px;padding:15px 15px 0;border-radius:var(--dca-btn-radius, 3px);background:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 5px 0 rgba(0,0,0,.2)}.filer-dropzone-info-message .icon{font-size:35px;color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone-info-message .text{margin:5px 0 10px}.filer-dropzone-upload-info{margin-top:10px}.filer-dropzone-upload-info .filer-dropzone-file-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.filer-dropzone-upload-info:empty{margin-top:0}.filer-dropzone-progress{height:5px;margin-top:5px;background-color:var(--dca-primary, var(--primary, #0bf))}.filer-dropzone-upload-welcome .folder{color:var(--dca-primary, var(--primary, #0bf));padding:10px 0 0;margin:0 -15px;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.filer-dropzone-upload-welcome .folder img,.filer-dropzone-upload-welcome .folder span{vertical-align:middle}.filer-dropzone-upload-welcome .folder img{margin-right:5px}.filer-dropzone-upload-welcome .folder .folder-inner{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 10px}.filer-dropzone-cancel{padding-top:10px;border-top:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd));margin:15px -15px 10px}.filer-dropzone-cancel a{font-size:12px;color:var(--dca-gray, var(--body-quiet-color, #666)) !important}.filer-dropzone-upload-success,.filer-dropzone-upload-canceled{margin:0 -15px 10px}.filer-dropzone-upload-count{padding-bottom:10px;margin:10px -15px;border-bottom:solid 1px var(--dca-gray-lighter, var(--border-color, #ddd))}.filer-tooltip-wrapper{position:relative}.filer-tooltip{position:absolute;left:-30px;right:-30px;color:var(--dca-gray, var(--body-quiet-color, #666));text-align:center;font-size:12px !important;line-height:15px !important;white-space:normal;margin-top:5px;padding:10px;background-color:var(--dca-white, var(--body-bg, #fff));box-shadow:0 0 10px rgba(0,0,0,.25);border-radius:5px;z-index:10;cursor:default}.filer-tooltip:before{position:absolute;top:-3px;left:50%;z-index:-1;content:"";width:9px;height:9px;margin-left:-5px;transform:rotate(45deg);background-color:var(--dca-white, var(--body-bg, #fff))}.disabled-btn-tooltip{display:none;outline:none}@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.filer-dropzone,.filer-dropzone *{box-sizing:border-box}.filer-dropzone{min-height:150px;padding:20px 20px;border:2px solid rgba(0,0,0,.3);background:#fff}.filer-dropzone.dz-clickable{cursor:pointer}.filer-dropzone.dz-clickable *{cursor:default}.filer-dropzone.dz-clickable .dz-message,.filer-dropzone.dz-clickable .dz-message *{cursor:pointer}.filer-dropzone.dz-drag-hover{border-style:solid}.filer-dropzone.dz-drag-hover .dz-message{opacity:.5}.filer-dropzone .dz-message{text-align:center;margin:2em 0}.filer-dropzone .dz-preview{display:inline-block;position:relative;vertical-align:top;min-height:100px;margin:16px}.filer-dropzone .dz-preview:hover{z-index:1000}.filer-dropzone .dz-preview:hover .dz-details{opacity:1}.filer-dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:var(--dca-gray-light, var(--body-quiet-color, #999));background:linear-gradient(to bottom, var(--dca-gray-lightest, var(--darkened-bg, #f2f2f2)), var(--dca-gray-lighter, var(--border-color, #ddd)))}.filer-dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.filer-dropzone .dz-preview.dz-image-preview{background:#fff}.filer-dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.filer-dropzone .dz-preview .dz-remove{display:block;font-size:14px;text-align:center;border:none;cursor:pointer}.filer-dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.filer-dropzone .dz-preview:hover .dz-details{opacity:1}.filer-dropzone .dz-preview .dz-details{position:absolute;top:0;left:0;z-index:20;color:rgba(0,0,0,.9);font-size:13px;line-height:150%;text-align:center;min-width:100%;max-width:100%;padding:2em 1em;opacity:0}.filer-dropzone .dz-preview .dz-details .dz-size{font-size:16px;margin-bottom:1em}.filer-dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.filer-dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:hsla(0,0%,100%,.8)}.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.filer-dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid rgba(0,0,0,0)}.filer-dropzone .dz-preview .dz-details .dz-filename span,.filer-dropzone .dz-preview .dz-details .dz-size span{padding:0 .4em;border-radius:3px;background-color:hsla(0,0%,100%,.4)}.filer-dropzone .dz-preview:hover .dz-image img{transform:scale(1.05, 1.05);filter:blur(8px)}.filer-dropzone .dz-preview .dz-image{display:block;position:relative;overflow:hidden;z-index:10;width:120px;height:120px;border-radius:20px}.filer-dropzone .dz-preview .dz-image img{display:block}.filer-dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.filer-dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.filer-dropzone .dz-preview .dz-success-mark,.filer-dropzone .dz-preview .dz-error-mark{display:block;position:absolute;top:50%;left:50%;z-index:500;margin-top:-27px;margin-left:-27px;pointer-events:none;opacity:0}.filer-dropzone .dz-preview .dz-success-mark svg,.filer-dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.filer-dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.filer-dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.filer-dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.filer-dropzone .dz-preview .dz-progress{position:absolute;top:50%;left:50%;overflow:hidden;z-index:1000;width:80px;height:16px;margin-top:-8px;margin-left:-40px;border-radius:8px;pointer-events:none;opacity:1;background:hsla(0,0%,100%,.9)}.filer-dropzone .dz-preview .dz-progress .dz-upload{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--dca-gray-darkest, var(--body-fg, #333));background:linear-gradient(to bottom, var(--dca-gray, var(--body-quiet-color, #666)), var(--dca-gray-darkest, var(--body-fg, #333)));transition:width 300ms ease-in-out}.filer-dropzone .dz-preview.dz-error .dz-error-message{display:block}.filer-dropzone .dz-preview.dz-error:hover .dz-error-message{pointer-events:auto;opacity:1}.filer-dropzone .dz-preview .dz-error-message{display:block;display:none;position:absolute;top:130px;left:-10px;z-index:1000;color:var(--dca-white, var(--body-bg, #fff));font-size:13px;width:140px;padding:.5em 1.2em;border-radius:8px;pointer-events:none;opacity:0;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);transition:opacity .3s ease}.filer-dropzone .dz-preview .dz-error-message:after{content:"";position:absolute;top:-6px;left:64px;width:0;height:0;border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #be2626;border-left:6px solid rgba(0,0,0,0)} \ No newline at end of file diff --git a/filer/static/filer/js/base.js b/filer/static/filer/js/base.js index 81bd2b81e..09c5e0a61 100644 --- a/filer/static/filer/js/base.js +++ b/filer/static/filer/js/base.js @@ -7,6 +7,17 @@ import Mediator from 'mediator-js/lib/mediator'; import FocalPoint from './addons/focal-point'; import Toggler from './addons/toggler'; +// Import self-initializing addons so they are included in the bundle +import './addons/dropdown-menu'; +import './addons/upload-button'; +import './addons/dropzone.init'; +import './addons/table-dropzone'; +import './addons/copy-move-files'; +import './addons/tooltip'; +import './addons/widget'; +import './addons/popup_handling'; +import './addons/filer_popup_response'; + window.Cl = window.Cl || {}; Cl.mediator = new Mediator(); // mediator init Cl.FocalPoint = FocalPoint; diff --git a/filer/tests/image_name b/filer/tests/image_name deleted file mode 100644 index 9e4936f713e63dda04b344bf13f836f735e8a719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11200 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 dzb>DMy@vn* diff --git a/filer/tests/new_three.jpg b/filer/tests/new_three.jpg deleted file mode 100644 index 697f7c7fffeb382c85a96c1ff142d242f9f9cc76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<c1}I=;VrF4wW9Q)H;sz?% zD!{d!pzFb!U9xX3zTPI5o8roG<0MW4oqZMDikqloVbuf*=gfJ(V&YTRE(2~ znmD<{#3dx9RMpfqG__1j&CD$#!_R+RT5jFBTZ;33zdPAeav=CW!{)jv>w>y7 zw_g4y(bu)vv}dEY(K^ZGG|3aJO>>0Uif_%i#=GTB?%CgKc#_{Q%)cyZ^YLBo*Qo2; z^}nvazga6Vcsfh)u`V07 z&dPO9nk$<8##}OgV!^72xvv`-89vV`Ra)BbJ1Kg`qA=ax<@~lf<)L*%;{0@>HyqKEc3QGL z-shiH|E;@mLUYCZbG-A9OME#Sv}pEn@e3V~Ub|=3#b0;29jCCpLb+p=(ZthFnj$@I z?Qb$I_4Q<#V0|FsQ0R32KBpC5{xhV6)rwSGOxd_~@~+xldb3Mj*gnylxbmEG?BdVr dzb>DMy@vn* diff --git a/filer/tests/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest.jpg b/filer/tests/testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest.jpg deleted file mode 100644 index 9e4936f713e63dda04b344bf13f836f735e8a719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11200 zcmeHN3s6&M7XCv5;pHG0tYwfG9ulDS!J}Fiy<0F)A6**}qK=wHRFr+VP|>A|*LG!b zGqq8aVyG=^QWS}hrD(y&5@FE@gHi-U6c;fF0wRwP$n*aDBXvzOL#vL8Omj0Qnaus~ zx#v6ox!-vt@Fu(qCN2(J6b48n07&Qs;B62JtgWo5R+iROD%Hlu+SZ;n!QRf!{%xm8 z4z#H*bhoK4uCCKOXLwI@f5*esl{v@fomsO30|V*a@6Vs>A3P%<(0^D7$;QUU-p+o? zgb7pp8LkZf=RV*?;Am~Jl01z}at9WUB(ft3mIFGn(~|V~06!fh3o^yhifV0RYljw` znFuUMWU>W?Y-vfMpw-FfJfJvQIx%K{U^R&yO?8i_`G0osn6*bpL8~&g`V|Ap!6B7eGmMJ_$Rn`O`v@=-T#g8r1%*PUP=|4m zEOsCvJ5nqev#p#yU{j;xC%OB7W=#t@c&wn*#v@>Puk-qZ8r#X9fh}Hr!_Xchdp2O7 zzYwzj1AB_=7O*Fi(B_dH0S43rkNHmvvzUD_W--tqZE=L)M2{{7f<`t3)_gsNx6ULg z&+a}Os+L;q%nhh*B(5D!Gm{>Q}D(o{`RCSEPkWnyig1adwyxIJIB5bw}Jz`zGrBqyXQcH3k17ix)Q zytM{`0DRn$>m?d@t%cjD6i3P2{y@DY_t-&Q~A3>iljM7JDvp>g@|f zK1XBb&dm{L|3)mjba;)Y{M{efELw#vQ@Cfm$b5euQzF3PP3;X#ghK z3Qyu!miG|nF=B7rnPkrewB3F@B3RFDqp?}+JqR=yCqn8t%x3MX(C#y_m(-q_p-Y(o zL02IJ55mNe-z*_QGH_)h1OpzC;tocysBaCYue}q3Swf!g7vqU%9hM4ter?N|LQHtU zA-GQ3>azoawOJ5^1g$>R$?d0|hakTif@3au+(iy4blyEFALFP~XzUfgM|%z4NZ}l3 zuZtbz58-qbwFy6&H2?twUJ!Ki1BCzf=V7Pu^C}1~Iw%7OgtS$vFKF9_t_dHxghU+2 zYa!5OK=4EGHQqoalc*tjJ1O)wD;wDqb zQ#hRcg~w;0((n40(Hk;m4r^8AUZ8h-`)L1khoBQT74!URnJ4rjeY1=pWf>@bd_trR z*Gl<11SbOPfPh#6!ELu#)~6e3IAYKpeGu%ScgE^52r6)GOw|L)QX#*a{)oVO$@-;; zi6KzWgy4@!-#DYVAGry5%?|oi;}Fj?ViivITiXPEiO~<+ncKIcm=PQ?p`jP0(a~t_ zMfE+;bz?=HqtV*ypysinPW0fjx&FKFjRg%SwPm9UYKc_y5CV;3Zhfp#g`oLx7gNV^ z)+K4ARfrQsK*(dh3?WM(*qbXOlGfnOencQ%78wIUa6Z!^(^o=J?Z?;N$1fv_*6g1M!RkV{u1E7AP%S=%x2MbW{Ze_j z&MOL2RLTi8w=X}0w?MQIyKzc(PWz>la1zti_v0bhB~hVD(I%3w>o10&grobz0U8Cu=IU~%d;3-G*E{KTQ3T}EdM>0MDVcamjX zBcv$LJoSIj6?S;t=2T7nks)q;0|Z99ff;!}fyP$4Fo-jo<~KAYLSVQTd;{mNNuec& z?K9hlqS@@f=Zn9fCh`1M1(UJi;1O~IrR|uI*R{A(R{gs_CnW6rmyqX^_9|I&G$tM! zmV6mZ`%5~=wTRc%hlVDa(pPoROttM=2pVD`_;G)fY0Yyzv?csru|!^7Peik5ky9*b z?B9+TaTBm;oT{v1)c+XS?3QHM5U(=sqe{}~wwUuJ+-!B)vzJXy=Ghs3>;9gRr!7@g%U?4t#cTOMf-TX2=zF!SmFJMVPZ4&+c=|sI4aR7 z%q8EYmhmseb7fg#T^Wy=I}2^KdF=C&`kCkHKb~dnX#LSx^)41BqnKCmeYE~)ta_JM znT?<5HfQB0S)6Rn%I2(W&dTPj{Dx-a;jC@W%1?i=H)rM7HBo$$Az$U^ud!F2jGvZB z+Xv+YQKYKTXD35|714*3(#v9YM1|XBG=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", + "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": ">=7.24.0 <7.24.7" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.32", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", + "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001793", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", + "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dropzone": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz", + "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.363", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.363.tgz", + "integrity": "sha512-VjUKPyWzGnT1fujlkEGC/BvN70Hh70KXtAqcmniXviYlJC/ivcT+BWGPyxWVbJZLfvtKR6dqg1L7T7pgAMBtWA==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz", + "integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mediator-js": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/mediator-js/-/mediator-js-0.11.0.tgz", + "integrity": "sha512-ehVcM3bSkr79E5yXUIyOPxw9xqhmvtTMkws5+lT8vl52awVkL/8rfDd8njmVxNldGmqKvFWSOvfppxG2AHM0TQ==", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", + "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", + "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz", + "integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/undici-types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.107.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.2.tgz", + "integrity": "sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.22.0", + "es-module-lexer": "^2.1.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "loader-runner": "^4.3.2", + "mime-db": "^1.54.0", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.5.0", + "watchpack": "^2.5.1", + "webpack-sources": "^3.5.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz", + "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..e151a660a --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "django-filer", + "version": "1.0.0", + "private": true, + "scripts": { + "build": "webpack --mode production", + "build:dev": "webpack --mode development" + }, + "devDependencies": { + "webpack": "^5.90.0", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "dropzone": "^5.9.3", + "mediator-js": "^0.11.0" + } +} + diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..3967e7552 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,15 @@ +const path = require('path'); + +module.exports = { + entry: { + 'filer-base.bundle': './filer/static/filer/js/base.js', + }, + output: { + filename: '[name].js', + path: path.resolve(__dirname, 'filer/static/filer/js/dist'), + }, + resolve: { + modules: ['node_modules'], + }, +}; + From cca5ae49b2499f7a9c073a1c82f62d285a8a7e26 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 28 May 2026 17:54:36 +0300 Subject: [PATCH 15/51] BEN-2954: font awesome upgrade and debug --- filer/admin/folderadmin.py | 29 +- .../static/filer/css/admin_filer.fa.icons.css | 17 +- .../css/maps/admin_filer.fa.icons.css.map | 1 - filer/static/filer/fonts/FontAwesome.otf | Bin 106260 -> 0 bytes filer/static/filer/fonts/fa-brands-400.eot | Bin 0 -> 134294 bytes filer/static/filer/fonts/fa-brands-400.svg | 3717 ++++++++++++ filer/static/filer/fonts/fa-brands-400.ttf | Bin 0 -> 133988 bytes filer/static/filer/fonts/fa-brands-400.woff | Bin 0 -> 89988 bytes filer/static/filer/fonts/fa-brands-400.woff2 | Bin 0 -> 76736 bytes filer/static/filer/fonts/fa-regular-400.eot | Bin 0 -> 34034 bytes filer/static/filer/fonts/fa-regular-400.svg | 801 +++ filer/static/filer/fonts/fa-regular-400.ttf | Bin 0 -> 33736 bytes filer/static/filer/fonts/fa-regular-400.woff | Bin 0 -> 16276 bytes filer/static/filer/fonts/fa-regular-400.woff2 | Bin 0 -> 13224 bytes filer/static/filer/fonts/fa-solid-900.eot | Bin 0 -> 203030 bytes filer/static/filer/fonts/fa-solid-900.svg | 5034 +++++++++++++++++ filer/static/filer/fonts/fa-solid-900.ttf | Bin 0 -> 202744 bytes filer/static/filer/fonts/fa-solid-900.woff | Bin 0 -> 101648 bytes filer/static/filer/fonts/fa-solid-900.woff2 | Bin 0 -> 78268 bytes .../filer/fonts/fontawesome-webfont.eot | Bin 68875 -> 0 bytes .../filer/fonts/fontawesome-webfont.svg | 640 --- .../filer/fonts/fontawesome-webfont.ttf | Bin 138204 -> 0 bytes .../filer/fonts/fontawesome-webfont.woff | Bin 81284 -> 0 bytes .../filer/fonts/fontawesome-webfont.woff2 | Bin 64464 -> 0 bytes filer/static/filer/js/addons/upload-button.js | 71 +- filer/static/filer/js/base.js | 34 +- 26 files changed, 9686 insertions(+), 658 deletions(-) delete mode 100644 filer/static/filer/css/maps/admin_filer.fa.icons.css.map delete mode 100644 filer/static/filer/fonts/FontAwesome.otf create mode 100644 filer/static/filer/fonts/fa-brands-400.eot create mode 100644 filer/static/filer/fonts/fa-brands-400.svg create mode 100644 filer/static/filer/fonts/fa-brands-400.ttf create mode 100644 filer/static/filer/fonts/fa-brands-400.woff create mode 100644 filer/static/filer/fonts/fa-brands-400.woff2 create mode 100644 filer/static/filer/fonts/fa-regular-400.eot create mode 100644 filer/static/filer/fonts/fa-regular-400.svg create mode 100644 filer/static/filer/fonts/fa-regular-400.ttf create mode 100644 filer/static/filer/fonts/fa-regular-400.woff create mode 100644 filer/static/filer/fonts/fa-regular-400.woff2 create mode 100644 filer/static/filer/fonts/fa-solid-900.eot create mode 100644 filer/static/filer/fonts/fa-solid-900.svg create mode 100644 filer/static/filer/fonts/fa-solid-900.ttf create mode 100644 filer/static/filer/fonts/fa-solid-900.woff create mode 100644 filer/static/filer/fonts/fa-solid-900.woff2 delete mode 100644 filer/static/filer/fonts/fontawesome-webfont.eot delete mode 100644 filer/static/filer/fonts/fontawesome-webfont.svg delete mode 100644 filer/static/filer/fonts/fontawesome-webfont.ttf delete mode 100644 filer/static/filer/fonts/fontawesome-webfont.woff delete mode 100644 filer/static/filer/fonts/fontawesome-webfont.woff2 diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 9895509d1..13edebcde 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -1,4 +1,5 @@ import itertools +import logging import os import re from collections import OrderedDict @@ -53,8 +54,7 @@ Image = load_model(FILER_IMAGE_MODEL) - -class AddFolderPopupForm(forms.ModelForm): +logger = logging.getLogger(__name__)class AddFolderPopupForm(forms.ModelForm): folder = forms.HiddenInput() class Meta: @@ -412,19 +412,37 @@ def directory_listing(self, request, folder_id=None, viewtype=None): limit_search_to_folder = request.GET.get('limit_search_to_folder', False) in (True, 'on') + logger.debug( + "[Filer Search] query=%r, search_terms=%r, search_mode=%s, " + "limit_search_to_folder=%s, folder=%s (id=%s, is_root=%s)", + q, search_terms, search_mode, limit_search_to_folder, + folder.name if folder else None, + folder.pk if folder else None, + folder.is_root if folder else None, + ) + if len(search_terms) > 0: if folder and limit_search_to_folder and not folder.is_root: desc_folder_ids = folder.get_descendants_ids() + logger.debug( + "[Filer Search] Limiting to folder %s and %d descendant folders", + folder.name, len(desc_folder_ids), + ) # Do not include current folder itself in search results. folder_qs = Folder.objects.filter(pk__in=desc_folder_ids) # Limit search results to files in the current folder or any # nested folder. file_qs = File.objects.filter(folder_id__in=desc_folder_ids + [folder.pk]) else: + logger.debug("[Filer Search] Searching globally (all folders and files)") folder_qs = self.get_queryset(request) file_qs = File.objects.all() folder_qs = self.filter_folder(folder_qs, search_terms).prefetch_related("children", "all_files") file_qs = self.filter_file(file_qs, search_terms) + logger.debug( + "[Filer Search] Results: %d folders, %d files found for terms=%r", + folder_qs.count(), file_qs.count(), search_terms, + ) show_result_count = True else: @@ -613,6 +631,10 @@ def construct_search(field_name): else: return "%s__icontains" % field_name + logger.debug( + "[Filer Search] filter_folder: terms=%r, search_fields=%r, owner_lookups=%r", + terms, self.search_fields, self.get_owner_filter_lookups(), + ) for term in terms: filters = models.Q() for filter_ in self.search_fields: @@ -620,9 +642,11 @@ def construct_search(field_name): for filter_ in self.get_owner_filter_lookups(): filters |= models.Q(**{filter_: term}) qs = qs.filter(filters) + logger.debug("[Filer Search] filter_folder query: %s", qs.query) return qs def filter_file(self, qs, terms=()): + logger.debug("[Filer Search] filter_file: terms=%r", terms) for term in terms: filters = (models.Q(name__icontains=term) | models.Q(description__icontains=term) @@ -630,6 +654,7 @@ def filter_file(self, qs, terms=()): for filter_ in self.get_owner_filter_lookups(): filters |= models.Q(**{filter_: term}) qs = qs.filter(filters) + logger.debug("[Filer Search] filter_file query: %s", qs.query) return qs @property diff --git a/filer/static/filer/css/admin_filer.fa.icons.css b/filer/static/filer/css/admin_filer.fa.icons.css index e99c3e677..aac2a4727 100644 --- a/filer/static/filer/css/admin_filer.fa.icons.css +++ b/filer/static/filer/css/admin_filer.fa.icons.css @@ -1,4 +1,15 @@ /*! - * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:"FontAwesome";src:url("../fonts/fontawesome-webfont.eot?v=4.4.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.4.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.4.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.4.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""} \ No newline at end of file + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} +/* FA4 backward compatibility shims */ +/*! + * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"} \ No newline at end of file diff --git a/filer/static/filer/css/maps/admin_filer.fa.icons.css.map b/filer/static/filer/css/maps/admin_filer.fa.icons.css.map deleted file mode 100644 index 6d9e865fe..000000000 --- a/filer/static/filer/css/maps/admin_filer.fa.icons.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["admin_filer.fa.icons.css","libs/_font-awesome.min.scss"],"names":[],"mappings":"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","file":"../admin_filer.fa.icons.css","sourcesContent":["/*!\n * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:\"FontAwesome\";src:url(\"../fonts/fontawesome-webfont.eot?v=4.4.0\");src:url(\"../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0\") format(\"embedded-opentype\"),url(\"../fonts/fontawesome-webfont.woff2?v=4.4.0\") format(\"woff2\"),url(\"../fonts/fontawesome-webfont.woff?v=4.4.0\") format(\"woff\"),url(\"../fonts/fontawesome-webfont.ttf?v=4.4.0\") format(\"truetype\"),url(\"../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular\") format(\"svg\");font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\"}.fa-music:before{content:\"\"}.fa-search:before{content:\"\"}.fa-envelope-o:before{content:\"\"}.fa-heart:before{content:\"\"}.fa-star:before{content:\"\"}.fa-star-o:before{content:\"\"}.fa-user:before{content:\"\"}.fa-film:before{content:\"\"}.fa-th-large:before{content:\"\"}.fa-th:before{content:\"\"}.fa-th-list:before{content:\"\"}.fa-check:before{content:\"\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\"}.fa-search-plus:before{content:\"\"}.fa-search-minus:before{content:\"\"}.fa-power-off:before{content:\"\"}.fa-signal:before{content:\"\"}.fa-gear:before,.fa-cog:before{content:\"\"}.fa-trash-o:before{content:\"\"}.fa-home:before{content:\"\"}.fa-file-o:before{content:\"\"}.fa-clock-o:before{content:\"\"}.fa-road:before{content:\"\"}.fa-download:before{content:\"\"}.fa-arrow-circle-o-down:before{content:\"\"}.fa-arrow-circle-o-up:before{content:\"\"}.fa-inbox:before{content:\"\"}.fa-play-circle-o:before{content:\"\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\"}.fa-refresh:before{content:\"\"}.fa-list-alt:before{content:\"\"}.fa-lock:before{content:\"\"}.fa-flag:before{content:\"\"}.fa-headphones:before{content:\"\"}.fa-volume-off:before{content:\"\"}.fa-volume-down:before{content:\"\"}.fa-volume-up:before{content:\"\"}.fa-qrcode:before{content:\"\"}.fa-barcode:before{content:\"\"}.fa-tag:before{content:\"\"}.fa-tags:before{content:\"\"}.fa-book:before{content:\"\"}.fa-bookmark:before{content:\"\"}.fa-print:before{content:\"\"}.fa-camera:before{content:\"\"}.fa-font:before{content:\"\"}.fa-bold:before{content:\"\"}.fa-italic:before{content:\"\"}.fa-text-height:before{content:\"\"}.fa-text-width:before{content:\"\"}.fa-align-left:before{content:\"\"}.fa-align-center:before{content:\"\"}.fa-align-right:before{content:\"\"}.fa-align-justify:before{content:\"\"}.fa-list:before{content:\"\"}.fa-dedent:before,.fa-outdent:before{content:\"\"}.fa-indent:before{content:\"\"}.fa-video-camera:before{content:\"\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\"}.fa-pencil:before{content:\"\"}.fa-map-marker:before{content:\"\"}.fa-adjust:before{content:\"\"}.fa-tint:before{content:\"\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\"}.fa-share-square-o:before{content:\"\"}.fa-check-square-o:before{content:\"\"}.fa-arrows:before{content:\"\"}.fa-step-backward:before{content:\"\"}.fa-fast-backward:before{content:\"\"}.fa-backward:before{content:\"\"}.fa-play:before{content:\"\"}.fa-pause:before{content:\"\"}.fa-stop:before{content:\"\"}.fa-forward:before{content:\"\"}.fa-fast-forward:before{content:\"\"}.fa-step-forward:before{content:\"\"}.fa-eject:before{content:\"\"}.fa-chevron-left:before{content:\"\"}.fa-chevron-right:before{content:\"\"}.fa-plus-circle:before{content:\"\"}.fa-minus-circle:before{content:\"\"}.fa-times-circle:before{content:\"\"}.fa-check-circle:before{content:\"\"}.fa-question-circle:before{content:\"\"}.fa-info-circle:before{content:\"\"}.fa-crosshairs:before{content:\"\"}.fa-times-circle-o:before{content:\"\"}.fa-check-circle-o:before{content:\"\"}.fa-ban:before{content:\"\"}.fa-arrow-left:before{content:\"\"}.fa-arrow-right:before{content:\"\"}.fa-arrow-up:before{content:\"\"}.fa-arrow-down:before{content:\"\"}.fa-mail-forward:before,.fa-share:before{content:\"\"}.fa-expand:before{content:\"\"}.fa-compress:before{content:\"\"}.fa-plus:before{content:\"\"}.fa-minus:before{content:\"\"}.fa-asterisk:before{content:\"\"}.fa-exclamation-circle:before{content:\"\"}.fa-gift:before{content:\"\"}.fa-leaf:before{content:\"\"}.fa-fire:before{content:\"\"}.fa-eye:before{content:\"\"}.fa-eye-slash:before{content:\"\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\"}.fa-plane:before{content:\"\"}.fa-calendar:before{content:\"\"}.fa-random:before{content:\"\"}.fa-comment:before{content:\"\"}.fa-magnet:before{content:\"\"}.fa-chevron-up:before{content:\"\"}.fa-chevron-down:before{content:\"\"}.fa-retweet:before{content:\"\"}.fa-shopping-cart:before{content:\"\"}.fa-folder:before{content:\"\"}.fa-folder-open:before{content:\"\"}.fa-arrows-v:before{content:\"\"}.fa-arrows-h:before{content:\"\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\"}.fa-twitter-square:before{content:\"\"}.fa-facebook-square:before{content:\"\"}.fa-camera-retro:before{content:\"\"}.fa-key:before{content:\"\"}.fa-gears:before,.fa-cogs:before{content:\"\"}.fa-comments:before{content:\"\"}.fa-thumbs-o-up:before{content:\"\"}.fa-thumbs-o-down:before{content:\"\"}.fa-star-half:before{content:\"\"}.fa-heart-o:before{content:\"\"}.fa-sign-out:before{content:\"\"}.fa-linkedin-square:before{content:\"\"}.fa-thumb-tack:before{content:\"\"}.fa-external-link:before{content:\"\"}.fa-sign-in:before{content:\"\"}.fa-trophy:before{content:\"\"}.fa-github-square:before{content:\"\"}.fa-upload:before{content:\"\"}.fa-lemon-o:before{content:\"\"}.fa-phone:before{content:\"\"}.fa-square-o:before{content:\"\"}.fa-bookmark-o:before{content:\"\"}.fa-phone-square:before{content:\"\"}.fa-twitter:before{content:\"\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\"}.fa-github:before{content:\"\"}.fa-unlock:before{content:\"\"}.fa-credit-card:before{content:\"\"}.fa-feed:before,.fa-rss:before{content:\"\"}.fa-hdd-o:before{content:\"\"}.fa-bullhorn:before{content:\"\"}.fa-bell:before{content:\"\"}.fa-certificate:before{content:\"\"}.fa-hand-o-right:before{content:\"\"}.fa-hand-o-left:before{content:\"\"}.fa-hand-o-up:before{content:\"\"}.fa-hand-o-down:before{content:\"\"}.fa-arrow-circle-left:before{content:\"\"}.fa-arrow-circle-right:before{content:\"\"}.fa-arrow-circle-up:before{content:\"\"}.fa-arrow-circle-down:before{content:\"\"}.fa-globe:before{content:\"\"}.fa-wrench:before{content:\"\"}.fa-tasks:before{content:\"\"}.fa-filter:before{content:\"\"}.fa-briefcase:before{content:\"\"}.fa-arrows-alt:before{content:\"\"}.fa-group:before,.fa-users:before{content:\"\"}.fa-chain:before,.fa-link:before{content:\"\"}.fa-cloud:before{content:\"\"}.fa-flask:before{content:\"\"}.fa-cut:before,.fa-scissors:before{content:\"\"}.fa-copy:before,.fa-files-o:before{content:\"\"}.fa-paperclip:before{content:\"\"}.fa-save:before,.fa-floppy-o:before{content:\"\"}.fa-square:before{content:\"\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\"}.fa-list-ul:before{content:\"\"}.fa-list-ol:before{content:\"\"}.fa-strikethrough:before{content:\"\"}.fa-underline:before{content:\"\"}.fa-table:before{content:\"\"}.fa-magic:before{content:\"\"}.fa-truck:before{content:\"\"}.fa-pinterest:before{content:\"\"}.fa-pinterest-square:before{content:\"\"}.fa-google-plus-square:before{content:\"\"}.fa-google-plus:before{content:\"\"}.fa-money:before{content:\"\"}.fa-caret-down:before{content:\"\"}.fa-caret-up:before{content:\"\"}.fa-caret-left:before{content:\"\"}.fa-caret-right:before{content:\"\"}.fa-columns:before{content:\"\"}.fa-unsorted:before,.fa-sort:before{content:\"\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\"}.fa-envelope:before{content:\"\"}.fa-linkedin:before{content:\"\"}.fa-rotate-left:before,.fa-undo:before{content:\"\"}.fa-legal:before,.fa-gavel:before{content:\"\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\"}.fa-comment-o:before{content:\"\"}.fa-comments-o:before{content:\"\"}.fa-flash:before,.fa-bolt:before{content:\"\"}.fa-sitemap:before{content:\"\"}.fa-umbrella:before{content:\"\"}.fa-paste:before,.fa-clipboard:before{content:\"\"}.fa-lightbulb-o:before{content:\"\"}.fa-exchange:before{content:\"\"}.fa-cloud-download:before{content:\"\"}.fa-cloud-upload:before{content:\"\"}.fa-user-md:before{content:\"\"}.fa-stethoscope:before{content:\"\"}.fa-suitcase:before{content:\"\"}.fa-bell-o:before{content:\"\"}.fa-coffee:before{content:\"\"}.fa-cutlery:before{content:\"\"}.fa-file-text-o:before{content:\"\"}.fa-building-o:before{content:\"\"}.fa-hospital-o:before{content:\"\"}.fa-ambulance:before{content:\"\"}.fa-medkit:before{content:\"\"}.fa-fighter-jet:before{content:\"\"}.fa-beer:before{content:\"\"}.fa-h-square:before{content:\"\"}.fa-plus-square:before{content:\"\"}.fa-angle-double-left:before{content:\"\"}.fa-angle-double-right:before{content:\"\"}.fa-angle-double-up:before{content:\"\"}.fa-angle-double-down:before{content:\"\"}.fa-angle-left:before{content:\"\"}.fa-angle-right:before{content:\"\"}.fa-angle-up:before{content:\"\"}.fa-angle-down:before{content:\"\"}.fa-desktop:before{content:\"\"}.fa-laptop:before{content:\"\"}.fa-tablet:before{content:\"\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\"}.fa-circle-o:before{content:\"\"}.fa-quote-left:before{content:\"\"}.fa-quote-right:before{content:\"\"}.fa-spinner:before{content:\"\"}.fa-circle:before{content:\"\"}.fa-mail-reply:before,.fa-reply:before{content:\"\"}.fa-github-alt:before{content:\"\"}.fa-folder-o:before{content:\"\"}.fa-folder-open-o:before{content:\"\"}.fa-smile-o:before{content:\"\"}.fa-frown-o:before{content:\"\"}.fa-meh-o:before{content:\"\"}.fa-gamepad:before{content:\"\"}.fa-keyboard-o:before{content:\"\"}.fa-flag-o:before{content:\"\"}.fa-flag-checkered:before{content:\"\"}.fa-terminal:before{content:\"\"}.fa-code:before{content:\"\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\"}.fa-location-arrow:before{content:\"\"}.fa-crop:before{content:\"\"}.fa-code-fork:before{content:\"\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\"}.fa-question:before{content:\"\"}.fa-info:before{content:\"\"}.fa-exclamation:before{content:\"\"}.fa-superscript:before{content:\"\"}.fa-subscript:before{content:\"\"}.fa-eraser:before{content:\"\"}.fa-puzzle-piece:before{content:\"\"}.fa-microphone:before{content:\"\"}.fa-microphone-slash:before{content:\"\"}.fa-shield:before{content:\"\"}.fa-calendar-o:before{content:\"\"}.fa-fire-extinguisher:before{content:\"\"}.fa-rocket:before{content:\"\"}.fa-maxcdn:before{content:\"\"}.fa-chevron-circle-left:before{content:\"\"}.fa-chevron-circle-right:before{content:\"\"}.fa-chevron-circle-up:before{content:\"\"}.fa-chevron-circle-down:before{content:\"\"}.fa-html5:before{content:\"\"}.fa-css3:before{content:\"\"}.fa-anchor:before{content:\"\"}.fa-unlock-alt:before{content:\"\"}.fa-bullseye:before{content:\"\"}.fa-ellipsis-h:before{content:\"\"}.fa-ellipsis-v:before{content:\"\"}.fa-rss-square:before{content:\"\"}.fa-play-circle:before{content:\"\"}.fa-ticket:before{content:\"\"}.fa-minus-square:before{content:\"\"}.fa-minus-square-o:before{content:\"\"}.fa-level-up:before{content:\"\"}.fa-level-down:before{content:\"\"}.fa-check-square:before{content:\"\"}.fa-pencil-square:before{content:\"\"}.fa-external-link-square:before{content:\"\"}.fa-share-square:before{content:\"\"}.fa-compass:before{content:\"\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\"}.fa-euro:before,.fa-eur:before{content:\"\"}.fa-gbp:before{content:\"\"}.fa-dollar:before,.fa-usd:before{content:\"\"}.fa-rupee:before,.fa-inr:before{content:\"\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\"}.fa-won:before,.fa-krw:before{content:\"\"}.fa-bitcoin:before,.fa-btc:before{content:\"\"}.fa-file:before{content:\"\"}.fa-file-text:before{content:\"\"}.fa-sort-alpha-asc:before{content:\"\"}.fa-sort-alpha-desc:before{content:\"\"}.fa-sort-amount-asc:before{content:\"\"}.fa-sort-amount-desc:before{content:\"\"}.fa-sort-numeric-asc:before{content:\"\"}.fa-sort-numeric-desc:before{content:\"\"}.fa-thumbs-up:before{content:\"\"}.fa-thumbs-down:before{content:\"\"}.fa-youtube-square:before{content:\"\"}.fa-youtube:before{content:\"\"}.fa-xing:before{content:\"\"}.fa-xing-square:before{content:\"\"}.fa-youtube-play:before{content:\"\"}.fa-dropbox:before{content:\"\"}.fa-stack-overflow:before{content:\"\"}.fa-instagram:before{content:\"\"}.fa-flickr:before{content:\"\"}.fa-adn:before{content:\"\"}.fa-bitbucket:before{content:\"\"}.fa-bitbucket-square:before{content:\"\"}.fa-tumblr:before{content:\"\"}.fa-tumblr-square:before{content:\"\"}.fa-long-arrow-down:before{content:\"\"}.fa-long-arrow-up:before{content:\"\"}.fa-long-arrow-left:before{content:\"\"}.fa-long-arrow-right:before{content:\"\"}.fa-apple:before{content:\"\"}.fa-windows:before{content:\"\"}.fa-android:before{content:\"\"}.fa-linux:before{content:\"\"}.fa-dribbble:before{content:\"\"}.fa-skype:before{content:\"\"}.fa-foursquare:before{content:\"\"}.fa-trello:before{content:\"\"}.fa-female:before{content:\"\"}.fa-male:before{content:\"\"}.fa-gittip:before,.fa-gratipay:before{content:\"\"}.fa-sun-o:before{content:\"\"}.fa-moon-o:before{content:\"\"}.fa-archive:before{content:\"\"}.fa-bug:before{content:\"\"}.fa-vk:before{content:\"\"}.fa-weibo:before{content:\"\"}.fa-renren:before{content:\"\"}.fa-pagelines:before{content:\"\"}.fa-stack-exchange:before{content:\"\"}.fa-arrow-circle-o-right:before{content:\"\"}.fa-arrow-circle-o-left:before{content:\"\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\"}.fa-dot-circle-o:before{content:\"\"}.fa-wheelchair:before{content:\"\"}.fa-vimeo-square:before{content:\"\"}.fa-turkish-lira:before,.fa-try:before{content:\"\"}.fa-plus-square-o:before{content:\"\"}.fa-space-shuttle:before{content:\"\"}.fa-slack:before{content:\"\"}.fa-envelope-square:before{content:\"\"}.fa-wordpress:before{content:\"\"}.fa-openid:before{content:\"\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\"}.fa-yahoo:before{content:\"\"}.fa-google:before{content:\"\"}.fa-reddit:before{content:\"\"}.fa-reddit-square:before{content:\"\"}.fa-stumbleupon-circle:before{content:\"\"}.fa-stumbleupon:before{content:\"\"}.fa-delicious:before{content:\"\"}.fa-digg:before{content:\"\"}.fa-pied-piper:before{content:\"\"}.fa-pied-piper-alt:before{content:\"\"}.fa-drupal:before{content:\"\"}.fa-joomla:before{content:\"\"}.fa-language:before{content:\"\"}.fa-fax:before{content:\"\"}.fa-building:before{content:\"\"}.fa-child:before{content:\"\"}.fa-paw:before{content:\"\"}.fa-spoon:before{content:\"\"}.fa-cube:before{content:\"\"}.fa-cubes:before{content:\"\"}.fa-behance:before{content:\"\"}.fa-behance-square:before{content:\"\"}.fa-steam:before{content:\"\"}.fa-steam-square:before{content:\"\"}.fa-recycle:before{content:\"\"}.fa-automobile:before,.fa-car:before{content:\"\"}.fa-cab:before,.fa-taxi:before{content:\"\"}.fa-tree:before{content:\"\"}.fa-spotify:before{content:\"\"}.fa-deviantart:before{content:\"\"}.fa-soundcloud:before{content:\"\"}.fa-database:before{content:\"\"}.fa-file-pdf-o:before{content:\"\"}.fa-file-word-o:before{content:\"\"}.fa-file-excel-o:before{content:\"\"}.fa-file-powerpoint-o:before{content:\"\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\"}.fa-file-code-o:before{content:\"\"}.fa-vine:before{content:\"\"}.fa-codepen:before{content:\"\"}.fa-jsfiddle:before{content:\"\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\"}.fa-circle-o-notch:before{content:\"\"}.fa-ra:before,.fa-rebel:before{content:\"\"}.fa-ge:before,.fa-empire:before{content:\"\"}.fa-git-square:before{content:\"\"}.fa-git:before{content:\"\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\"}.fa-tencent-weibo:before{content:\"\"}.fa-qq:before{content:\"\"}.fa-wechat:before,.fa-weixin:before{content:\"\"}.fa-send:before,.fa-paper-plane:before{content:\"\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\"}.fa-history:before{content:\"\"}.fa-circle-thin:before{content:\"\"}.fa-header:before{content:\"\"}.fa-paragraph:before{content:\"\"}.fa-sliders:before{content:\"\"}.fa-share-alt:before{content:\"\"}.fa-share-alt-square:before{content:\"\"}.fa-bomb:before{content:\"\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\"}.fa-tty:before{content:\"\"}.fa-binoculars:before{content:\"\"}.fa-plug:before{content:\"\"}.fa-slideshare:before{content:\"\"}.fa-twitch:before{content:\"\"}.fa-yelp:before{content:\"\"}.fa-newspaper-o:before{content:\"\"}.fa-wifi:before{content:\"\"}.fa-calculator:before{content:\"\"}.fa-paypal:before{content:\"\"}.fa-google-wallet:before{content:\"\"}.fa-cc-visa:before{content:\"\"}.fa-cc-mastercard:before{content:\"\"}.fa-cc-discover:before{content:\"\"}.fa-cc-amex:before{content:\"\"}.fa-cc-paypal:before{content:\"\"}.fa-cc-stripe:before{content:\"\"}.fa-bell-slash:before{content:\"\"}.fa-bell-slash-o:before{content:\"\"}.fa-trash:before{content:\"\"}.fa-copyright:before{content:\"\"}.fa-at:before{content:\"\"}.fa-eyedropper:before{content:\"\"}.fa-paint-brush:before{content:\"\"}.fa-birthday-cake:before{content:\"\"}.fa-area-chart:before{content:\"\"}.fa-pie-chart:before{content:\"\"}.fa-line-chart:before{content:\"\"}.fa-lastfm:before{content:\"\"}.fa-lastfm-square:before{content:\"\"}.fa-toggle-off:before{content:\"\"}.fa-toggle-on:before{content:\"\"}.fa-bicycle:before{content:\"\"}.fa-bus:before{content:\"\"}.fa-ioxhost:before{content:\"\"}.fa-angellist:before{content:\"\"}.fa-cc:before{content:\"\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\"}.fa-meanpath:before{content:\"\"}.fa-buysellads:before{content:\"\"}.fa-connectdevelop:before{content:\"\"}.fa-dashcube:before{content:\"\"}.fa-forumbee:before{content:\"\"}.fa-leanpub:before{content:\"\"}.fa-sellsy:before{content:\"\"}.fa-shirtsinbulk:before{content:\"\"}.fa-simplybuilt:before{content:\"\"}.fa-skyatlas:before{content:\"\"}.fa-cart-plus:before{content:\"\"}.fa-cart-arrow-down:before{content:\"\"}.fa-diamond:before{content:\"\"}.fa-ship:before{content:\"\"}.fa-user-secret:before{content:\"\"}.fa-motorcycle:before{content:\"\"}.fa-street-view:before{content:\"\"}.fa-heartbeat:before{content:\"\"}.fa-venus:before{content:\"\"}.fa-mars:before{content:\"\"}.fa-mercury:before{content:\"\"}.fa-intersex:before,.fa-transgender:before{content:\"\"}.fa-transgender-alt:before{content:\"\"}.fa-venus-double:before{content:\"\"}.fa-mars-double:before{content:\"\"}.fa-venus-mars:before{content:\"\"}.fa-mars-stroke:before{content:\"\"}.fa-mars-stroke-v:before{content:\"\"}.fa-mars-stroke-h:before{content:\"\"}.fa-neuter:before{content:\"\"}.fa-genderless:before{content:\"\"}.fa-facebook-official:before{content:\"\"}.fa-pinterest-p:before{content:\"\"}.fa-whatsapp:before{content:\"\"}.fa-server:before{content:\"\"}.fa-user-plus:before{content:\"\"}.fa-user-times:before{content:\"\"}.fa-hotel:before,.fa-bed:before{content:\"\"}.fa-viacoin:before{content:\"\"}.fa-train:before{content:\"\"}.fa-subway:before{content:\"\"}.fa-medium:before{content:\"\"}.fa-yc:before,.fa-y-combinator:before{content:\"\"}.fa-optin-monster:before{content:\"\"}.fa-opencart:before{content:\"\"}.fa-expeditedssl:before{content:\"\"}.fa-battery-4:before,.fa-battery-full:before{content:\"\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\"}.fa-mouse-pointer:before{content:\"\"}.fa-i-cursor:before{content:\"\"}.fa-object-group:before{content:\"\"}.fa-object-ungroup:before{content:\"\"}.fa-sticky-note:before{content:\"\"}.fa-sticky-note-o:before{content:\"\"}.fa-cc-jcb:before{content:\"\"}.fa-cc-diners-club:before{content:\"\"}.fa-clone:before{content:\"\"}.fa-balance-scale:before{content:\"\"}.fa-hourglass-o:before{content:\"\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\"}.fa-hourglass:before{content:\"\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\"}.fa-hand-scissors-o:before{content:\"\"}.fa-hand-lizard-o:before{content:\"\"}.fa-hand-spock-o:before{content:\"\"}.fa-hand-pointer-o:before{content:\"\"}.fa-hand-peace-o:before{content:\"\"}.fa-trademark:before{content:\"\"}.fa-registered:before{content:\"\"}.fa-creative-commons:before{content:\"\"}.fa-gg:before{content:\"\"}.fa-gg-circle:before{content:\"\"}.fa-tripadvisor:before{content:\"\"}.fa-odnoklassniki:before{content:\"\"}.fa-odnoklassniki-square:before{content:\"\"}.fa-get-pocket:before{content:\"\"}.fa-wikipedia-w:before{content:\"\"}.fa-safari:before{content:\"\"}.fa-chrome:before{content:\"\"}.fa-firefox:before{content:\"\"}.fa-opera:before{content:\"\"}.fa-internet-explorer:before{content:\"\"}.fa-tv:before,.fa-television:before{content:\"\"}.fa-contao:before{content:\"\"}.fa-500px:before{content:\"\"}.fa-amazon:before{content:\"\"}.fa-calendar-plus-o:before{content:\"\"}.fa-calendar-minus-o:before{content:\"\"}.fa-calendar-times-o:before{content:\"\"}.fa-calendar-check-o:before{content:\"\"}.fa-industry:before{content:\"\"}.fa-map-pin:before{content:\"\"}.fa-map-signs:before{content:\"\"}.fa-map-o:before{content:\"\"}.fa-map:before{content:\"\"}.fa-commenting:before{content:\"\"}.fa-commenting-o:before{content:\"\"}.fa-houzz:before{content:\"\"}.fa-vimeo:before{content:\"\"}.fa-black-tie:before{content:\"\"}.fa-fonticons:before{content:\"\"}","/*!\n * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\n */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\"\\f000\"}.fa-music:before{content:\"\\f001\"}.fa-search:before{content:\"\\f002\"}.fa-envelope-o:before{content:\"\\f003\"}.fa-heart:before{content:\"\\f004\"}.fa-star:before{content:\"\\f005\"}.fa-star-o:before{content:\"\\f006\"}.fa-user:before{content:\"\\f007\"}.fa-film:before{content:\"\\f008\"}.fa-th-large:before{content:\"\\f009\"}.fa-th:before{content:\"\\f00a\"}.fa-th-list:before{content:\"\\f00b\"}.fa-check:before{content:\"\\f00c\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\"\\f00d\"}.fa-search-plus:before{content:\"\\f00e\"}.fa-search-minus:before{content:\"\\f010\"}.fa-power-off:before{content:\"\\f011\"}.fa-signal:before{content:\"\\f012\"}.fa-gear:before,.fa-cog:before{content:\"\\f013\"}.fa-trash-o:before{content:\"\\f014\"}.fa-home:before{content:\"\\f015\"}.fa-file-o:before{content:\"\\f016\"}.fa-clock-o:before{content:\"\\f017\"}.fa-road:before{content:\"\\f018\"}.fa-download:before{content:\"\\f019\"}.fa-arrow-circle-o-down:before{content:\"\\f01a\"}.fa-arrow-circle-o-up:before{content:\"\\f01b\"}.fa-inbox:before{content:\"\\f01c\"}.fa-play-circle-o:before{content:\"\\f01d\"}.fa-rotate-right:before,.fa-repeat:before{content:\"\\f01e\"}.fa-refresh:before{content:\"\\f021\"}.fa-list-alt:before{content:\"\\f022\"}.fa-lock:before{content:\"\\f023\"}.fa-flag:before{content:\"\\f024\"}.fa-headphones:before{content:\"\\f025\"}.fa-volume-off:before{content:\"\\f026\"}.fa-volume-down:before{content:\"\\f027\"}.fa-volume-up:before{content:\"\\f028\"}.fa-qrcode:before{content:\"\\f029\"}.fa-barcode:before{content:\"\\f02a\"}.fa-tag:before{content:\"\\f02b\"}.fa-tags:before{content:\"\\f02c\"}.fa-book:before{content:\"\\f02d\"}.fa-bookmark:before{content:\"\\f02e\"}.fa-print:before{content:\"\\f02f\"}.fa-camera:before{content:\"\\f030\"}.fa-font:before{content:\"\\f031\"}.fa-bold:before{content:\"\\f032\"}.fa-italic:before{content:\"\\f033\"}.fa-text-height:before{content:\"\\f034\"}.fa-text-width:before{content:\"\\f035\"}.fa-align-left:before{content:\"\\f036\"}.fa-align-center:before{content:\"\\f037\"}.fa-align-right:before{content:\"\\f038\"}.fa-align-justify:before{content:\"\\f039\"}.fa-list:before{content:\"\\f03a\"}.fa-dedent:before,.fa-outdent:before{content:\"\\f03b\"}.fa-indent:before{content:\"\\f03c\"}.fa-video-camera:before{content:\"\\f03d\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\"\\f03e\"}.fa-pencil:before{content:\"\\f040\"}.fa-map-marker:before{content:\"\\f041\"}.fa-adjust:before{content:\"\\f042\"}.fa-tint:before{content:\"\\f043\"}.fa-edit:before,.fa-pencil-square-o:before{content:\"\\f044\"}.fa-share-square-o:before{content:\"\\f045\"}.fa-check-square-o:before{content:\"\\f046\"}.fa-arrows:before{content:\"\\f047\"}.fa-step-backward:before{content:\"\\f048\"}.fa-fast-backward:before{content:\"\\f049\"}.fa-backward:before{content:\"\\f04a\"}.fa-play:before{content:\"\\f04b\"}.fa-pause:before{content:\"\\f04c\"}.fa-stop:before{content:\"\\f04d\"}.fa-forward:before{content:\"\\f04e\"}.fa-fast-forward:before{content:\"\\f050\"}.fa-step-forward:before{content:\"\\f051\"}.fa-eject:before{content:\"\\f052\"}.fa-chevron-left:before{content:\"\\f053\"}.fa-chevron-right:before{content:\"\\f054\"}.fa-plus-circle:before{content:\"\\f055\"}.fa-minus-circle:before{content:\"\\f056\"}.fa-times-circle:before{content:\"\\f057\"}.fa-check-circle:before{content:\"\\f058\"}.fa-question-circle:before{content:\"\\f059\"}.fa-info-circle:before{content:\"\\f05a\"}.fa-crosshairs:before{content:\"\\f05b\"}.fa-times-circle-o:before{content:\"\\f05c\"}.fa-check-circle-o:before{content:\"\\f05d\"}.fa-ban:before{content:\"\\f05e\"}.fa-arrow-left:before{content:\"\\f060\"}.fa-arrow-right:before{content:\"\\f061\"}.fa-arrow-up:before{content:\"\\f062\"}.fa-arrow-down:before{content:\"\\f063\"}.fa-mail-forward:before,.fa-share:before{content:\"\\f064\"}.fa-expand:before{content:\"\\f065\"}.fa-compress:before{content:\"\\f066\"}.fa-plus:before{content:\"\\f067\"}.fa-minus:before{content:\"\\f068\"}.fa-asterisk:before{content:\"\\f069\"}.fa-exclamation-circle:before{content:\"\\f06a\"}.fa-gift:before{content:\"\\f06b\"}.fa-leaf:before{content:\"\\f06c\"}.fa-fire:before{content:\"\\f06d\"}.fa-eye:before{content:\"\\f06e\"}.fa-eye-slash:before{content:\"\\f070\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\"\\f071\"}.fa-plane:before{content:\"\\f072\"}.fa-calendar:before{content:\"\\f073\"}.fa-random:before{content:\"\\f074\"}.fa-comment:before{content:\"\\f075\"}.fa-magnet:before{content:\"\\f076\"}.fa-chevron-up:before{content:\"\\f077\"}.fa-chevron-down:before{content:\"\\f078\"}.fa-retweet:before{content:\"\\f079\"}.fa-shopping-cart:before{content:\"\\f07a\"}.fa-folder:before{content:\"\\f07b\"}.fa-folder-open:before{content:\"\\f07c\"}.fa-arrows-v:before{content:\"\\f07d\"}.fa-arrows-h:before{content:\"\\f07e\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\"\\f080\"}.fa-twitter-square:before{content:\"\\f081\"}.fa-facebook-square:before{content:\"\\f082\"}.fa-camera-retro:before{content:\"\\f083\"}.fa-key:before{content:\"\\f084\"}.fa-gears:before,.fa-cogs:before{content:\"\\f085\"}.fa-comments:before{content:\"\\f086\"}.fa-thumbs-o-up:before{content:\"\\f087\"}.fa-thumbs-o-down:before{content:\"\\f088\"}.fa-star-half:before{content:\"\\f089\"}.fa-heart-o:before{content:\"\\f08a\"}.fa-sign-out:before{content:\"\\f08b\"}.fa-linkedin-square:before{content:\"\\f08c\"}.fa-thumb-tack:before{content:\"\\f08d\"}.fa-external-link:before{content:\"\\f08e\"}.fa-sign-in:before{content:\"\\f090\"}.fa-trophy:before{content:\"\\f091\"}.fa-github-square:before{content:\"\\f092\"}.fa-upload:before{content:\"\\f093\"}.fa-lemon-o:before{content:\"\\f094\"}.fa-phone:before{content:\"\\f095\"}.fa-square-o:before{content:\"\\f096\"}.fa-bookmark-o:before{content:\"\\f097\"}.fa-phone-square:before{content:\"\\f098\"}.fa-twitter:before{content:\"\\f099\"}.fa-facebook-f:before,.fa-facebook:before{content:\"\\f09a\"}.fa-github:before{content:\"\\f09b\"}.fa-unlock:before{content:\"\\f09c\"}.fa-credit-card:before{content:\"\\f09d\"}.fa-feed:before,.fa-rss:before{content:\"\\f09e\"}.fa-hdd-o:before{content:\"\\f0a0\"}.fa-bullhorn:before{content:\"\\f0a1\"}.fa-bell:before{content:\"\\f0f3\"}.fa-certificate:before{content:\"\\f0a3\"}.fa-hand-o-right:before{content:\"\\f0a4\"}.fa-hand-o-left:before{content:\"\\f0a5\"}.fa-hand-o-up:before{content:\"\\f0a6\"}.fa-hand-o-down:before{content:\"\\f0a7\"}.fa-arrow-circle-left:before{content:\"\\f0a8\"}.fa-arrow-circle-right:before{content:\"\\f0a9\"}.fa-arrow-circle-up:before{content:\"\\f0aa\"}.fa-arrow-circle-down:before{content:\"\\f0ab\"}.fa-globe:before{content:\"\\f0ac\"}.fa-wrench:before{content:\"\\f0ad\"}.fa-tasks:before{content:\"\\f0ae\"}.fa-filter:before{content:\"\\f0b0\"}.fa-briefcase:before{content:\"\\f0b1\"}.fa-arrows-alt:before{content:\"\\f0b2\"}.fa-group:before,.fa-users:before{content:\"\\f0c0\"}.fa-chain:before,.fa-link:before{content:\"\\f0c1\"}.fa-cloud:before{content:\"\\f0c2\"}.fa-flask:before{content:\"\\f0c3\"}.fa-cut:before,.fa-scissors:before{content:\"\\f0c4\"}.fa-copy:before,.fa-files-o:before{content:\"\\f0c5\"}.fa-paperclip:before{content:\"\\f0c6\"}.fa-save:before,.fa-floppy-o:before{content:\"\\f0c7\"}.fa-square:before{content:\"\\f0c8\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\"\\f0c9\"}.fa-list-ul:before{content:\"\\f0ca\"}.fa-list-ol:before{content:\"\\f0cb\"}.fa-strikethrough:before{content:\"\\f0cc\"}.fa-underline:before{content:\"\\f0cd\"}.fa-table:before{content:\"\\f0ce\"}.fa-magic:before{content:\"\\f0d0\"}.fa-truck:before{content:\"\\f0d1\"}.fa-pinterest:before{content:\"\\f0d2\"}.fa-pinterest-square:before{content:\"\\f0d3\"}.fa-google-plus-square:before{content:\"\\f0d4\"}.fa-google-plus:before{content:\"\\f0d5\"}.fa-money:before{content:\"\\f0d6\"}.fa-caret-down:before{content:\"\\f0d7\"}.fa-caret-up:before{content:\"\\f0d8\"}.fa-caret-left:before{content:\"\\f0d9\"}.fa-caret-right:before{content:\"\\f0da\"}.fa-columns:before{content:\"\\f0db\"}.fa-unsorted:before,.fa-sort:before{content:\"\\f0dc\"}.fa-sort-down:before,.fa-sort-desc:before{content:\"\\f0dd\"}.fa-sort-up:before,.fa-sort-asc:before{content:\"\\f0de\"}.fa-envelope:before{content:\"\\f0e0\"}.fa-linkedin:before{content:\"\\f0e1\"}.fa-rotate-left:before,.fa-undo:before{content:\"\\f0e2\"}.fa-legal:before,.fa-gavel:before{content:\"\\f0e3\"}.fa-dashboard:before,.fa-tachometer:before{content:\"\\f0e4\"}.fa-comment-o:before{content:\"\\f0e5\"}.fa-comments-o:before{content:\"\\f0e6\"}.fa-flash:before,.fa-bolt:before{content:\"\\f0e7\"}.fa-sitemap:before{content:\"\\f0e8\"}.fa-umbrella:before{content:\"\\f0e9\"}.fa-paste:before,.fa-clipboard:before{content:\"\\f0ea\"}.fa-lightbulb-o:before{content:\"\\f0eb\"}.fa-exchange:before{content:\"\\f0ec\"}.fa-cloud-download:before{content:\"\\f0ed\"}.fa-cloud-upload:before{content:\"\\f0ee\"}.fa-user-md:before{content:\"\\f0f0\"}.fa-stethoscope:before{content:\"\\f0f1\"}.fa-suitcase:before{content:\"\\f0f2\"}.fa-bell-o:before{content:\"\\f0a2\"}.fa-coffee:before{content:\"\\f0f4\"}.fa-cutlery:before{content:\"\\f0f5\"}.fa-file-text-o:before{content:\"\\f0f6\"}.fa-building-o:before{content:\"\\f0f7\"}.fa-hospital-o:before{content:\"\\f0f8\"}.fa-ambulance:before{content:\"\\f0f9\"}.fa-medkit:before{content:\"\\f0fa\"}.fa-fighter-jet:before{content:\"\\f0fb\"}.fa-beer:before{content:\"\\f0fc\"}.fa-h-square:before{content:\"\\f0fd\"}.fa-plus-square:before{content:\"\\f0fe\"}.fa-angle-double-left:before{content:\"\\f100\"}.fa-angle-double-right:before{content:\"\\f101\"}.fa-angle-double-up:before{content:\"\\f102\"}.fa-angle-double-down:before{content:\"\\f103\"}.fa-angle-left:before{content:\"\\f104\"}.fa-angle-right:before{content:\"\\f105\"}.fa-angle-up:before{content:\"\\f106\"}.fa-angle-down:before{content:\"\\f107\"}.fa-desktop:before{content:\"\\f108\"}.fa-laptop:before{content:\"\\f109\"}.fa-tablet:before{content:\"\\f10a\"}.fa-mobile-phone:before,.fa-mobile:before{content:\"\\f10b\"}.fa-circle-o:before{content:\"\\f10c\"}.fa-quote-left:before{content:\"\\f10d\"}.fa-quote-right:before{content:\"\\f10e\"}.fa-spinner:before{content:\"\\f110\"}.fa-circle:before{content:\"\\f111\"}.fa-mail-reply:before,.fa-reply:before{content:\"\\f112\"}.fa-github-alt:before{content:\"\\f113\"}.fa-folder-o:before{content:\"\\f114\"}.fa-folder-open-o:before{content:\"\\f115\"}.fa-smile-o:before{content:\"\\f118\"}.fa-frown-o:before{content:\"\\f119\"}.fa-meh-o:before{content:\"\\f11a\"}.fa-gamepad:before{content:\"\\f11b\"}.fa-keyboard-o:before{content:\"\\f11c\"}.fa-flag-o:before{content:\"\\f11d\"}.fa-flag-checkered:before{content:\"\\f11e\"}.fa-terminal:before{content:\"\\f120\"}.fa-code:before{content:\"\\f121\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\"\\f122\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\"\\f123\"}.fa-location-arrow:before{content:\"\\f124\"}.fa-crop:before{content:\"\\f125\"}.fa-code-fork:before{content:\"\\f126\"}.fa-unlink:before,.fa-chain-broken:before{content:\"\\f127\"}.fa-question:before{content:\"\\f128\"}.fa-info:before{content:\"\\f129\"}.fa-exclamation:before{content:\"\\f12a\"}.fa-superscript:before{content:\"\\f12b\"}.fa-subscript:before{content:\"\\f12c\"}.fa-eraser:before{content:\"\\f12d\"}.fa-puzzle-piece:before{content:\"\\f12e\"}.fa-microphone:before{content:\"\\f130\"}.fa-microphone-slash:before{content:\"\\f131\"}.fa-shield:before{content:\"\\f132\"}.fa-calendar-o:before{content:\"\\f133\"}.fa-fire-extinguisher:before{content:\"\\f134\"}.fa-rocket:before{content:\"\\f135\"}.fa-maxcdn:before{content:\"\\f136\"}.fa-chevron-circle-left:before{content:\"\\f137\"}.fa-chevron-circle-right:before{content:\"\\f138\"}.fa-chevron-circle-up:before{content:\"\\f139\"}.fa-chevron-circle-down:before{content:\"\\f13a\"}.fa-html5:before{content:\"\\f13b\"}.fa-css3:before{content:\"\\f13c\"}.fa-anchor:before{content:\"\\f13d\"}.fa-unlock-alt:before{content:\"\\f13e\"}.fa-bullseye:before{content:\"\\f140\"}.fa-ellipsis-h:before{content:\"\\f141\"}.fa-ellipsis-v:before{content:\"\\f142\"}.fa-rss-square:before{content:\"\\f143\"}.fa-play-circle:before{content:\"\\f144\"}.fa-ticket:before{content:\"\\f145\"}.fa-minus-square:before{content:\"\\f146\"}.fa-minus-square-o:before{content:\"\\f147\"}.fa-level-up:before{content:\"\\f148\"}.fa-level-down:before{content:\"\\f149\"}.fa-check-square:before{content:\"\\f14a\"}.fa-pencil-square:before{content:\"\\f14b\"}.fa-external-link-square:before{content:\"\\f14c\"}.fa-share-square:before{content:\"\\f14d\"}.fa-compass:before{content:\"\\f14e\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\"\\f150\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\"\\f151\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\"\\f152\"}.fa-euro:before,.fa-eur:before{content:\"\\f153\"}.fa-gbp:before{content:\"\\f154\"}.fa-dollar:before,.fa-usd:before{content:\"\\f155\"}.fa-rupee:before,.fa-inr:before{content:\"\\f156\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\"\\f157\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\"\\f158\"}.fa-won:before,.fa-krw:before{content:\"\\f159\"}.fa-bitcoin:before,.fa-btc:before{content:\"\\f15a\"}.fa-file:before{content:\"\\f15b\"}.fa-file-text:before{content:\"\\f15c\"}.fa-sort-alpha-asc:before{content:\"\\f15d\"}.fa-sort-alpha-desc:before{content:\"\\f15e\"}.fa-sort-amount-asc:before{content:\"\\f160\"}.fa-sort-amount-desc:before{content:\"\\f161\"}.fa-sort-numeric-asc:before{content:\"\\f162\"}.fa-sort-numeric-desc:before{content:\"\\f163\"}.fa-thumbs-up:before{content:\"\\f164\"}.fa-thumbs-down:before{content:\"\\f165\"}.fa-youtube-square:before{content:\"\\f166\"}.fa-youtube:before{content:\"\\f167\"}.fa-xing:before{content:\"\\f168\"}.fa-xing-square:before{content:\"\\f169\"}.fa-youtube-play:before{content:\"\\f16a\"}.fa-dropbox:before{content:\"\\f16b\"}.fa-stack-overflow:before{content:\"\\f16c\"}.fa-instagram:before{content:\"\\f16d\"}.fa-flickr:before{content:\"\\f16e\"}.fa-adn:before{content:\"\\f170\"}.fa-bitbucket:before{content:\"\\f171\"}.fa-bitbucket-square:before{content:\"\\f172\"}.fa-tumblr:before{content:\"\\f173\"}.fa-tumblr-square:before{content:\"\\f174\"}.fa-long-arrow-down:before{content:\"\\f175\"}.fa-long-arrow-up:before{content:\"\\f176\"}.fa-long-arrow-left:before{content:\"\\f177\"}.fa-long-arrow-right:before{content:\"\\f178\"}.fa-apple:before{content:\"\\f179\"}.fa-windows:before{content:\"\\f17a\"}.fa-android:before{content:\"\\f17b\"}.fa-linux:before{content:\"\\f17c\"}.fa-dribbble:before{content:\"\\f17d\"}.fa-skype:before{content:\"\\f17e\"}.fa-foursquare:before{content:\"\\f180\"}.fa-trello:before{content:\"\\f181\"}.fa-female:before{content:\"\\f182\"}.fa-male:before{content:\"\\f183\"}.fa-gittip:before,.fa-gratipay:before{content:\"\\f184\"}.fa-sun-o:before{content:\"\\f185\"}.fa-moon-o:before{content:\"\\f186\"}.fa-archive:before{content:\"\\f187\"}.fa-bug:before{content:\"\\f188\"}.fa-vk:before{content:\"\\f189\"}.fa-weibo:before{content:\"\\f18a\"}.fa-renren:before{content:\"\\f18b\"}.fa-pagelines:before{content:\"\\f18c\"}.fa-stack-exchange:before{content:\"\\f18d\"}.fa-arrow-circle-o-right:before{content:\"\\f18e\"}.fa-arrow-circle-o-left:before{content:\"\\f190\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\"\\f191\"}.fa-dot-circle-o:before{content:\"\\f192\"}.fa-wheelchair:before{content:\"\\f193\"}.fa-vimeo-square:before{content:\"\\f194\"}.fa-turkish-lira:before,.fa-try:before{content:\"\\f195\"}.fa-plus-square-o:before{content:\"\\f196\"}.fa-space-shuttle:before{content:\"\\f197\"}.fa-slack:before{content:\"\\f198\"}.fa-envelope-square:before{content:\"\\f199\"}.fa-wordpress:before{content:\"\\f19a\"}.fa-openid:before{content:\"\\f19b\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\"\\f19c\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\"\\f19d\"}.fa-yahoo:before{content:\"\\f19e\"}.fa-google:before{content:\"\\f1a0\"}.fa-reddit:before{content:\"\\f1a1\"}.fa-reddit-square:before{content:\"\\f1a2\"}.fa-stumbleupon-circle:before{content:\"\\f1a3\"}.fa-stumbleupon:before{content:\"\\f1a4\"}.fa-delicious:before{content:\"\\f1a5\"}.fa-digg:before{content:\"\\f1a6\"}.fa-pied-piper:before{content:\"\\f1a7\"}.fa-pied-piper-alt:before{content:\"\\f1a8\"}.fa-drupal:before{content:\"\\f1a9\"}.fa-joomla:before{content:\"\\f1aa\"}.fa-language:before{content:\"\\f1ab\"}.fa-fax:before{content:\"\\f1ac\"}.fa-building:before{content:\"\\f1ad\"}.fa-child:before{content:\"\\f1ae\"}.fa-paw:before{content:\"\\f1b0\"}.fa-spoon:before{content:\"\\f1b1\"}.fa-cube:before{content:\"\\f1b2\"}.fa-cubes:before{content:\"\\f1b3\"}.fa-behance:before{content:\"\\f1b4\"}.fa-behance-square:before{content:\"\\f1b5\"}.fa-steam:before{content:\"\\f1b6\"}.fa-steam-square:before{content:\"\\f1b7\"}.fa-recycle:before{content:\"\\f1b8\"}.fa-automobile:before,.fa-car:before{content:\"\\f1b9\"}.fa-cab:before,.fa-taxi:before{content:\"\\f1ba\"}.fa-tree:before{content:\"\\f1bb\"}.fa-spotify:before{content:\"\\f1bc\"}.fa-deviantart:before{content:\"\\f1bd\"}.fa-soundcloud:before{content:\"\\f1be\"}.fa-database:before{content:\"\\f1c0\"}.fa-file-pdf-o:before{content:\"\\f1c1\"}.fa-file-word-o:before{content:\"\\f1c2\"}.fa-file-excel-o:before{content:\"\\f1c3\"}.fa-file-powerpoint-o:before{content:\"\\f1c4\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\"\\f1c5\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\"\\f1c6\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\"\\f1c7\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\"\\f1c8\"}.fa-file-code-o:before{content:\"\\f1c9\"}.fa-vine:before{content:\"\\f1ca\"}.fa-codepen:before{content:\"\\f1cb\"}.fa-jsfiddle:before{content:\"\\f1cc\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\"\\f1cd\"}.fa-circle-o-notch:before{content:\"\\f1ce\"}.fa-ra:before,.fa-rebel:before{content:\"\\f1d0\"}.fa-ge:before,.fa-empire:before{content:\"\\f1d1\"}.fa-git-square:before{content:\"\\f1d2\"}.fa-git:before{content:\"\\f1d3\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\"\\f1d4\"}.fa-tencent-weibo:before{content:\"\\f1d5\"}.fa-qq:before{content:\"\\f1d6\"}.fa-wechat:before,.fa-weixin:before{content:\"\\f1d7\"}.fa-send:before,.fa-paper-plane:before{content:\"\\f1d8\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\"\\f1d9\"}.fa-history:before{content:\"\\f1da\"}.fa-circle-thin:before{content:\"\\f1db\"}.fa-header:before{content:\"\\f1dc\"}.fa-paragraph:before{content:\"\\f1dd\"}.fa-sliders:before{content:\"\\f1de\"}.fa-share-alt:before{content:\"\\f1e0\"}.fa-share-alt-square:before{content:\"\\f1e1\"}.fa-bomb:before{content:\"\\f1e2\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\"\\f1e3\"}.fa-tty:before{content:\"\\f1e4\"}.fa-binoculars:before{content:\"\\f1e5\"}.fa-plug:before{content:\"\\f1e6\"}.fa-slideshare:before{content:\"\\f1e7\"}.fa-twitch:before{content:\"\\f1e8\"}.fa-yelp:before{content:\"\\f1e9\"}.fa-newspaper-o:before{content:\"\\f1ea\"}.fa-wifi:before{content:\"\\f1eb\"}.fa-calculator:before{content:\"\\f1ec\"}.fa-paypal:before{content:\"\\f1ed\"}.fa-google-wallet:before{content:\"\\f1ee\"}.fa-cc-visa:before{content:\"\\f1f0\"}.fa-cc-mastercard:before{content:\"\\f1f1\"}.fa-cc-discover:before{content:\"\\f1f2\"}.fa-cc-amex:before{content:\"\\f1f3\"}.fa-cc-paypal:before{content:\"\\f1f4\"}.fa-cc-stripe:before{content:\"\\f1f5\"}.fa-bell-slash:before{content:\"\\f1f6\"}.fa-bell-slash-o:before{content:\"\\f1f7\"}.fa-trash:before{content:\"\\f1f8\"}.fa-copyright:before{content:\"\\f1f9\"}.fa-at:before{content:\"\\f1fa\"}.fa-eyedropper:before{content:\"\\f1fb\"}.fa-paint-brush:before{content:\"\\f1fc\"}.fa-birthday-cake:before{content:\"\\f1fd\"}.fa-area-chart:before{content:\"\\f1fe\"}.fa-pie-chart:before{content:\"\\f200\"}.fa-line-chart:before{content:\"\\f201\"}.fa-lastfm:before{content:\"\\f202\"}.fa-lastfm-square:before{content:\"\\f203\"}.fa-toggle-off:before{content:\"\\f204\"}.fa-toggle-on:before{content:\"\\f205\"}.fa-bicycle:before{content:\"\\f206\"}.fa-bus:before{content:\"\\f207\"}.fa-ioxhost:before{content:\"\\f208\"}.fa-angellist:before{content:\"\\f209\"}.fa-cc:before{content:\"\\f20a\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\"\\f20b\"}.fa-meanpath:before{content:\"\\f20c\"}.fa-buysellads:before{content:\"\\f20d\"}.fa-connectdevelop:before{content:\"\\f20e\"}.fa-dashcube:before{content:\"\\f210\"}.fa-forumbee:before{content:\"\\f211\"}.fa-leanpub:before{content:\"\\f212\"}.fa-sellsy:before{content:\"\\f213\"}.fa-shirtsinbulk:before{content:\"\\f214\"}.fa-simplybuilt:before{content:\"\\f215\"}.fa-skyatlas:before{content:\"\\f216\"}.fa-cart-plus:before{content:\"\\f217\"}.fa-cart-arrow-down:before{content:\"\\f218\"}.fa-diamond:before{content:\"\\f219\"}.fa-ship:before{content:\"\\f21a\"}.fa-user-secret:before{content:\"\\f21b\"}.fa-motorcycle:before{content:\"\\f21c\"}.fa-street-view:before{content:\"\\f21d\"}.fa-heartbeat:before{content:\"\\f21e\"}.fa-venus:before{content:\"\\f221\"}.fa-mars:before{content:\"\\f222\"}.fa-mercury:before{content:\"\\f223\"}.fa-intersex:before,.fa-transgender:before{content:\"\\f224\"}.fa-transgender-alt:before{content:\"\\f225\"}.fa-venus-double:before{content:\"\\f226\"}.fa-mars-double:before{content:\"\\f227\"}.fa-venus-mars:before{content:\"\\f228\"}.fa-mars-stroke:before{content:\"\\f229\"}.fa-mars-stroke-v:before{content:\"\\f22a\"}.fa-mars-stroke-h:before{content:\"\\f22b\"}.fa-neuter:before{content:\"\\f22c\"}.fa-genderless:before{content:\"\\f22d\"}.fa-facebook-official:before{content:\"\\f230\"}.fa-pinterest-p:before{content:\"\\f231\"}.fa-whatsapp:before{content:\"\\f232\"}.fa-server:before{content:\"\\f233\"}.fa-user-plus:before{content:\"\\f234\"}.fa-user-times:before{content:\"\\f235\"}.fa-hotel:before,.fa-bed:before{content:\"\\f236\"}.fa-viacoin:before{content:\"\\f237\"}.fa-train:before{content:\"\\f238\"}.fa-subway:before{content:\"\\f239\"}.fa-medium:before{content:\"\\f23a\"}.fa-yc:before,.fa-y-combinator:before{content:\"\\f23b\"}.fa-optin-monster:before{content:\"\\f23c\"}.fa-opencart:before{content:\"\\f23d\"}.fa-expeditedssl:before{content:\"\\f23e\"}.fa-battery-4:before,.fa-battery-full:before{content:\"\\f240\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\"\\f241\"}.fa-battery-2:before,.fa-battery-half:before{content:\"\\f242\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\"\\f243\"}.fa-battery-0:before,.fa-battery-empty:before{content:\"\\f244\"}.fa-mouse-pointer:before{content:\"\\f245\"}.fa-i-cursor:before{content:\"\\f246\"}.fa-object-group:before{content:\"\\f247\"}.fa-object-ungroup:before{content:\"\\f248\"}.fa-sticky-note:before{content:\"\\f249\"}.fa-sticky-note-o:before{content:\"\\f24a\"}.fa-cc-jcb:before{content:\"\\f24b\"}.fa-cc-diners-club:before{content:\"\\f24c\"}.fa-clone:before{content:\"\\f24d\"}.fa-balance-scale:before{content:\"\\f24e\"}.fa-hourglass-o:before{content:\"\\f250\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\"\\f251\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\"\\f252\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\"\\f253\"}.fa-hourglass:before{content:\"\\f254\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\"\\f255\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\"\\f256\"}.fa-hand-scissors-o:before{content:\"\\f257\"}.fa-hand-lizard-o:before{content:\"\\f258\"}.fa-hand-spock-o:before{content:\"\\f259\"}.fa-hand-pointer-o:before{content:\"\\f25a\"}.fa-hand-peace-o:before{content:\"\\f25b\"}.fa-trademark:before{content:\"\\f25c\"}.fa-registered:before{content:\"\\f25d\"}.fa-creative-commons:before{content:\"\\f25e\"}.fa-gg:before{content:\"\\f260\"}.fa-gg-circle:before{content:\"\\f261\"}.fa-tripadvisor:before{content:\"\\f262\"}.fa-odnoklassniki:before{content:\"\\f263\"}.fa-odnoklassniki-square:before{content:\"\\f264\"}.fa-get-pocket:before{content:\"\\f265\"}.fa-wikipedia-w:before{content:\"\\f266\"}.fa-safari:before{content:\"\\f267\"}.fa-chrome:before{content:\"\\f268\"}.fa-firefox:before{content:\"\\f269\"}.fa-opera:before{content:\"\\f26a\"}.fa-internet-explorer:before{content:\"\\f26b\"}.fa-tv:before,.fa-television:before{content:\"\\f26c\"}.fa-contao:before{content:\"\\f26d\"}.fa-500px:before{content:\"\\f26e\"}.fa-amazon:before{content:\"\\f270\"}.fa-calendar-plus-o:before{content:\"\\f271\"}.fa-calendar-minus-o:before{content:\"\\f272\"}.fa-calendar-times-o:before{content:\"\\f273\"}.fa-calendar-check-o:before{content:\"\\f274\"}.fa-industry:before{content:\"\\f275\"}.fa-map-pin:before{content:\"\\f276\"}.fa-map-signs:before{content:\"\\f277\"}.fa-map-o:before{content:\"\\f278\"}.fa-map:before{content:\"\\f279\"}.fa-commenting:before{content:\"\\f27a\"}.fa-commenting-o:before{content:\"\\f27b\"}.fa-houzz:before{content:\"\\f27c\"}.fa-vimeo:before{content:\"\\f27d\"}.fa-black-tie:before{content:\"\\f27e\"}.fa-fonticons:before{content:\"\\f280\"}\n"]} \ No newline at end of file diff --git a/filer/static/filer/fonts/FontAwesome.otf b/filer/static/filer/fonts/FontAwesome.otf deleted file mode 100644 index 681bdd4d4c8dddbaeb4d4f2a1f58c38cad92afe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106260 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�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 diff --git a/filer/static/filer/fonts/fa-brands-400.eot b/filer/static/filer/fonts/fa-brands-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..cba6c6cce88182cb9374acea956769f87a8b8004 GIT binary patch literal 134294 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

  • -hVoDd!sPW~|*- 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

    I7ktX3;2a z!Q^2NTULA9Xz4VDl090rjrrg9_cz6c)i(8Qv$2EpcW+zpBe`vRw-4}#wqtgI7XBRo z0dRq?Z3QnV7k6}^m!f@_lG?6XccZP>k>QQDrNe3=INQ@_xy8DhLaW_JjEc6M@DQzD zy$hJA!92~Dr8CqO57yO4EN2GcsrB=197<;t2WdRKKiyI7G6S%PB2Q+r6hq{#p7~C=|TC>~U;tsIGqH1r& zq7%ejCauZ$T8*MgVNQTV*sWaHZQw zyH<4{39K0K7Q#)po2Id2G<}@VrO|+n2LPd4FIhEqXlo>Ty;C#UVT4*dU5NvDO0#B$ z4wzAq%FyNr%a*%?@M!yK$rg;3M|O4SgVwKjI=0k26*Dw%W?%k?7zb6=+yN%uO zfrK2;j(cybUbZ9Wu~o4rVgZo=My<AGKpb5{L4TKxcy#Y}%x#4sdxknqF{8HSHj)0V=o2_4IDb>g6rPKK zga2t%)z~%E2HEN9Z;H0N-ECUSzP>0_AVr~>$M-ynhqla4UE8r*JlhN3swtvyy(&U7K*xTKmbjZJ7+gC*Q(0GEcgNjnIQyH^+YMH;`k; ze)2PVurv9jtI+c-msv8pIvl2C*rrFJO{=0tViESP1P~CVKd?3tdtL>idt*mwq6gx= z&s{sUGGH;fX)wwdJw--trv#J_pFaY_<{rLn@Kqld_)+vKF#Q&SFJRRe`-5vD2TVi3 z3Y40L%SK*Bpfgw!EC&dtC_cVt)ixk4Ms>+(BZoNV*|J)VQniLwjLuu$0-VD9HjO6Y zKx{^YA6C|G4P@0L|EkgfT>5H4NPdflEZgh(XdK6^XW&ANel4>JILQ$TH@s;+HtCCv_}s+rwDi%WZ`1=9p0 zw!-MtY~XfzOQ~J0GC0UIU3Le+&?&()JI+qic6Dq%x<;#^8P!&)QSzxi<|TpMUQ~Z- z(=wV`sk5;G3h1MBh59@wF|D3NRZ13+%Lj5ZZ6tjeR<7CwzFskvTE^B|z4l%enTx8_Lc!_V tQ}Nuu$|~3i@UJG&)t*y)k*%w@#|J;^49B;>vGG;4{mxNbf%{wUKLeisFF61J literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fa-brands-400.svg b/filer/static/filer/fonts/fa-brands-400.svg new file mode 100644 index 000000000..b9881a43b --- /dev/null +++ b/filer/static/filer/fonts/fa-brands-400.svg @@ -0,0 +1,3717 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/filer/static/filer/fonts/fa-brands-400.ttf b/filer/static/filer/fonts/fa-brands-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8d75deddae520da95d3cf111f4ccbf3361074292 GIT binary patch literal 133988 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 z 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 OvGs=*>()Ih1OWi|n4ByC literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fa-regular-400.eot b/filer/static/filer/fonts/fa-regular-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..a4e598936b3eb6ceb0080dccccdcd49bfe95ca98 GIT binary patch literal 34034 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 + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/filer/static/filer/fonts/fa-regular-400.ttf b/filer/static/filer/fonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7157aafbacdb095b479ae52f59e28e19ce61d79a GIT binary patch literal 33736 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 b5?7;>Z>>sQQ*PhZo%{_-QW_Bdb7%h#hbB&U literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fa-regular-400.woff2 b/filer/static/filer/fonts/fa-regular-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..56328948b3b1bacb23a13af9d727fd75c0343448 GIT binary patch literal 13224 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

      j< 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%0D?I3ov(fVN| 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 M_kYo)8A$*D0I2Z0cmMzZ literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fa-solid-900.woff2 b/filer/static/filer/fonts/fa-solid-900.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2217164f0c05a385d7d0d83e030fdbae01e99304 GIT binary patch literal 78268 zcmV(@K-Rx^Pew8T0RR910WrJ)4FCWD0~hoF0Wo3$ONJx>00000000000000000000 z0000#Mn+Uk92y=5U;vp;5eN#3=4gn+LIE}cBm9D+l5(TeNkOfH1GK zKycdts!E>2_#aR(j!mIAt9~;``0r}QwhWrx4iGu=^^ENQ|NsAG$wJ2Ve}j7l8ygcr zF+-`W%&HWHn%HzhV7~2Ch<(a~l+wvi2m)w&wNu1nLT1jS(;iT!Ak91;93ni{X$cZS z3YDD1``#-Lp40-U2&f3C>>NVe&oHQGc#slfDXObzRRmNQb!{uy>NJO!lscbakm;hM znIRK1LuQ7|Op|5?Hq)jXF)4x!$lo04^p2SEx_VDYa{g4gs@9zj!11lYiH_vNe=(>j6xwn8S3{(@(oXAFX}X z>sk7|a0H`HF**vNjCOHs%o!OVPoSv%{_8$(bx#2I#9N{Qa0OtObLwlL-K?VifmmVg+!_fU+{AIWQb=sooOgrxc z$i$Hr)69z>-VIC9;fHxJ-!RRa3_939Vuu$$%u@jZP|K0VnvSm&t;h=jj%|7PdHe(G zsur)l`Vd&*p&%GpOPhK}RX@T8mnE_XYZTD~u&e9g_wBuK5t+uul+OO6QN0-`P+c1E^jTR!{ zUYot6cBVaG``BK)DU{K|Iiuvc;?e;-7G^>fLZuIl8UXE$?%=ix zd8WV+(^4(jStAjhu275wEXSXJ% z!)-1n{7}DG|JSc#RiOX@1&~4_4T1>(L5YMY6$&7`Py}TVqTCd%?xod!Z)LUTJ=yM{ zPVW%_sX$7yC^@8#lk#zHa+rCVkiy}<*E#m#yr(_x>A1(W?=R)O=I`EBY&8X}R?whV z4^UWRe>~}y382M517G{aLNvs_JO*SLCd=nSlEYBHZBIioH1A#Zvs7V=Fu{0mNO{@G z%(Yx-wam;d{3N^gdyyYih2wokl@ei@|7vPoB|A#wBi?pE zs?tYPp5ED}Jbq90fa@)2ox|vEAEN1%`lRIUpH7;iX5i z+v#=Rjx+ly*W=vhbei*RY)UFe_Ha5f=nGkv%P)iunML&1fRJLXz1u%=llKmb#5+;r z)b!FK&3=Y&zNro6TsM;{msU}^vP>%o48zYbmcw2jzdN1AX2)kO+>8~`Dj;QSf5=?* zczSKy7kwM3h*(xZK_Y3B%%r&gKhNC$zh=EPenpnNB1I%cML}5??pWsz9c0d)e{tUE zxK=SxSyRC=VFxlGpzR-b0~+S_i?@?L@9pw8SOZb&vVTOfr%15hPFR9oFoFJ@@KPi+ z!`cNu;o;vIPx$W#PHh~Y*7f)02Z}I17pQL*745c#yEWW#7N2;y$WyY`&SIv;n`0WD z((J^4_8g5%(9B==04Ss zsvmBg+x6wm!^=A#;S6v2*>_qqEGHP})#=w{d-w4C_FczF!>oo%N$bL+w|tK0X&s#X zCr}w&p-V@b4nlhyJ6I|Y-?u&3Fz+wFP3n7458-Ya(7V|aY(%%v;VZrzvd zHj(NI*IyhRpD2+b7{TzOVtPTGck_CByeUr9t#DW!ug}(Gx#xN7lfU}=?zI~`+hk278mUPl)~u5N;U-xLEtEKjzFccxOu_Rcsi3WmMV2dTSpgn z048V*mPlu@dyhWSFGPpebouCV|M>L%ul~-zID7HRlXpM;_V=kPxBj^D@c(2G(Qri; zfA&(tgyd;<)%%f&6gH|DG_hY?*4#ZKj}BFRI88$Ik|c<`{`&6e?f2*s&52IhFrXUfzO> zR7O;e*~9IHM}lm6`^z2UZ#Rd>-xKTqZ7(XXZPm78w|=B%P;1uygQWHxDDdp`ijH6C zHD%hz>b4zndZjNPZkW{Hx?YkTw)xGot0xR8Ylxb2jlsqNw*cXkRbNA7e}9ES1bMgE zVENZoPnT)qe>7dd|C$Tz1MF>Faw@%SWGyS{q?LutWhPN-nTVIMII&`6C`wKw=Lx>9 zsl+-CeN&`K967dS8oH)PK?z3ivJ3;?b9jy=QE1=RWi0Y6iF8fjIRb^hd9GtyrlD)9 zEQt;g>pm{$_4wiL=JNdXaBq9??cMy`%=GUj|Mbc|9ru@LrdlChQkd`j#`?ON%8K%m;-bRr*ocsz?%mp&8tQ7&qN5@s!a_rWg8~D3ramCJy6LiG%Vs$Q=z=!1f+sBookk^-N<=(1i$SLmIEKOy;L65AuTzT!JT99^z~itO zBn$!uxL7SFgW&TxWdfd6$(ky)DD)@2;}t_mH? z&{PQ?&!@w_&P|S`h|gUd`JO6#EULaUTtHla^D{fw1tP4bU_bWr63rJrZsdG^D|`ZR zpfVaoSm+pjuEAT}23CL2` zqTsioQFsxFwcvD=7(j}u>9XBahtmzV#fD)SdkQeOs|q-S!1HDrb3CcM>h)Gr#N9?^ zm#9$abVsJHGT$g1yYVDq=@GY+awqG1b+RUYGEq${;O{)eKAZeWwTj&s*d38oe7UNE z0G7JdT-M#@~OvE4`M?3}*%FO^{ zEdYxO+Zb*mfn;DCZ`QEzug>>?*w=9a=&5Ls3U_voSOMR#Oryvq!V*L7m;7;|FI+Pe zNmW+{{U>Hl$>er3}d_L(IP4Qy-!64Q=wLn zXy-H=biDnBTQ)G^CqcaaL{oW14;!zX*xy^<#Lh!40_r=#{(#n1C>a z=DQ>AzESq_JGdmp>^>?5OuB^Sv z#I$Uf%m~+(zdtgx?sJ1}ICYl$Htm+Ub`m259`}0zEbf}vUHjXI+N)pKs`5P^N!IGJ zSDFTnCoS}sdEK%=i=_t=Bb154i*<|GRg*wt7iD!##$pL!1Ek#!ilUX8mScM_k85)g z!<9C>wHQBMMvFT)77o+~nD>#DNZgVy}@Lu0}D&a&xr4Ja^bl2^*h$7m6 zs2vPsFo5Lt;g!->ww)iJlWavUW5jDW5%}aij54O^JuX{|wRuNo;C$ZR{<_iDN-w#V zbUKxc5`+bJ4v@o}B6+-pC9y5~TCB)CRL>7UN^;H;q`Qv;#la``rte()!~tsVVIOj4 zfgr(q>=qqt-Es|1N>cp8+YcVz?DZ#FVU*Y2F1XU0ztLmMe|H&P}bAj))*0*jpDqQu|D9b{5WtNUYYrKobcGJ=E&fg&2DK8q4o^ zSvNzV(ajG#f)MOF7(^_=7~AV7od}XjJ#l!wtLEBv8wByh2)+NW_x>~~*k~1RT+BJ1 z-eB=U=`2HxiGd7xjo6%-$kqBr%P1knT=y#YijA7)EOE0IY_MHYjAa9rAvXhSbQu}VX@h{=8C z3mDiWYHGWswZ@!B6_f;J@ms5H7=wf_Qdv#_sr`<3)}~`S*?x3xx0}s&eh=jr`h6Z8$UI+e45_gX)o zCVf%)aR1n~#Zi85ixG>6kr&mtj|6Roq|~zY{b@=lg)+~5|9ovEVvGatcVIyIG*8YM zIiK&0zd5RQ%U!jA%zQR%+B=NCB?7#vEt@| z;SeQ36S8~Vl81=1p00;?p3%rzn_mBRg_)aK+lsgrrqgybq7|kfPRKXPB4^5(;J55~ zF1>ZdBBms5VF9ubA6Q6kb`h6-DFkQCWvOgww1xUiZ471B@pvi4tYx*)Y90>6GDyQ@ zCI&A{Ss%#47%XM0kQHwbE8(W3XX!SkDGX9)i?X-Y4YQXchf>`G505hn54bhD4A;@` zk{VhCD<2p(6C&lBIpXpg#^ddFZ>p-d`S4nesvf0~52liK9;r%^WK=aC|FmxGttxM@ z@+gjL5t_YN*|Ej$fh%=;w)T^P6Xfmc%V`giRCQ^|PpjXZyrllef`%+y#GQHZea*}7 zjJb8(`M*y2OEpee_s`&?Nb;&OSzo@03uU1j_1)xA}s!_&FKl2VW_x@?EgDz+IGL`v5ll zGBj|0zhp2}W-UU<&~;5#(C&*Kk*3ylx6Pqku-?qDPH^6@DY?a9cGSbs^l{lP4BL7T z1SJshw5v06z)z;C5_>4aKBf!7NUOAOh6-yHw4=SS>dv+H80)B&()&V9bW_Rw<8as+ z^P-d}ekH8{d)%uJeYd}2J{+ilHX5ly@QfTI>(+->Bl%USCMBm9uT#UJk}G8_X2D{~ zS+LFNWW8GRj{N~Rv!vLYfem(RiH(7^GLcHQ?cAAQ^f>2fmZ&$t=_CT4gOHZjiaFih zm{??^k{BalUIEd>qy$xxx#VI@UgIV!l78JYNyK(3%dzD)5r$!>?(3+YU1A&poMQ^j zNgcqQx`jCdom7}3=02cYTLgN9bYKk#&3N92+Utki2kfL-N!Hz0gmI1MF48L>6=E$B{5!=?l?wL9# zsN9!yLGDeu_)sVU_=IsVzze2p$+ARja>&?b%=WPee?IL=fuz%j%=pGd0X62eh%De9 z`EVg0ObZ@LVYY{WCnx#S7ND+F&aahu90^NVp0Koh+clS>NlD(tr*6aAB{LAiS=ogibUTf2XN2;eR9(vf3F zt=hqD-gQIk!kgXFVV&2BW`1_sAf#z3L`O^tZlNYWr9|0q_3ws>PC+^3&?%3$WM;io zTD<9?u;D-hH(6sHIHG=BO>j*W8vTD;rk`O}JWK`*lqftTh${Je>JK>{nmhO2#7Tsj zXtu-4Aw+CF?XhpzBT&H_Y8#a#mPt;P`xWL(OXVIk{r<_K27shXeB*Yf2 znvu_13lSa6-fuB3I1IIl#4;cXf08Z~9{ zkI;$_?GR&!5EjS$rCWSSehF<>4>*#*z;t6IV@*9bv=<~mQjCftg~NYXa6 z&+!oP@KwOPaFJF3kB6%}nl>hc1K^Oy$Yyayb#BCA)&7VlxH2pb$=kdPq0SI;4#OFPiM%@_el&5lA%|1%AHuCn%* z)dK#9p~u(HkHl$7p}k>!LmzybU`4fB=~ zfzov9uj#1hmot}9PcfoDj|L>GXqwc!uE+GeI_T)M(`Y_N_77a;!P5gUA{nO~2K5Kd z`j+-m1Ykm+z}!nwQUqxA1BHQ@0QM8=v-wtsahva>_klr{TbO!I(tzo7~V?;mLn08TLnza zUXJ4IAj7Cw&$GV}YcamJjk3OE(-)j$iL{4GatYnc@w_0{gPiBVytw0gVYpGlQzJ{~ z7OT>!Mn=OK&V$sK(6OWkj=icxSXUx~dk?kV3bkpy2G*9u;`n0R-6bqimd;=HeTSV{0Q5*S}B_1MmLUlpQ1V`ch;`1-75z4kFx#G3;^ z|DN>rW6Paa0D5NjIlO00?2&2opG^ZYgB9-8dQyQin?~>qnEt%PI-jj3;}Q$M!vGj- zHZ?H?JwoBcCY5v`MlH%m%(8q(r6hca*K~daVN^{A_&8K)@|~C0&PE+lgCqzaj1s)L zh$$a!9Wji|3-f8*bCRNNc^3YACYVJFlg2Q*5M7Ky)At2J{gW};c9`s!lKNc=0muFY zWKoOi7_8YWWh28+N_I)gc5u@p>14il00;P(YLg@;sEn;tcp|!Xv5}G?Ez+mn`)09! zI%jBwg$$~G#g#VKZ$qawe2#oUl5`~w9mCu)H%{43R8 zxY#-A^QV6slIm&E2)g&as>C0M?fc2|0@3PhLt%7vj0^!7BLhVw*xU5i;K5JuSEsw~ z{%2*};}ypVRVG(18BRrFAyq#ja59gee|Ktx*;a`XP0^FUO_l|7k3}X=GGHS+Q%O?I zWNHM2Dfo#T=5jt)bT>AlHKhoL19+r^ImB~ug1;;|Ok*E1xv%@^hZy%Z) ze`kM4e&op*IV)eJU4V{ZINz#C_b3W=>Ds=B14hmElPt5jNk;Yh{YfH5+DKG7)Ff4M**Cl`%2Sr59W>~l=$4eVA9g%mSDUbMlg*sJ z&B|3^kOr13C*W~d6c zr`u#_iW<*Mr0Q-R=AyH zld)r&9z2faBhg2|qUe(_Z#n020cibg@7pdC4F~|n+!u@?6yOHHpaL#wBf4f&clc5y zFK`l}UU6rp3n{U>Sl_YdRBR?iOlt+asbZNwnKR|F><38)KU^dl7s1!fb&Q9sIyM*< zkJ7IFqxTpNCiZDyFstB(AW_FBQMMvA%c;{<9oX=x3#qrt{XJc}N+K`>rvq^G3)V-_ z(ly9kjXljUm>Nu26}v$Yy@L1+u@xJnmLJo6n|MfsGWjT`0p8Jh5zYwa=iP*01a<~{ zUKnwCMBEed2NcNbf>Y->>jhyA?JCQavxc&O*N=6#u*B-0d=~#p)~#OZnnW2O03f4; zzE7oA8{hUC+Csbq-|x~br|{a7OkRBPak*Uj`G-^J(AdF8rG)h`b#++(+xV0BCqH}f zuXATUe|miYvjc0|R};1SjBo4Jn=3H-R^H7uYJ9HkRkJ*S%7ine!D(tAUN%j7!weSm$L7*Y_3Ks3~ zwuS?1EF#+Fsm!3_HtYo)ZL`)}PFRWmvSSz(!ai~Y(g}(Tg-WUh3Ss5hh)@gQ$?-gv zCuFy0m-eVV0;w8)_ifr4DeGZvZOr^aBxU7GzxJ_O1)YYlww}OTB$$GV!0?Yu)}>QT z-u><;@x^{Cz$cEWO|cAo#^&1fIk~+I8nJGx_cZ4Qu1KQ^LXN0OKN`h_2m*St)YIbj zGAZ|-tulEOc~>CZhV0Yvi=R;oON@Go$OBh5k2Vs0<@TI#prVZ~!U(L55ARKs2{7rl@SUW$GVFR<|e$>ZKKrm!s= zBtNp&>Tn>3yz+xs^4h$)d>;_$>~INpq7Na(6CIt#nP@{WwcxAAc2amF?sHBM%Zsy% z$%|A!fak(_tCX@(b#f6m!!2!AW?~1S<^J;@(J$HU^r_?-OKcVOsN@JS?p=rnyv86pAZXZr@s}3VY7D{`H#__Q72&3E!J3f=hJ%Eo!`$BU{eJ z-#K9HLkCBhrElE5Rp1;d*=J2`6`f7)H<$*S4VoFX``PyQj1hPgw%a`*0O3~lDC5wd zq+hqcapj{!vJ=bM*#on~bd?V5E9AGNgoCMZa&k5HfdUYY7DAF@o#*e(0AE?XbSd;p ze){R_%fN3=)`VPNyL>sZ_FsJQ+M1Ax416D6wle&k^;nvkm`esZvd$CNSzXDTEsx?W^}@Y;b72%TN7JuWhonx5TNO^B!nh3 zb+F3#w%51dxLa<$l{*4(>F?Aipfw>PG#?&M3;sV2D5)k053M2%kXhKkY)yZKMQA#4 zjrE<+u(+4b5L*<68{5m6h_cuD;Fy~-DoNsHQ*6bEGeMOu`!aOWx-^2`=B z$&40rZx&?36O>I3inUCBO?X&Z4VR2j;vYbAddqHGDr~d0F=8U&7%$N-or#z7SoX5O zlJ0Xs2vyKjwJ2q`nni3LGoup}kB;&iIpc;~{4_eKsw6I9O64ii&Ztu~CqAL*UxZ!9 zG8yqdijXwSh#wUe_`R^CpZYw+$_Z2EWEBn-&_z_5=rCb|X++^rbSB}uAUdETMfP0P3xl2xuR~kC*M2Y)=89n% z7ww5vX0u7rPEKP7026|c_w`MujZzHBA>sXT28X4i26L1!>SR8xT-s0-i2edSh*-!q zG((R8@kP6|Afw7S0(VVvIMEXhe5eu*lp+CJJ#ig+J@wCHuVACOnvXc|!P~Y0+&EJh`z85KtBh=ef{uLKt5j5rnaJ{=S|VWemr9Ehut4X`DCG zCWrCycuXVh8GT`fkoF4tj1bgrDh!eIlL_CO-Y+!`M$HQEDholfW+BX4$ci};oI--K zeI$s;tLf#-qneuQ>lzzy*NvOqo!768gVbTm%%O#P>X8ZQFwBPV)OnEMBTVdM5(`}% zLSfmSrzM&i2xczgj*)gO6M{Cyw8byW3+>Z*T-8x^)}*mki;gzwHQ$@6`$PvwK@=3u zHB4mGE3i58DG-3iAC-A_4z$#e0Z}_+8!Gg@cH8N8gQ0L`s^bqxTR)Ng$USjRnd-SM z&HOHZE1@lyrl?ex#Xb>P7T0j4om3rTD6xb;hP`PXd(U`T%u_%-hPsDvZ^(g-5nfSb z?ol}ebx@euEjt0expM09* zzQAYbaGwC^HO$&cNh6}WY0>Pq`{9ZJm(FZ!(<#;+Bv%r7-;BUX2pmCA6IuoV(;r&S z$dAWf7p_+T=eGChXh87dndippki&qYkW3xz%!v$quxo3tltH?pEcN=#Xz~Jf89Wrt*q?E(j^V2Zttl*0Rm`zq92kA?mz2%aH>k(iTXq+7(g2P2i;$5V zCPD}z)V!cJMWUy?phYu5K8jF)!t@YJ0_M@$!cXqAsE8$h*;9thmy{fZau(aWwy?c! z)VmckpQ{n(by|@f18@a`(G!!8^C}h^)$q%@NMtnmOqXbkZ{8xSFu9%K>8%*!Q<`Hl z2_YjnI!w!FybW(hk`sp`&wz@eo-b{CDevy;u*^mB3rFRp;qER3nkcDQdKfA+*jFy8 zBKQ&~;=Hx^n0>8{qiB3V#Q_H^g{ANdF>e7Dh_Dh&jsJ*)YOxCg(y0)hwZ}97rmB*k z_SfoFtbREQR?l4hQ-~A^(y@_Bavs;D9M1;nsVwg?qBSBTRu%}^B=srVP>k*yxf{~? z7>_Sb0fTUv7VI zpFgS&f1*Vb>4?()SbgD`^3q9l?XbG4KM3w6?G199>AQCcF)G=0xcIY* z6K$AD7KI*F0OOp;#DP%L0B$yFS4BT?-&rW&!x1vV_1ff8lwXBz3H7Bc+4OswD2!7h z#*JN!q?_yc$uEDTGRH9Wq%VpTl}N~Y?1spI(wrkVoi6a5mi%&vL+%RkS+JE?S2nTP zCZWIs%IXgb9v3pR&c6Zy{4*8FzszQIfQX?6uP`rCG{;Wa)@W>G>^T-1<%2J@t%+S2 zUEntVyy1MG-6D*pBXD(Rr$;h$TpxDxg&~$*qC2Q?NlY|^``eeOT9gr#c0wrlm%9+E zh`;{AJKGm%{PVz!i>N==9ihqjlR_?ME8P^sr$a$!L;Y$w-FNqRuy)poEBAsW2$&a^ zj>PHo_Uhe0$4^juE33?#dhqHhJL8*mV@SV`>^%5$WMz~>4HplDZdxUvJl!r0zg$Ks3bc=W%JJx49QMQ5jsj8 zUAOr zAeO7rn~NIkF}6@rTb#<>cbGdyyLnZd;*Lf6uj6Cf6IWw=wIQK}gslxiLpH37XjV)g zyy^V)m-k+u5~|BkblSp81Vli?&d3&Cf;-PBboGnNPYeKa<*a?dq|h`Yiv;}8dqvgY zc1bU}jDr{*oj=k-sSPS%X`X%Sv1mi{nK^r|Ge0d44so6*`q30J4-Rlbvr++5#0a9Ke7zEnCA3yLUhLs;-yw~|+hA#PFH-??gVcl;<@$^?I6h#>If@rv#h1*_ zn-Rb2`3QRGAd@sw*?M8o3eyGT5pK?i_>< z>u_vyu5q7s$QPuF>so`+aibV8g;k7Lbv!j*s_yOzmy8A*Bt~IXhl?K0;)H1<)%(cG zgZ?EY_^Ufr?(>5}NU?e^V-0DA8cMB7?>CKcw6c1)UN$=!l?R_tYqwWl2*PLYLA?!p`_0r#vs}c5*J*alCARJD&ej94 znlfpi_2<~8w%3rAR!cJQ1?Q!UxHONjD8F(NnY0}fT=niQLQFyYm6N}5WXt2WsqC7a zfEvDd1t1460MZ^{M|}k=*G5`H9yq)nf@sUYc1Xb%_td=f=oRFkyAY(*AecRy53QR< z8|eH1w+EIO&X|2bNHAU}ge)6Gd%F260uhC+{|#4QK;#aTMunYN8x8mdp+L@IB~$Br=KgORv&7AEHMicf#DCz51Mh{v^Zh+TT=2V!UPW(Il?U zNJt*;rM5wzCAj&3PQPLve~bA5(DUKD+wUO~=q5(~CQR;Rc}B>5LcXdG=34GQtmEqB;n>?G0lk5CbOT(<2zPcpv6hqUALG zq>GRC1-hlA$C$3y%jW13^%bY-X=u9WC@K4R#Zt{ zc^LEg7tUjpGB|-31(eUXK6N0i-#XDzdyyCr(w>rbe-Ono(a_l+>cYJvNFE1i4$#3S*Ot2P*}fklNslBTBFh z&~jkwBANf0V4`7BGrwhK`Hw6`mU+*u>LbqslBbpr%%w%A1;&eC6tW`*)V}*+dE=SL zkkCAw@9rKyx(0Jb6dXA3HUmLqk{}Vy$^pyck`W zeK0FDqH(iE2&?3ckF`o)CJ$b(`IK(ZZ8nV~cq{cM@g%yc2JHG{A*DGv{pIter?)$n zc9twKvZKi#cqv`&0c8B=^MHVl<7TfH@)HvxJv4bO1m8vdpnJTaRbyak|3*t@VMBP& zs=4jrtJQe*4h-;|hdSDJ@yiS)EV1xdd?JUUfABL}`mgmnCh2~!Ytqw6gavI-^5_AV z9*s=2AjBb3@L5ilO9Q2%!#^fJ*zaOmEDYLZTq+KiOT;b@&B=t`W&8y>c!GKo%dg8X zr8w7HmN1w=Y{$sqDWKBg3@9N`fG{iwaLG{jH5iEuV%P|@-j7k@c6?Ev#wz+AhCL_N{b!B@hS=%n$Llby zf7?Av213biA0;I4?nH>O!!IOd1dqDGDR{2XPtSu-uFB&&vgT5s$~>lMd0*|6{m$&h zkAYg`9E)#+!7~f@h1@yAM`M>^P2NvK6 zhqt3%05&nStfVPDU-)MOF&T03q}RN-!Qi@U*D;cXvH4ZZ>K@#$9hN z1-B$c%nLR6_{uJIg`?12t*%ATkaYH?gwYQf{xeKV5EokgP`#p zv06N2_u9V}loa zgZ}KouUM)9Nvr-{w~N>i&w?cX;q}z%DcV~FYaa;tFppqP9`)t&W1-oXcM2O7Pd^Bn|04=k8`KpcIPBMF zK321L>2HkDpia`??H9FAGkOIdx7S&Th^+NdF8y*4!3jnEd}Y0U7i+%7{bH90C~x2o zg=kL{WN4$X$p&q<@L~mgFIiBPc@Awi2)ow8bfG>^^r#}VMOO?wXPC(@Yqq;WHnP3& zv^zCe45#7C(eqD|!$P(`Lq4sXMQ4qgTjL#yRW2+nmbjDkxqIWIkdG^csa{d_D>1;7 z_rFAq#y*JDE*8urRDu3wC(m(2%A!@Di%u?vm=;q;ccP|t5uIWN*4|7y{yj&VMnE*t z%+!E|g(p-x;Yx}O=(e!{I9T1dLjaCg*z#c7!Xot5jQmpY%>zW%NoKa>lndmr#|_iR zIehwn+BeE^&GVDUn)3y!oJ=?r;5=mD+F}I5Y}Hi*-mNs}XYVw!v`E29$r+B|eCFW>eeE->W%04BwAYxyKvQyCE(FC1Jc#%?iV3wh3e7+xv+^M}^F zBWkoKW$)Gqc-vj>Ljq-S%Y4o75^p%8hPJZ<502Z%R0e917?x}hP-*ft1}}v1wXyyt z8y)~L8`gosHj211TH4P*3a1%QYDg{c<;q6n*t=6uejRcCta)WOJ-q8QsS$?ZiVm$Jb{ zh6<;YEz>P$`6Tn3OZQBaW^DQ+Bs~K!n_+|cfoIkx7X`p^cy~W4m|O%Z+V>}M8mIb* zK9o0l=TF9{R?8zh{Wb+aXM(SR5Wb3S~5G$pAqBeOYj|U8^h)E%2U{IZL7ah811^>eq6lkM9H*GY z)FYbVn2+&HEo61t(NaMBepZAqit1o0g$JhlF%8<69JuTg^@9)htVlzsA5S8;eXp*j zIqDzCM{a*m!9@4KKIXC_pCFia|`Co1QPQB5K%@o6c;91md&Zh81x3#I}Z8fL(YIk_O3=tdDXSxBYRgT2Pd$ z?P7$+6ZymGSD;3AIcWLPgX@h!02z0JC=G?G^sX(wMRXbuMDSBoGdeQlkbzk)`229 z#xiBtgCL0E1DC2w?S!QJB)odF(3==iEKUH490HMQ62TDKuYj*IFVhQxrb?G*P^M9> ziT|nSh!}R;NVkP1&u~E8oi!&0U~Iid1zb-i{99?uiP?7i=+ zx%OM|`aRR0hmG{cWF17l$M3ske;G^0S0+l9Hh?*&Cmi(_s1^NVt6MFE1PJX^v25U9 zib{NPp_=c!g-^bKK&R`m)JD1vVj%szua4*%zoU$5m{CKAf}fGosbTdV*U%69qP~Z7 z_$mETh*5I)P9vD-6M<;%3wpC;y;9)s^P;!a-DP1wvLJfO&pw8U0p&9SeV!eyW3&?h{M$sv&E$IZMa;6wFNN+phA`h)!h-C%yqc zrQ*&|_|s){3%nZbatnd@_7gzzV1 znlIBJ<=aU%#gdi~T9|tijR~;~^S&J9GV^`@V5`HCu!2MxD_T?bKTf*uD2hHoU(A)z z`v;mbt4JsnKEQk+n9IA~b^sWwbVBf|+IT;oPZK3kqr-7+(kjO%<{N^#*+SRr7vgizAq66hz%7LVa$;Gn4# zp@U#7l5H!1wjFd_RBY;UIf8I)~D!JXN2P4k6n!b@}UV=H&i5Z zRCCpgI$ip$in*q8Zj5}C?zJ)Yy>euf`>W?CZ~h(`=ej8VLA%P`BOm|3-tYt-j)b{p zBF9-zKIzfbd#WL0=|$}^d{^%!MqJH2Y_79lGM$2g1OcMO*;DgvH|dxp9ns*J9an>m zZ>!^d$X_BqQV2iQk~|Fv9Ro$(@1=lJZ398W3BoJh%&bF(l4pA(v5*X%j3-2+y4WuHr?izN364OQZ5ucnp;nl{kS zhe7RC3N(`vbA4uyvidkgZKzEZ3*Kz>lM81QHHHpJcV%S*ieYqx#t`-4nzk{8dS7j; z05}RRT%z6b-V#>m&+sR|+*Q9CHtFz>Jh&4{1Cdrsv3|j5tQ@cZNxdeIeM~oY53Th6 zFDq~N|KL=E*-&5Ct9tGG-#b}RYsVhWIR5mWQZWwdFXpNh2Tb%r6z}-|7)*1uB1ojl zy%Garj$y|rNN6wS9_a*6!+&H)gtEPl9|V!}3YqRC{B#VRX~@=RRG|*XZb%&vVM{#S zh(8R@4yuzgG2p$ z^Y$`d`cUkUsm7ICnOqj?psz2}`{N4X$9>*;cA$8ioYc@gBYCi}o`l9t1G`_*Vv;dn zwOzIHB*0j?dME9#A4fxOmv^F<>Lg1?1g{wYW#@Tpm9=%Pre&x*UpwU5K&K)QH_1(U zbI6?o7jXIEywhPhKS@76%X=1)?yX#S!yc2o5XIp8ukKa*$;yQVBGn>2ky87#5}E-n z+;F3UP%GQ6BBp_?#ZYd=JTl_aTG=K@eQ47(hmJ5J_DcQ`@dznamP>*@1}Vd<;=Fe# z&Bt=gj8V-nLW^0z!YboQD&yd!j+oye21X2QC8pF$aj%8PnV-X%(&$1)D|bjd^}~1H zSueOe4Y%cpn#YrOMP?UOf&yJXOWr6Vkv}1NfbG~vIx=ytSKhy;shAbpp>hZo6CwFL z`f8809QMU7iv}q{UofF=ApMmjL zqM3oXP{#YX&kGU56&_q6L9>1>UU>eSiCbM2EqSc1qgOBmu85tOEr$mi^x#lDpp4X( z;-LtUYPUi(gb}lXgK=8jB<6Bu7IK_ER&z;@yLEg{59t37qpJLxY3!H}0T>Za!QjdZ?TfnQwg$Cye4zJQpIM4o+(J&7WIyQ!Y9Q!%zJNR@{T{~v zT4&_Ti#<%d$oz0~ZyG_$mw{g~eL~1MkMRfw%w}GL*Hyvk3)WAOfL3To`<;{yWiwZ@ z*I^+9AQH}HNhMQPr&u;~H#pd*3cvJuK8J(x?2d$JkN{^un z6cBs5-Aop+e5oqLdUK@WRLMwpj4s;?@XXqtw%_$x9uY^U`|Tfg`|Z5fZ@-%_MLEpv zrKL0@{~_V7t-c*w2Ir*7e3b+gAnbCkFDotP8e1WTP(9D#3M?#~`CjE?RzuLI*faYB zR@|rn-@qIeA%GQWMNytocRf7kDs4!6OBbMR|@#BY2JvNKaBl7b%oUqy!2q z(B?a4nSqJYIx`64f>8>rg_JT(ek1{Id`t|K>1|32VeymXgaZS<{UO{WM;K$8RNgu9 z2>vvX7Sg7?^PXQHXJ!H8m5eGGs_RF@Mf%kW+uY)y4f&mX`r!L$O(Mfcif9EjT5cyg zIA6$a>_6;1Lp(1`JF7P_##}Z;= zOO)NZf^pj|rwELcE)^p5$I(suxY}C= z^QX$jh|w>T-(5{C%mr*z5Z)91?-47+W_-riRa?i4YAk9_p?rMi>!h)@12Q;r8V&Zb zfFT|K4Guo4d7+DfIwvE-FC9hKTj@nPfNeV&)Y)(qf)PPesVYh`c2*9OtCV$MBiuJG z^VbSdE`_Zny z@O9M@B=kX*WK>Hsij2+2X=bMy0gRO!Zpz9^GJpVtZ=7r3yqp%IIngA9m9f@X05}0c zGTSVfe!5VDnad=d$8b+cjFYuo&ZEgir*-D#%)@K!yBVB8P55D(9_=*tc#d&)E0IG* zyTls=lpSM~-P5SM5BOjDa4;GOZy^bcGX?1pk4gQl(L-_{iGgzc856KMn4OiON{hg8 zrsEkW1r|XJ5K?Bpo+%1FE0g#5OzkDYfoT zCY~v3sU8}X0hwM#!VlkVU~EIO_>qlxEt#hW;Sa&dsHGxqNp5(;>=;aD#_ufC_J^n) z60BI68B_g>6vaWKCA**EX8xa?b)gGL=|W$1*jv>UN$TSYQYjaFf+!UCrCe1>Oglc^ zPC(nzb_bojEF}RD_wj#xOkCNJV{jWbfaY*asSTmox*_&X$@^;I?&gVU5%%*JA2_n5}gT)d;2F`Mzo;201rBI+BPcS(b8^KwcIL4^* zl}|IuGl*YY#Ch_6mHtU%rHI|)>!~$<)KJoULZi{~*?A19`W_Q?mYxu52>)70qK|d> zV)|pKqAU{G`%5{eDVxyqVVWBZu!w{bFF7qe|Csa*S8^Cpj%&hzbeT}W8|ey`$0480 z+6BFCxegnQo0roobXP2qK{T@whrH>PL^%$#yndv1c|`%anU^Fr#XS~VY1EX~oYHg* z<`jn@L`qU=IrV6~cl91g*(L%KWNw-=Lcni$*1GbzFLP5=*s>aS%`~Ux6uwgPM%2Y< za0;WfF#UX~FHaNV65BscI&yk;FL8r+wH#8w2ohZ5Qwa;3175ZZJ-jc%TSszHF7h_q z-h?E^suL*@&U7KTZfVp$iIE-y@;-Ok#wdI!NW5lnWq{G7ND8Y2){Bt}bZ+K|cFgpY ziZe1Zmz2EXLr=|@2cE)f)P9UUBRfJfT*w|Cr49UR(e#6(t3(fr!9<6;I`f9ZCOlyi z@)+-&G{(3$dc#Oa2$jTY7l~ZaN%^Phh$x!tS2jIoHTj5^Ux@!&@m~pV;Oo~l) zW%|3%Wn|?)RAiiX?%9!&AVu;xgA-M zHlc}#Pul5jf!Qo4F&ww<3NwSA*=NcKc0+5xOJ`{x?H~dFKRSWCfJE_Y3aV*dbtZb; ze^(-1tT`?#Gs_c8`Ksn7<0ttZz%w(pLMN@AnMe&_g^QycYyCt!h zU+c&!CbsIIC>5jvjIqs06aM^eeJ4k?pE9-o(Gzk+n{RO(7zn%;sF?}J1$bjRyC`;x z+x*TwkEk$e(Yrpf+vCOVqx>LlNpw@cj1eS~RUsP-o^e$vt8OQZhinP9{>58Kd4T<3 zFK+PSlS>zM3*1bkC! zA5YieZa9621DvKy)_=IVPzqFN&^0|u`4PMJ0xO{)?O+pfV~SkYV~yMn!dn;Z8OwGw z*)gyKr3|Ri0a~J>Z>l5q4ICOrkWx7^Bc65r@Nw&4zqXj(sKBbEEvz3l_Gyo)n=he* zny~`n>cYeTzlr`Tw*~L1=JtCdqn5|8_Vm)JWB~h9ummo-?V74?Vvbr_1_E$?MA)F^ z;`cP3PiK5y&Q$!Q%vj1GTN8n>v(>Ofp$Hz5HEVjTl&Vf9%>s8#%i!NER$m$T!TtiB zW~Dwy&ZgDwVUB>;4-6TD100}i7z*3VXdSkB022GSp*@r|wAmi1R!(PqiNs)yQ!c-E zI!J4;MAO={zmOPtVYo2*@G8WM`4bs?d&lg!hX67sFGqq37H>m{1 zZLKjZ8d-soHAp&%ggfS4=Z<@_86!<~SX0HmMSgG5#z-NU@D`QWsH41+;`22(Xq^V+ zP*I{cg-$;amava4#`pX556U+N+fhw_OC&G&<-Gh#1kiW#hClk;z*oYR6~m&J=(~n8 zCYTLpphbz*xV_{$iNBet16DZoQ}gj0?Lq*gGB{_Cb5L_14D{21$$*`r9Z0iVFDGrwQ|FHv8W0FVqD54ZioGn=hgR$Vg9vb0{Lw7^~>nlvG ztuwON^%t)-)!T)Zcn@?EtWi>-ux!-gtTh>^d!ps5@-_`G9@WXQx-&_)w5Q!-ifhfp z3ATCYHx!PG7g>ht&?!Z>4^!Q?Z0u0xDeICof~P!NVpJeW>HeGV??2u7VYGK!be(<} z-az(!CaE#D*inCESIF*B%o+TsEKf9yISni;-KIS;cTjkrn`sX@rmomBmB~=w04n|o zv>1|UI1;1T6h>dmm-xW2R-Zd)OE%!uKs_6BT4>8tJaZF{Wb71X3p3BkyQ01mSQ^_P zm76kjO3ATOCFO5PnUS9qqY zSM|7NHeXN4!SHC)_GhJaEV*Mzc@+ zZ6?g`fAp>7+>1YX>G5}^R&gqceCuC5j#_l+X$Ukei~USPw)i?%pyqb?VjNY^ey1X- zd`jT9aj{utgLL%MNAc4ieLn%$G$gN#bs5=9@Pdwhafuc@1RYa08&HDQBXJ%U<)$hH z5_Dw(N8vY&t*gaDpFySO+S);)Y4%5XeeWNgmuQ z!LX>8Lf$K3jDXDL;F8o>cXuro= z@fc`5Ome<~FMM7a;5p%h9hUgsgLj-s7u{g+M_iMxQm)7+cQ}-tV*(7=%^h`zfE*nd z7CR;lfqk%Rm`;+BJ}lcuh0A9CYcpx=n~}f~)oQdz%7BX=czmLj$pT$Ax#+x^ z902bvCKen7PD}%h#ic&rXoP##q&?ikMMlaO?x-&R;^G@=51gUF$pqV2%U4ogM_U@ z5|%zc<1?M(c91BKQwzIUhS=X#RPDp6})L zc|j;GjITvJjuT3fs-FKTsDM?`+yvt)1uuoAdKq2)t;WAdS5^;*%#IE|Quwf`&+E6^ zlREHHD6EUtfVv^hyckZ)Qkc*Tr!7ScbU!Di`BN^E$F+otU;4#O8(Z%5AQA zaD*K6A>UiK33CurHFC4^dwf*b0Kwa9qU%X#2=$JR?T#Oq)@5M9;>?tAHt! z+bl6#+I@)%5SuCP@Cz(dd5yOTlNNDC-j!K`tqJmPC`ay#Zs6EaN=I;S!nIqQkp>*z zSH(+RO!tg!Sd4)+b{S%+?i2i~AGyV~BGI(s4)|T+ycH#yHf__gM3uL)s(y407h8&j z%Nld0?580L&gzN6UV>#g0|GohsU>P((o0)Vnxw~j2AFf28RiRp=Jm_AQh^UYs6Ik7 zf;<_o6yq%2)1}&JXy=lu%@8J(3rF&LYuKZRs(pJM2SVqigk4LEzmsf9V^PyjTw9P$ z6thzqQ#Hh7rN(rN(oORrH4p;AEc0dlaf`xLA#(~dB}E%mXL-u?dvi*_Cr(ewluwfJ z{#atIU3=_MjPl$FY}!p#x{FyfY*$}4@1n*g@eT*={(wpPJ(||p=U3W<4K0_r%c3^d z9%Fwm1pGu<^p41S$N;oDzw_>Ow6!v70Yn!~_iM_|DxRluIvH5&9fxzP%&?*q_Dd4n zj0>y$-jhW<8uuX#G+()$?jaIXrMTW{Kg8u@CyjkQ=%BQz)&m}bW>+fKx`6pH5$hm& zxJuOIQ{MT(uY5-$cbILws4eDnh6DD=sAlaR!W1*4u@|`}rb6kfP0M5N4UAg4^1Z^i z34+l9uF`_xD2dScKXEWCa{HoFQ8J6sQVi3|S$xcAr-2bd#a-lOUMZF?9bP^>+6kA>nUOQwhrK zUEvc)Kd8`9BBf+Kn~y*_qTcaUHk3#zD!{^#DurFYJyRx_EVX32p#Gp zriy-!oDn_t3>~pos#T1R4l=N>sg;O&yyK3wO#gUVc2;ZIv#R z?;`@wQ;yrw^l>vQQA0F>F+~J{oIjx_)cxYm83jCy;}siACP~lsidsNOj(a!-uV%0$ zCCgYwYQ7iA8kg=&=owY**MacbzKvV~1PcC%G#tJ2@(#fn*EZ z=4C<()uqE7oL~QIJMy}f?_07`(31XD5og|(9Gg@wxP4br&WIC_)gm6l060OixFBtx z0qla*Fihxk;|2}p*s?|=>kM=BEvKnyKWjWXH?KI^L%e1C7T|p+fVpdT_>sqz>e}=9 zxhIvv31478KO)6mU#Zu3x$wn{pw`2UMmLbLjYzUj`B;-Kr>@S3wq-fqi4(sns`Wam z-t9;_9}Kb;81n`1DR2qJ$4%ZFP>!$EegcijF6AMicL-UVb$DtQjeaEK4u$eOvYl~% zx@yA#Zu5gp!V=B((qVOtV17TuV6IB0ws;G*CHrI=E3>8jGy9z8Q`DTWAxrc-yOr64 zbLFLDg(EB3!m+hOT;}93kvTt7<|RGUn*`(hJyiQrscd{vaV)>_)>m3}`)k$Zo!$V) zGHJo*H7k?yi2|RMiEYWzq$YmJ?RmmgLXwKA@{nh?Ggc}~To83xE2(8}G7DMAZH0*5 z@c+Ti6dF-vO+%kxGg&!l@%(0A0MeGVy7%vMXkh`xDh03sH#eTUqQ>wf$*Wq7(p^@$ z9-=1*4k8p6?&ZufutAyoObPss%E`=nsQ3s?96xh!CO2frmdrOp&ORKNAdyrM>6p}p ziLaVWhXnum zM@xqc;4@L4YZC0DRMZLJd?8o&;XIQ$YUQN}6Vw7h^O}MshLt=Z9j}9y|JCE!TAjf^ zUyu+|JK-24avh1LT1e&bbpY2Jk1^;rm+O|wb~xx`b7;Q3HC7~l{5Is6L&NOYAv9+A z8&nNy@FRh_L|@3}RNbUAk^Kl}=i2FfLMKc8pYVP)6O%lgD$&~G?n$V|JTXZVwMyDr z5t7SFT{$bFO&VzkF}PHgUId12Qp{K_6?!ubpkjBE_)jBRVi%%_2X=-w1ePE10(8ig z1`pR@;V}!iwL0Ee+?8 zeZ)~u3j6#@+@~e$tJgACTL{Lwjzif(W=k=n(oB&Pjr|P$evWyU>_|?^%GpB7CaNS+ z)Am|}w7|=^1SG&xs%3v)>ixxJm^IA1lB4HsCWSTV^dc8B>v4NpyV(z%U1z%0b+DAC z&!;qVjU$8X!i~sF0~cuId;UJL+cmloTPOEWNzKM-$VKI;u}R)dQ;Q=Prf6WILMgF^ z+|z?XeozUkK;LM1tcoIIwah=1>h}QKtk1+sn&S5HR@uibrnc?e=kT<^;Rng?aCfI> zOlNUOVr8{L1GB9-h?eN!JIf4o8yn`k!VS+?L)FeB*NXOaEbcSHNi}mt4i1bEp`O}g z!&XThuW_~r-Ls+a)tXsk_Kr_mXv16$3kS`)ZMxVAUd+z~b$;#O3|QVdhegPyYV?Ln zg{^dEkh>zVP>M8UZm2^3xI9Z6lG)E*2Ba7AuNmB9N#lJidg+zJBJ9kqjMq8el zn+|@>-H$q47*eM_Jmr<^DzUk5`+IeTDSY&6|8Fw>-Ip3lR_4?vXMG+{WW0MnJb0W2 zM_;x4KH@x=ofqjbU>D1k<-&O>w6%SgrNA@AyMmL#Q}|qoB=Kixt$cw4+B|rL1G_p~ zx&>Ne<>j2L8j84?4HCBVbq>X04gn=E#cglr1ftpUJhpoav`(&hdaPM3bLU{!iyE9I z@n7>Bu1FzHAY zogLC|rCR*VHR(3GHrv1Rmhg+gCw3h?(0`&OU2q_Aj8l?y2^KjYN0%ZM$y9Yh9U3(E z^?#ahtp7@P&xvDwotJteSC7S`C#IYfm27*BcF(7EECOBUlHA}1S_YzjzHl3fN-XdJ zaC7t9&j?GLZTkXFjtq|K6b*IHUSev?X)xhbt3U5rh&;<-QeruiXz*JhXsC;37R+uioGAfPFp-{o#0wM+3qGtL z_vR+QzCBTL2-R&=4@(h6n3vj+@^GZ9nRh5Zz>-;HL@^coAjx1y$YpXx9#h(!x8J!zlG&`-Y2*$w*XJ>8gf;x1BfUQSQ#FgKMf%j zy>wuDzt^rLi~hL-2a85;hKU`ju+g~7TU`Rm!#r-zN&A=8f$>G2@wf4yH#(l$A=>Hi z&50t4s0v`>JRGxCA?c+fs^CMUqpIc6#(7G2_C&BLX#H>3XV+5w*2qKCDDKAF|(UAqZVYZ9j5DI)G>iQj4C1Q52(Q6 zhWhieZ0Xoqkxgduc7FvhzX|nW+}R=j%h+;#QHJTX>l!pt3<*6ZQgO)nyzuJ11_Zy& z(^eqfD{1WKP&%iVsz)@WToydQsnOFL({>j>7?#ijf4O2ywlpuX5V5U1AK~DZnnhMR ztTnn)-SfvNgMPg%Fq)MW56-e|0hZKzbbw`;|A`zh#BeN?%#~BdtVrb%5o35g zTn!Y-ZAUC7MW!+!iPK=b>Ovu8tta#|97moac~m!wC)&e?wtEM(M88K(A|zRp0B|Bc*>mR!H1J@6KpR~w*pLVWYnSy&GQ7{ZSvyS!`Jn7+P-Z!3$f}svr=8nD zHRsXzImn&cj?sCfU5gDa*D<<}P{cpAD3megf|N-5WF~TUV-hW>p`*x%d1`3NRXoF^ zd@eYmy%IN64b5;gvf=9=*Alo>7Od5s1_pKMD=8zsti9N2aI0M^xXo7Yb+LVns?Wb z3&B>BHKC{F<^%#BG$@cvPano4FuDSBkB%FyOdmS3l#zB6d=SI>n7-7Ip~PR16&E}J z@C`Xq_2wp}z2upX2tVVfvyzSL1mMrLSJfu@F|>^o5#sbF7DWf}9xs+y3v!=+U{20Q z{__f*C79(>MAbNdaa)Vn-iViluK-ys&{H}P_0BX3m@#C{I(>gx_nkha5<#;IqDc=Nxp?#f2p&~s z!3FllqyH#(mjINOCl!5;_3^k|^1bF>fGkgW_>s**hVM@0_79u+QF6#nG(vTYkjwhm zi$#%#^%7 zc5_K99Xf{r%EiJ${^@heWl5>(?}CfiU|={zs&J-CbTx;BMnTqdE&;7*5=x>`p2kmu zBld6?O{om`c+;qM9SvO@NQH=!<5{~Hu}tWG+{_kdJXr0Fe`znj9(j;tX#8rPbb`Hh z2I*cLw#pq>sX^O#AR$9u*n^b;0f}4BL?}jCHbWKhhnCrDu8uLh<(!U|_67ZtjST{G zJTeVcWU`tuK#(y$FqBc-|^dvir#f(;zZ+-nlcfh zF5C>!j=p)LtK%ALXsoMmZaPTVAXJ%;|DI^vHZrbr1UpVJoLn!lz=fN++Lf-q3i z70tMO22#MxW*GFa_-Id&kbW?+ICnm&S5NV!g@7sZ_-6}F$yA%Ny+6L-C1IhFRx8r! zvxnDf%h;)wr>L=U<6AK|nrzfU zh1Z0zr1b4E_!vVTt8dE>UGLh{cZcQ?%c8J;+R|j8dA4^TkvYRLwxahXX!4__heC5l zGQ}zFnf-NP<}#637T@vB_m;0ErI=Z74UL8cyk2!G-G*-?{itlt6pZHAGR!Bs8p%de z^vl)7W;=h=%Z6JgEnq5Xw)xi6wG1CUKXbQ^5MpjmM5X0Ogj5psAc;Rhv`pX*-N^~J zdAWR&^51c2(4UnVquNyj1-n9pxRt{Jt@?Ztry9V%96aG15|Y8Mffud;rKTk1VA@ae zhh)p^=wul*yH30AvE%6Om@e{$Y77~p)Y1_w4#gb}+EId!Ua^FhF45D&lbu}N#6v+z zoE~rz*u2%kB4GTPHuFlKSC2|CkSBUdV}9U)iQ^A}nCtWdj$~HSkhNGgN5~xm1Le;W zfQ2X!G){vOORHL3r+r)%waB6rL<=Zq6&(OLm?46b8ML5kMZ-um02_dw?vj^s8CnDg z$A|KCO@MiNY$ing#4P?n)P`JiT11=q;L@&;1EQ%`AMs5AS9w>aqpUINn!=t`w+8S{ zEK!9F;h8We8uHSamdSL z!!Cr$p_@oLdid*EAnjnIvKqRDMryNiBB`@ZPf>lFXC}GXc}O)_K#}7^X$f#n*7jX- zQ3f-zp#id%OlXVpNMN=vuxiwVYGpuF>S6Zfb5A7PCg|EH}jY1#g<@Y{+ykYfPuT@AmWjGRWd}#I2KRV{hz)`IWBxIi6vrvT`2^o6Xp8rStB8bo{ik}P8-0vt?e$7u_+V%hi z5*o4-D+^ZB+c~lKiH4d=J>2bC8^LFK~}U91^*50#<^F#gQb z79$t@lRDoDE7Ybh+?czk4o4-KCIVwjFg;DZ#gH7*VOsVc!sGpe9F+i zHPc_B>9AVX-fe=*1>X!)SA#5=@bY-RRFvOF!V(3sm3Uv}DejA}e_F_AuzXi`1u*D& zA}s_t9rzx7Zs6|qWE)Ja|;X48Le|unY!HE<%lE9&z z5?}#<*DR3aCL7dfT_D8hAUJyM{}k-R6r%im*!JxvjZ$3EiI? zgjD-I$_)NOyPS(n+zSdt_Jk9)xavyzLJk{eBaLo()IS}OC>Ati0*aOIL`oM;yI8p3 zp#X>SC+ZpV3u=j7Qrm<~Ka4wNu~g;r}YMc9E7&BS9O($0F_l zY$ZVnT00GOcH1-MVe6%j8bBtkpLa2TR~8|pe*!fC1IY$e7fp(3{3OjG2-?+f#b!`P zGJ&O3ryNb5LGkoQs2rP~L7>jirx%@V>X#CnjhD!9JDo_gY+qpX9AOuX-rWr&#?D>4 z>HA`3m3x)yDpljBuOZ$3D!Wdw5`9 zNMU_L$=?fPibC?*WJPHn`59CtUHr0C0&R4UP@L1yABME;GTcYIl6aVeKM+ICH z9!-LqC1JaoQD6NWvsl`{koHakH*mG#URerinJ1}g(d@6R^WXvk3JxCPIj6CA zi!P*m{8)mSmDZi^DzQ(*>}czVA5cmhfRfsN&9QyuS43yQ&L+ z`|~-6t4I^+3&~lITlVA+*u{1_sYjm^Bwfe>p$R04I~=AW5bnmvenLGWb_-H#S%?rY z@5VknPMwVJG`K7ghpZJAcwEvW$^(;EL}PD1KSXMH%Sj!zp(v_S!)$Z(nmCbAxZ|@WY_}nXu6|N5wh9~tASg*6 ze64^}E*>2UjD?NM?k7_e8)@i@et?aM^Q4)q+7vC-2#lDIG1h2DB`Zhr%L;bQMb8& zmj!w+;_QFb?dXl1lVAGqm_X8-&^{dR#n_I@Trv0L3J2=jw1ws_1V?ngERHTOlI6Nl ze7lsw90&-<6DDVg@`=?0o=~URX~9ixXeaxb8CX}uaOd@0mNXSG)EMXw%hd>13lS=?>DzbxVylnAnCo{gg`-6BPl^gCsgL%-U= z6v>4e$A2p91|=GTW#4(V*3|{u6P|g*t>S8Qh$&j6xC&2Ku@2Mtq;DQ=(i1Vp6`L5=3Am0{$sMlkv%6rq18@ z?1imlO>kTt+16c|AWNQoR$l#W(|L#B)=y;^QrD+R<;ohTvuN>nwzV_bKv&Y5;gRV2 zk5a^eNbTxqXj{~$`HL`SpDc9urd!R7)!f?J>*han#EfgR$VGTHkVI^Fhlsxn=`NP* zD7Xl2wj7Mq9ToZj&)EXCyC_}jWjP5atBSdM_Y7-YmCNuS8l$rZ4M%ZN#wc=xS>-mz z6N#UCIAF|Gw$#xE3DJlSLM9$HOk!tw{X^7Tdh%CK)VDHUCtTSyuaa$pkg^Vo&CVE| z&E}hxCm@*(v|JE zT1z$N_0awD28uDg8Vq68%+Edg{Jmu1fdo=CVXJv~1aLV!N*TQeTG$&%WoEZ2LcFD14R}udW?y1|n>=JReAqBTYu&7^8LGwgMtv=BRFhPaBlvr$j{`5< z7I2U$A)b+epe77;bnSfT0x;z>`}C7n+{x?g6G#nd7+#~6T`FDTNfuTwRV&j-4K5WF z5+`L>QShs zMy^Qq$Q5{^&>6AIVL-g0)5Z9OQ?HRcO>CeSsH1R?DTGnx^}c(+USEZsoq$LXa9Dhi zVd& zLaT=boX#MjZ6V6U>F69qg3cCQ@F$Gduwf9n745+7`X}e($qv5^EK$J-leV2E_jZiR zKEmjZy=(1VDBh^_a$1@~T>p|m^qX@A1!yh~RMhZ{T13xG33gKQR7+L6rebeS5jQ{r zf}qa%4F52wzpOj)l2=UVquZDt4=yyITpZWJ(I2=x9Z3qa3w{G~fob6JZ!fZEWjSEx z*oWEQjG$kgrof_w)uuCt^Q!Y59MTl4Cx4a5&1`jyRF}U?JM~*#b=r5t-dr8K?wlWe zJf1{SB?Mi5gaKewy$eD(Bs-62$Ji5WwSqz=$4n5zoqu%w$lTl$Gw4Yy{|+UIOz2Cx zV<}JHEk_inom!`OExg{JBmVBIqP^&O?|;>eKJ?8uUFMrQsW`d_f_6qX!_B3Y_n(_- zn;z14zJ5DIovg8Pnf6S*b6ZkzeS{hSfyEL(R)J>K~cy^Zs1R%#(s<55X73 zIH$fA{6ChH0AKV%M~ZyvFN6n8Ng=swr77o42?QQ=xW~{HBexNR#ElgfpkimONXk1m zSbMuM)Hq329!uFUUj?UkRlsT2vLjCu+>y|5#-3m*X+iLK+02O;r(k$W;NO=*cgbRg zVD#hmb7zq!YXF!42-eWj9;H#|j5(wr%Tp&973e0=y66QK^=MKia5yLE!yR~^fWw8Q zfCzXW#^M~#E=}SZtPcWcrdQK9A0zvFef?2xffL>U-po6H1@&hY1Vj9(bjk11J>5Bb zF)}dJPfCJIS&tM%88*psG1-ac37^aKmkS5yW5iAZ`Hf&P^ zf_Tt-b0Fa1Aiz&IqyqC)0+jjs48cSE<`XL)Ghd>)_DVg@Z$T9>_~Vs zC4g7T3tyB6R+FiQ~SK@8%-q&l=( zi_;I=p*Aw5oacxCGU{q-bV1_Wu&Z~(Js11~^eTV199^kZ=VFkFC@-A->*mS|1VguI z@idF#u7yZBZ?5xif$(r2mQNPBPSpFz_>t80i3867T}mfEbBA>*XPl*Cy2G*w zx{$H?01MiU>h0>B8@~Cio@<3Tt^l+w1&`4SYveb5lBfLQGt$<)zWD{>yK#|odB%3tWA+}6hCft z^r0n!_ZHMT5yH=hA(-Puzg*k$>X8Q?yG9??mUOxN(HY#)PH+<16K$=2d6#ssxS>Nq znAf-(-5o6Hb(bswkcmL%yQ!3N8Ux1RFr(@%z93{*=BF?^E%BgOG>2@XXs*T z{&ZA9HjH)|(?8mOH5-`u3?&OzvQXKa>)AZ{6#=6SV2RnscF9#%?OSH$TI=D(c@Kia zWU??n+ds|6&R3*_B*>0_I$h_fm5q|eh8WNsM$49;Kkpfr3GUxOi&P?75$%;cFl9&4 zz=PlYU?ACxPenaaz2{S-$MAEFUddyLD?s8Gil=8kwb3`8U;cC&oh!vR0}q1qy8pmh zKRGH&!iR=W%Z=w0>6cHfiraj3W=b<%%4SW}rdC+@!~N)m)>9~+`0ZG9YE|ezkb|!N z-vn<5B8o|~lN|%kxNM`hK{RS4juMTdB9%8D{)XfDT5vtdq6 zc%R)?sA(7jc~}ei@gAJe5-?f-<~^Xc=9+i!B9Tri;@^M$wE9#U+HD`YP|vI@*kE|!K>3mrq}BPb}z3Iv`Ck(r9>Q`thCbCa{nZjSYkioiSD?! z(mHuO;^qqAM}uj{tBT3Yj0qx-k}XJsWbFvy>EXbJk>ivNW)m`+*3-0%g(ff=!pPwf z2}DwuOv`(O=p6@|zCzPr{8=#F){P#+KsXskj#Gn3!6b$9nUoTr!I4^w($Wr=*F_vP z?g8M}ocjwol@O?C{HDJUrA_^BuL&HfDK9uqy4q5$!T(n+waLd!V7V<+YCHD-{e@N> zYdSk}dhqyTGD~ozVl4H+ewU*!TB%lrjbg9a*PV8XP2nuf=h>*>%}9Nzi`i!EVY*7C zjV@-7vF$6a!MhOXm=;Z&OlW$Q<`w-_42Xif_eQN&`)LS-JwDlr$32~LY3?5}RWodz zoj2BY+GfO5epqKs`6n}?>`R0yP*q%#tSTv12lyp_X^4pVr&w9^;5?#7umfBn08l`$ zzhyOy8vrh~BcG4~;N+3)92o#UZBONq0g$SONeE5?cr;^aphs{hKa-a z+$A~u$k#%VC!*UdhN8Nk&P5}1SFQ(U+^nDW?CN9gw|S|lP$z0a_EKxFR=gLZ>fR-I)vS`#lS=p=RyYi{BGC&- z^#?==9!;1YYeI4`T#sj*hHb#@STB~u({|equF#7t{CF+K$8Fqb#Q%tySzJAs+T+Oa z6nkwI9Uz3cw}Y2aQ((K>`0`5p=m*xIL>-|2cL8pdY?S<*FQ)~!eBrjcOtkuXaFD^V zVA?&syp-VW2l^gz?ZTqu@WAhBE?S=L%(i$ewO zWe~7yJ8=kJBAKQGU>j%hq$15@Ix@u_2tiD>t3Kb=1*dg0%z8Hh0u@xkAl$$T`eRiJ z;w)SCp-N2=9bXP;<3duHOyybxlAH<}_Yp!rdWs}BcQIE&lA=rT=}qkQNdW@~2$k%g zzbAeaKintrw{e+C(M8B{ioumx?e?bQYjtlucsweLU)00}E6Cjq8>)n4`h72HQYalc zP7QG(s$>YS)Lpv`7iis}WP=J5rAc1*>11IQxLh;v1h2zC8OY7GGUl3-l}26qIPNw&lL}emVq==lYNPRnMp(9fOD3REZ1^> zbxP#&^Ipkb=a)xzis!m4Q9)Yo{Ny)rIHbHoBGpR-i9}nBE#WvV9F9dgZsACs9MID! z1Dw;xiIAZ{M-n>NWLX-+h*iI|5Iv26qc81TbHM2!**B|oDH=EKnUAzzxKo&rIqu0lYgIZB%3l&#c=oH(}yqN5XT_-7w zFC6)v1zzFaB_9!FHDyn8P)$w}4VM zVYtyS+RsxLTP3FBT(uBZk$b4H7PnI5e(q2%d9?LjnM(EP;%!b5ePjalpcJ$_nWx7= z)`looSI(shsdMX~uRDsuoS@UiU1voKy(;?q1Qu&KQjQO@G}*a+w=I^OdVp*k`un8! zs+?K?B}=!tR1zK>8ijGx63~$Z9KN` z`^+I$^9R7NLq0Nd*<3T!iRuyEgDT*$DiaVU>?a%jGp$3ONG6KH*7c}n0)qjm1sAGj z^Jsm3JaO73Vxg+pJX)XM3o3h<&D((xfNM0$&$NW>YQx>6cT~y04|i+J9zL;6{$AY1 z_5NW4zVnQWgG}=NX2`%#`|IqqZJ_DCq@Zi2It+YhnSOTG=H%Gzt*v%1p;m*vDfNjt zUF6;81cX*lx_{_L5S-gh?z*yv`bs8nt}Pb$StaSSX7#XGI%wSeF{g3is%S`;0wW%cTuo(cwU~>`uK4HqW=>FIkykC?!%qZ4n|t7M)@NL zIipK6psC%eSMUSr7F-;u4}5;5-4A+~m4dg&Y1%;3L+>2>T}F12WxroII;3#`4_C2Y z^qtz`%PtdWX^>-Z^HRWU{38PQqpw!+Sl`PONuT25364Ep6uroNb2c($&_|E~q_&pL zgNX_&T)9g!kjOmUw_o}`?ZDXRrG=O6-b@OmC`q7eY>8yMl845g1wB*AWEUF*HJv+W zC0mVFcjq1nXmpkH33u*X6B)EVpdVA%dwN@!#G>hW^U(A-){'d1Mlv9Dcqdu7tF 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 V=VGRl8m#`%cC;f?eCPlA^&g!Ko?QR{ literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fontawesome-webfont.eot b/filer/static/filer/fonts/fontawesome-webfont.eot deleted file mode 100644 index a30335d748c65c0bab5880b4e6dba53f5c79206c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68875 zcmZ^~Wl$VU&@H^c;;`7_65QQg7k77ecbDMq5Zv7zf`u&Z?gYZ(ngk0$0{Ncrt^4Dx zx^;VM>hzrI>FTQaGj(Pf9TN^fhXDtG|8D>R|J&dI>2QGmI2Dcm&Hn%XfAs&@M>9(C z|Kt8IAOOe#+yQO?AAl6VA7Bgc{%_^_9|8a%fYyI#5AX%J04xDs|1q=xz5f`m|6&~f zXAdQS7r_2MlM_G*;0AC4xBz_r#nJyia#H?Z836!kZTbJJVg$J5V>k?QI1DPl&K-FE zB6)EI$FLHDrg|br0SL%1s}gT3{9gQ>5F0R&#$@=8Ms&PWbF7yPrD#Y;+~jL=u)gq>%7Pd(S_umwUQ~x;?<#v}X&J0_rHb@c6&v z&e5yoXi;gOH-tArQ=)GCAvG(z2e6XD5*>JVsi+}r>6`Xj`Jz1N^Hzf3iz24woNfXe z{UC|w83xyVL*v&b8Vg-g_@4lP{<+GY{ef&1rDuNQNg&*rFsR+0R*-nXR!Z+UGP9p& z+ZHw)d+s~#)BvamqBwJelLW)s;ktkT%QrE))q2kJf9jVe>QNYol+-*+1h#e{PHW^m z$;J4;RkXO+c`-m{{PILk2==fnK6NtVGY7Gf-$gOP?ZRO|*1+Wc?t%%Ex zc{nud=frh*bP{SdaScL87E^DEvx%)ra}Kd>PQfce988d3(<2ps)Nb3)pe|yJ*`Rt< zW=urS_77BpQbt)HXt`vxJl1D}NR9`U!17R@)QuL^IrsoA`Y`H3cGW|EJ*lMw>x{=p zO+t#MWiHnwTPFc8RaIge%9fP_r*DDrBuU5Vr?wS$Ysu=0;F(V+1XQG39pk{)==FzM zIayN*8QBO_FY!;_RpU1B`W4Wd4s>QtnrQf>TFoAv=c&EC_0vn?M}l^%KG^v^P2a_Z zq@n9v0?A2m_XcFtClQ}$_caQh>gn1DzwIdzWK-8zRJ;%quZ@xrO$y5B#oYg+>BkUt zaTt&cJkljrDHjy_+?z#yc`U@=iqil3ixo}U_D}Nt)r1#`R_)sX3*Y$SY$BF{KIxY> zEcg<&`vE1uk-5l*(s?ub&B`hr9BoZ;1)JNwhgTiC&)wjs$-Xyu50$%NnBLG>L-5&! zWNjDVNrf<>B)6Gb;JAM01Wh`&aW!Orr;W4}8Am`VVzSek`S9SUEe1lX^4z9P$?TEX zB2EC(&qS2p36~+frBq!ugIh_A(NbUVdo0Y|hk%pb#dF3^>;Y&XKiuCrGrnqD^ zIr%AjGDlHz!#6p?M-2-ux`zfWaQD8V6=sY$QTQ%)h4)CeJy$Tf3X*jB8cicvs3nB6 z-6B(l8Eb7lZ3(ahY)#o3{JzU@(ZXRVRFsOF^;IFX0{_Z}{Arhlj5;3qnYSaTUecPY z>#F>c&ut!GvcZe!6oJ1_;AELT6}8(aXWw9elYjRaOV!e}3B`&zerdFn|Bij&V~wT@ zXgCCYYztxBv~Vgwlz>$B1qs4w$IvFd&|(fhMuZAuKypC;f+bbLlV3LLA9aQ$08G4* zbPoydDd$ikF(&s$y2Alve6ZdBo`eL1b^qZYrq0rmj&_wk82#8n<}6O{B3bAK?xnzE zMMT2k1-RH}?Vk6x3)^bOPkzOSj|UiGA#aP)bezvJ`kZIh-3g*jX;`YTx*d5j+>t;R z+=e^^YtSkzgfp01WzrZ4GBZn4NffwCqS{gPHtmSwi`TH9v`+wc#R%|1HDD)Ykuw_axb0;LTpO7^=W^q zKWUhlxtT!T2G93sWGtu=4go8>D@~p5_bQdF1e(97TF*N&wBufHP6A!y+&;vkq48yu zJD3{R8c+S4J-K!im}DlfU1gobXI3|poUu==V~_@6F7(?D0IUO9pt0AeyboTgl#fCd zXb4a-iLM*gH*gr3F%-nW$F@+h7FEewLZwJ&@v|_{pm1n0y5KV_|81>-{UAfU$!jrE zptmyOF|Va%K#@{@=r}*WQ${uQr!&pg&4o)ke?@5T{+HgdRf6Qm*k$X{xvB|KfYs zJx~Hfr83|MFi0if+_Y!jP24NnAPrYwRMzs%S;@Yhl09%cxe;$8Rg=c*PMx(Rme?RWg6>QnW<_cfB~2|RxP#us zu}z_&#+q8fTGnX&(PIJIlqz2q>8NP`dbaQnSZeSBA?gS;VP0&yW4H{zwZ8@|zMS57 zu2GQN(CK!yJ^uQY55`YgA3Gs3aTLeDH65lDv_G+ebOzXkapYlTSsSKcqiO(7ZivLv zS}HW0v*w<|u@b*b0c(J)2bVq@EgB91;UBt=Jyv|}%711FqG)x!Pd&c;a_YKull z_b|bgm}c)7%-Api8x*s8#GfplC=Bb?QcV(SS>ZfmS!81gSjtXL~v~l%d19_$?-p^=8FH@ZF}x#go6TX zgdO_(bvF=A!*!-us@F4ELlYR1XreR46nagwOXtwFetLRiW+f(?B~>3(4Lv&N(_5PBb!p$L@=y=(m34N zwx)lYLMBC_l#S8G`u-b&Kb3K_L`-e$M>$0I_5q#ws*&*}b#dHJOS;I*pS*7^$1~th zWi5xtvWII4GJZ2$t9Rd~XAN6V)|zXaTJJk24$i5ZTr=e{7bh2@%3W^1Mxtd!&P0xu z9|DB8Xz(u_FHM{}@lkLz#W6pLaB3F`ye=4J%=<()rW3=q!due>L)!Pn$(ZPC%PS3o zBEt}IUCd0~CejbCv zvmN-u{@A5l^^+JFb6Dt2m9`C%dI$1?{S4(6{LqKLScu9o;C_P4fGkv7svax3d<~k! z*z(^v=y=&ena#e!yGFNf2)L)=xb1kU1{{5nnWG44j#|acb=kTKl#RT@It`LA{o9SG zR&g~G7S3kGKI?j?#|ucq;C@cZW&wdu?p1+c4tR<=0=^fv*KuP}g@i_GpPk|OI>jSg zIBqu4Lr9c~r@h%LvF%e6ZdUiij$5kOH514GMX3tw7-58IMk)`8GLjjtI^|ymJcmKn z{z<0c%G6qSM>|4xvSd@%TC*4Rhe1>CaI7NfIc*&#NJHYkG7MdnT=734UG!>nH+7ig zVV8HwdtlNfo87_(;b-+;w}BY4=;30)_V#0mgqN?6?Of7k)U%G}39W>tn7_?gT2J=b zy~VMxQ)cIciKkkshpu63F|kYtIwjv{Z>tjj$Q`yr=0pK${(72+waF?D%GPa+pzLQ< z2l6Z*Q+SK7G(s8$-DPAN)HQsvS)MzOKkn{Xh8sgmDU_ft_L>MZwNY@qgAZ9TdNTZ3CVEQIC30WyIn6$Jbe(%C?QJk= zSx`57@DwJXQ73*Q5co|Vv>e`^P{OW_0U_eOUOQ;ZS$&1#)V_?&by|eZb|jwfm9|}7 z_{h(_*$y!<87q3YVEv0CIXdhBE@*BvVO*jylAH%zwStL}@Qe{V{$ zMpZaN!NUjE4>ZwEl+DTA%zS*Oe$N<0FX77viM~=9BROTH(%>Cdb0htlF9{uMi6Xzu zAWc`GLcOt<8>c-t74jXqd5bZ*#-BP7ccl8U{Jec11#h1?C0C<%YDi+haGT2=Ay*wQ zP>FiZ^COyJ!ZUFCCKh`lL`g5n!Z>-?@d1+vi{G8L&);EBJef(d5&UI#rSp=k1(@en=zwGZ{Ksa#n+OPhWJouSm_!W*>O{kTgBVq zxo8Dqe?(M_50t-ti6%6Z1Y#bNa~0>3*^O~==zvD>RLdLgF=F+HQ{9qgELy@OzhK@n zEDwQ7k%a3MU(3(i*;u@C@>^u{iY+Wr>T00Fs0Sev_qi#_4j9kpJTSVi`wY|`e@}#5 z+cGL&908(n#@oe;lafK`=m)-`RCvwn$S)a?@2O6l_5GRDm47R4$3(R&ZZB}eL<;T+ z^j2EJHMfF-9!l8$<$(f^QH}HJ;VE zby5&r%Q9j$8Osvgt1D^sFh!{OUR%s*HWIv!bl9Q`_!4P6?xeXQ!??voX%a(A;hLdvUaE&jpzqM>atTvD(i*pR)8e>Ra3IgM($ZCeX)S{3 z6meE_{)^+4%)U^D?dO$HP%8>Q6;wKH;%h1vyl&9Q9)WGSOSE5Gg3-+svyZq_hxEEj zzI8}ihM>%zB_hwAC7 zpktgudnCdORyYjUPTi5GJjJZp?~f6F-(-g*-X_`A<|oU^dB`fSq#)6CJFm?rNUV2@ zjEQki#~kdu9M;4eREkf9RxcVtU*J$~094V)IFOgeExhs$EbVutLY=T-o%!gne~ ztw}xBmeVPWl#0=r6m#iWySciwgQ3(U3MEyRZQNai*`Ih-GS0@tzSo@{K4)@jR`BZV zK7WGwcEbq%Odm|GJjflhNssa3ZOFl{kfdKe9iC4{3x>_nw9!^238!ZR(sxRJzA!Kr zv=W7wZ`(T-wWaXk_2fO?Y;Z9`SN4aXFS=q>$B$M%LsP`%=5m-rGPFdogIklswi-e8 zKa|vVDY$6lgps9jgb6%E@=6m5FvFivnx)|0$|+MSjJRBM|EVHqm=(E-`IRZvU_cUi z$kGDMBZkXAU7^Kz>SJ*x&Okfq{czB`YNWztM@SO`-;kDcGZXSIc)x$a)){DJBB=Wg z7{iUvE3d8@T(7AswQks}!i*w8h2WUboJ};)Vn3g@3P~+#NSt))kZH@!k;2Hz&wocE z2PC`>Hff9ZLll(Z8Oxlkf5qq22IbYdoStH&Hian1NHz^}!>2i?WaB&RIxc~1oKiUz zpSXlgr1k>c4+SBJ3K8)?S3b3w+{Dt9GtLq@`KQ6~mlhqrjA$LB5LB&mci2|QXmt&j zr%uuMvs=SqPX}!ZN69F-Cc9C;_xg}9jTK^q7Bs`5T(oQ&-X{LUwZ)6- z%XB;^w~T(9F%Ovz{U!n4B~a(BtZ%q(4t0Zs2`dFDxDlJ(Ql5Y=VFbf8mOsno#U;S~ z_bA3Q=4kQmX|@*&OOp|YY*Y~t_H{g9In$V7N{Fc<=IxRT*Imn@< zUX!{BI`EL;x)=>DK`!c=5U&~lWJ?Ru^|s<(e5~gT?jm+^^$4!U&B|mv+$TThx%bfN z>$lTk06JL7AVpsZD^4d|zreWfzPaXw5Wsyg*_C5 zums8fhmAaYyxj)eE^3?Vk;)kY5?@>$JLD*WVs50j4p+V<-+r>_m~tIrzwaYf~4`Lgi6h zu1gjUk{CL&GI~HhuO-fA%pMYxC%2N`@wmTHTV`uXMP_66K4yiXf~UDh7=c9@8C;5J zt1iV@2!$SSZKtNKXtF>59MOavS=XA_DDiH(nH;TpE$67yM@+e;tZh9?=iOMh1Umo( z&>uqbz^biPm2PCP9D5CGVG8fUg2PEIP%~{gMb|RAx=jKf`IUtxSqh z;Rq(O3=y$l(qWMzEyoWANHMJj;m80&F$^3AEZ2;hLd=3P`Fa7OL&}L|c#0&uSW{Pu zgb2878Q%6t!3_4G!EVf(FI?}c-=T7{uHB<0B(@T+=6Fe~p)O>phL!gdSZpd53_ z5Qw^h(<6YFK}k2@pCVp=lY1f+^N@;;Z6`3V50qz%Ou?1RKKNTDll^ITBTL%?`BXLg zR{aovmIcYubrJ=L5|W^Ya{U7*8t}E^OTFP9QK8mHVg}$P$;FR8b3B-0r|mR0b3uQ^ zyP%|BN&B}REkUIdYh`0LYG5e5ZPyL+lyH^90rglD!StTgyc)??P?Y(%Bbb9RRQs1@ zMZhm2W;?Xjybk6z638(xjj1js(ziec}9M3C;Xj+E<=V+ zpL>X;M;AUu7a$QSUMKu1!2GCVgivkt>aE|W>E;t0NLV6hgjZK&XlE$gBBUs zsqLyOilFjO@NM-G>4 zT_S>X1X62R1H1s3OG~coDdfLLZz{3`(V9VkgQ(Z)`}3+DIM!al(Qz~scc`0jy`>3- zY0+kJKtxU+9=7AJKc84rj#`!wwB%62hzL1(_?mM#OdbpBQZ{09@UwOaNVSU^O10_9p)%yr)Rwty)PJziNH|^^eV5JZypVM_^$U2lTisc{$i?06BW;7`#Q ze>^_0;tFzf>;kCYU&|k$W(hf z@1jLO<6Fu!vVw}ai0Soj=rIBRB#IM!*qXSux1?B3i| z8Qj+evd_e>eiOyRjbFDqSlS0Pg!QEV+9><~k_IM9C=9>EQYXt$VqsT3SX)PrZi5hA zQa*aFaMt28teh^)RLGf6azBmQ#Lu;XDud=lNh=;(mPkH8=VdE9(R?YZwZz=f*8fNs zRauKU6p?^Nk37>1uxvk19#0Uh%OYF+xkAFY*tl_r%@Olo6@(W(Nuy?q4kvc^ETK$I zLoL;m`y*34I)A#z)DPQevEmNib{S&3D6ptsv~T{7{>Zu^&89~GZ`bJx9$p%s&;?sX zjUR+hMDXh)*{DGIFV32D#|0H32p4Pjz#{;}V+J}SV%m+HW|z^E;F9En*4p3z#A&rv zLC-&>Lx}3f{<6;ReMT%J$Jm!^=>OK!P}-bU-_5HW8b}wbvkFB4h8OgZh!y^U&p+-7 zagx%)LKUG0a2=4}i5k*p9HGIKsK$gb>R zB+qi;n$%X1St2}d@lQeM+Hsb0Ki>GJ(p-2kS~9*;Ajs4+MPB29!ap(^!%=_y2TH*S zGO|KC7oa5t*rN$-$lLe&4UJ=x@TD9`E%IhmqD9TFXt_|T59^ak!jeKkS<#kmN$g}d z*!P2LVDJN-keY#s5L+NI-}^N#z=AGF^C_*AQkHAImxw@|HAmX02i^v()AhdFn@B<= zoQ!KNhnUTY!a`R2Cu354@Y7!vrr5y_TXN(qBDvFp5{l@%jFuKCD0s@@QA@G~r6RW} zhicb}2^;K?aX`|5$b~S$IJrUv=`=SmXr#1N6m1s>NZ;}5R;yxg=WKw}GFHo6%H8Tz zMJss76_i;&y@eVE`od3|HeYE!ZeGnrIQ)!A3EEIY#SY-*4j495uVO=e0UzPym)!x}y)k1?8Ga@KQ=+(c&bNA>myXvivs>Kfviccg{LQQk&(}vyZjh`P zFV{3H&!zm!mWn71XCNFX%1^)ElTZiLE;twYmD@yaWA$eo>;pBq@`mTlWEzJQ?+J0jS>QxiMA<;<;bixK9Xx^k#X=yF^^37Ld+w*0X zmr+mUJs#yEN82-h@a!k>x-oAByVAehqN;cC5h7>Y9=xEqRCZ84jkO>QLt7ZknK;ns z&5CL{Am`M~j30z#4#IN3d-IXXj7=VYEloh8#;@d-8bleiHjTBsvMv~Dz8&WdMuP`a z%kZ~A)Wmezl>y&CQ^Cb3Wvn3XDQd;cQ0 zU!d?olCqI)L`Om@w8)cl>0fawFW~-|V{OkPOS%gV0jPN=emd+qIP$gv*93pGrC33q zNH$SJ&g1p617k&`;23_wL8gcZi}y~;PDHY_-jI+#rQeD3_=)2R16s+l-Dd_|tTP$D zgbs`Zr<l5oNz3enCC>?#BtHz?f>@ZGFp`c>Q!%$R$@**&jU2 z52|a+{e+5Fif)i~8$DEM7jM0L0tm!d8=-`yL zN7&rBzCyO4UWA_94URgaLYtp^1rE`SfWV}MHi{qU59&psjrM}4R-KU{fWSE}5J4FQ z5sagq%mVx=Okdr+%OXgh*H3a2E^D7^7_fb|hL$TrC4EoL$wAbp-6Gov$AR7F4K9;n zQk^u={-n6;feo1_7uh*ixsNlI`A;8Qk1LIswAIV;dp8xTmzv&{ORo2d@Z+Qim=WDM znxymswa09I!kHg4!vaBMeE^s+C+QT#F&Sg)*Gm!To^+g67!NolKIEK_khRGM4OCay z?oZsjQsLFz_2s>den%`(5@k1*8^?|=a=1Ajh>l3TyX1Ol<%}YPP90S{26fm>L`I}E z3g%@Q%In%)Iu+k~XE=5yeN%4=;+!Qxi%7uBAsnl5xx?tvFwtY$Mr!7lOq+Ae7B^6D zma&6kKjfdI+EPY7cL!y{gTV*?slJKvI?wsT{y6rA6J|gPPD#x9`@m(yKC$73ks8cP zF-F2gCC-rm)XDmLDU4?qh+w&=x~2UZy9E+Z2Oe>7D^g>iG? zeO2zecSi63e%sNx5cvC_V@Lxzv;m{oUg=h0)6~9u_70horY@&2riK!@+Kl2cl1O{Y z*Sa!*F$=w)br_yyEiQFR2;dHB7X;DC&N}ZPNrvI$ZEp+e+Z&5p6*Py6CFL*L8hK%0 z7>bQdG>8g0P(O+ItE*}qJI;Q?K&t*yo1v?!${NV{(>Rdq#RoM;3m@Y0Mnokc5PwHC z+B`vMUStFzmFhRiOd2@bbq|ZNF%k-}9i6I?)V-rDYb(oH`DC#{O1Ls(6I+=&^@io7 zl-0TP(=;6O@1u-=Bwi8QXL#IX%$8W7F7*Z%wiX6kZrsJ;J%@SZhIp;!v3+my*3a_k zj#&qX&u6r|*s5x|rN_Irp{PeO-9Sg}Bx2v*G;(rEj%iTR@##uPBuu>kOU+fkB{1$< zp0|j32lv31Byl9tNK-u>g8CwlD-OB?Zp2@Ur7RH-;6AFN;Y-B7CQsQUrT1Wd!&yNC>3(NrJf6nyYgB9ErSqT;}@p^U3t7l-NLb-tXK=T3@=FOTsPC8($-XevgAl{E`+;}(gXE-79s zWb7+TjfTaHmQN{!;VC()qC-en?N+JlEJz8CR*dbeO!(PM`)MRUishk+gQNza3<}86 z+bvfXa;_Q#j*^cf-Uz*puHQlWMmQQ?xIiOty$uyF!R;6{+i%`PfyuQ<`MOlvvf33n8=b=W-YneExiXHSr~ zY&Taw$V0ag`HTQdLD6U-sl*%8d<84(l~Dlh>&;TWSEOZ&B< zyfE!$KU%LEfoE%8D&v_F*3yYRZ|Uvg_}QdHfRwh6xVTyQ0|cD#*BFO{PoBwRDCEGh z{ew`sIWJk(0~#O`0?8Ox{Ge^|L=@Y~4Q4Tuky;dpL(B$n^8Wlg4$t_F>TgHh#2zcJ6B~ISrU+z zm1MN4AqY=z2FtT!_<&Jp^M99D`^gIhFlLw7A=HZFbhGl8_oa|tc`;5khewp&JC(b6 zjeIRL;X|1+D-X0Rkw;IgDSS}+ieAcpSyW=PyEeGcX z02=v%F178T(U&>*or^WZKNIlcKp8O&u#M+6lU@U(KX;xGA!H( zJT8@@2nGB+zf1Zk2O?wBB}C3ky7mdHAF|p~q$)gdOmo7AFLq?6FS%po6YI@~c|OAJ z*$Ay(%A7xLMI?mR`=|(Ur+rBDxL&gimFQA_aDExqs<$NrSsTGl0B(|zGXf5XeQE$r zV4Ejl0E!)_nh&>6&C@YeplYJ#eFDJg5=frgD|7>hE zA)e1PFM-wc`v`wALD%?ZQI?VpJ5_bgV`E0Raf>AyH4nnXpp5-sSyF|nzULo{f_ean zBd0z_Kf<85nR64|z{(f=JH#sNT^x$_{r4srXuoI=8O{`CNAvy*N1h-7!q2Qe5R*a( z8e#~Tp)ld9_4jzDwv9`P^6!t%*++-G+`)E+*fZY}i|HJS8~wO-`0grJQ%BZ2X$k9? zYPbFfnrxc{$%_El?jt+DJ;y78&8BSrlWiEc@XI$ldeydN9MFiG;d;sKcyYh5UVz$F z9||AEN+c~4D8uVe)mw4ni&@D>r^-}YUjJm~tUIVh&{raL8j^&M<2jJThGuMt0%Ff& zxa$`vB2TS>0w3f&<73UgMWEn%=RF`?PnHdA`Go*Isy20ZLfoKY%fSIygSY4(eT2;P5{HDWo`Sy8}cMI6siD!z*}XyQ+%fM zjBIrp=OA*$i~#7BO6Eg;jq1(RrJYd^`H-%t0OyvuFcR0LRJY?2Se?u8n$N{Zza0|} zAmRMk&hRl?ImO2}YqlXEHPj?PNwk>9Q)v3US8<;0@mQo!)1Kf<-Csd1sX-#?Sis2i zD;qb{W!f};xE7vNR8$dkhdQUgRPz;mPfC1{XKyO-B>XGwFQ$2tyXfKM=7UnT`5<+o z`cX1TPq7~I5E71T{AYy)$x&B{@bYbsyh4*MmSM0Iz`&y!!%0Sx!;En?wsZ z(Je*dt3+2OC5r7#x|~FAwq_P`)$f%b=-*BUwI)8N-R#qyiE1T*)K(F}6xyS5#IJ#( zXeO@9OPm(OZGrIrwsxIMGEP(u$|BjT=WN@Xxow4=$A+pE_Fe&wxkNL+IE~P-y{60V zs=o=g%e9XPd?GHTm=AP~owe?{Y2A`RViFeU!2fuK-JCrKQ>d| zH1H#i-SLb4=*VYYV<4mhX25*(6h229YEVK(QmYsA5iUX zRz2<-Ob=woD9JV6|4(ZL<3J|qBzb4>MUSh9sY4Xtqs?3uYQ)o>Axa>Pwd7rx5$ z-0*-P!Fm5%r1`rIysAzwn!VG(4DThOyB^_kPRWq+Z;iBHHAZ4{p*iQ4mXl$GsPrIo z^q&dZLF+d#n`Q>lWg>$qK8L9Vda^I?zJQTIsd5N`pC{^J!nz=ma~w^lPUvRQVJ; zR-}(dhF}t4<@}apg%Q04br;jwVIUWv)r`hH6y(9df^iIBx2{nP#MzD>Z_#JIu9L9v zE{xU!Yh*|N7RObTO>z3l2$Z{ibx@!2xKUz#1B@BC zmCtcpwdHS3FfS46-%6|O@+pxE3G9vB7=;$62l?$b74$}mf_fEX!s#f`v5~`RcxV+B zfa8z6hD$NjX7q6w9o1vE5!*bDg|x1EAu=Rh*2o(fOl@<}=0WmoOE?%mLGdgQFk8<_ zUu^4!DXn5D26^zpO4Nn_ArUWMr;HJ+Z2V)UAPrr@3j%}wVItcfc^^+D=`6`^9vy-6 zFvRgm)*4al`h2mL73Q0*rOJ62%NS-RAjP_A^GjXHa+ydK9Tm?d^s@p>d8&r7C27c1 zlS+AgJr8MEAM`?@tc+69mU6eyT*pl7*Q7emP?@lI-3?Io(2yoY$4~ zcHcVLQIEeD`=wvfqH~LsD(1;!iAg0+{5$<*+ugz-SrO9yLBI6B)%^g9+0;OkXt&Lh zRO`hVMw&*)aR;VY1kX-h`*Q}52%y7A^F)AQN1I4%ThRf{exl^&MaL3uRTM!nwlaH; z`?4Lu8;xpT>Ulsg3_s6(b?mwgU4qV5D-k;%K+wnax@4HsKO!4v zd_0~SBf@B`myQn*)BqL_uckj831uNW++sxi z({N$lb&j4NaF`FVvbW?1L=<4^JvU}zKc$)Pl$Yh?8QO^F4~F{;pv0+~x~?s1wO=M)}c@GY&AS{v*b zB-|YmBq+(TjcUSIK$)w)j_WHKqD`2u3`xhn@6nSif2bDnk^pMr~eid%PjZrvwq?JcU$+Fn^SWwRF z0-qFVw4h-taA|kQ=XYW;X5$Te-~8B&tYiBtVcX{d81BO%c|`vO?6knwp3y;kXqoa8 z^*74Y3ZK7SJXRih^vKerOIUCLgPr^i-LfITX%Y2}XQXnWI{K6cPqG9Lw#_JM*52z5 z=38|zFCpDOEt4f-t9D*Y7 zk&nyF?K3cEZlVkP;e$Dlhu7bu!wYw))$k@%FN(+o*w6+W#IupqB()7hZ*$-A?fX9(>NjV=$n*ejvy$Gf5eW`q_tz-D z>$#<6+xx<6VYnV{kEp8I^kAQK3t|&>Bt#H4g?CD*e#)@mBT^0?Ns*5*@2W^{vW#V& zKgWTR=b7Wj;2p`<1HN0Ahz%LC{kSNrPq~>{7SW-@$5{PmPd5xma$$KxTr*mc$}?bSYg)@P}H-7{ghj!>Eq0q9`pC zF)oF1sJQdOTt6nbSs~nRE$|EjPbb{eemr;Ji@KTBKY_S11n_`*&KIN-wE8l`Uzb=P zkl-!;83`0-h&Gys-bKTAHOGgo5zEqdxDkp{kz5H)_9V10L!_wm$$rq0LjqTEHLfe@ zz0WIU;yHLLeMjb2k_j3=RZ>)@ew~_VD5`Rp7?GY@PN7ini+1ojEb=}ENYhj71tZeN z@WH27!%`uXCp_vUS{|P76ylw>@UfF)4&>34wp&g#2A2h7DP3d_y?Q5nC888EAs1g* zSoZQP32l;yAYcE`AoX)TiD^)z%l}#u?wiJriJkh1>vI-~=eo?OWP#X&YtCnojCT4g zz=Rx|aOpi9xyqbdrc}-tA85();}DcaWzr^zdIJ!5|MsfMsDk>jJ00c2=kJR^M_wvO zQ+ms!32k9_44g#8=J>7E7$yN#GRA3YxFt=IBgOSm*m2(xVwvgsE6;V(W8uEIVxH9?(aDi$ z*;wHG9IU+kC^tia^)E}fatUi;E?g#8`*@nm2TsXAY|4ZNl)vyFH=8`(ctypb0ceXr?qFf5#Nb`Ksd#qw+6P9VQI^i0uSfr# zouj#4C+EOb{$D+EMD-t50zrhy&*lZqq(O|209FL}HTW zf@FFF$*a&Q;K|`7aO0`5+2W`R;1md;HMRoqVBm4u^xV4`h9uLb5*4fQE;q=Jq4;bg zTT21=2~MPNzP4~0uF)oZ*ntcfJt-PgZxu*@HR4-SY-N)! znnD~bIjr58XD+k1n#;kUG@L|4_zZ6DZ^=9gR`NY?M!)9V7sv)><3hT?D9yJ<_1hAX z1~1qk=D@AE zN5r&9ZWVdlmzCKqnjf|)9l38v;N9m`O03z0TMmc;<7d_owGoYNLXg^2>IAH9a`S^f z;qt_MLy;qICdN%62=pgMh?{NTa5G1&4p&&VchsEt$lQ8*@4X$2`6Zx&j(`=u0Fem1>((lf>@S=S&lJHV~3nN(8w%;3As)5-UCXKQ0>f}GrL`N&G@$D9+k^9 z@4cPqEi*Mym1hr_ppclB7;Q>POhfataK<%FU+q8dXh7-y74<85CbcLbY^QH7xLB1V zI1JnAaR?OP>|QkLIKb~@<=_?<8Teo+%q973OmZd}hcBF?K9S+7m5Knjgm~L8YzxTw zfM6|)zo+M&60c8LtlKAtR~*97i~7^SompG;Dycr5GVl13xm%!5-SwLS_Tt8u9sL$b z*hJYmZahiM+x)XHAkWO_<$IWKSIV(Qjc_^!(HAoEbZ)}f>1HX$tV~hdo)*0*t$l|{ zM!l4-#&yfc&|-PTi1wYB`sJRPO4m>|T$)c9+l$-rmo=Xc%M}Xt^&L2oIyHD>&hf#&-LPE8|Bhng zlhFhHtByI}3A*NfJ1_!B2Hh1qtBOe)?%(Me@ta@^NT)3V4qsGQ6$v68W;&{n% zI?4nFjKSZBE4^{N3kcsTN6vXU%$FWx#!U{W#v_x*3m>SnrR`C8R6ea2z6T!~pw%qB z@g{%2_4!ZQQ<3=S5?o@9oRrjWU z@bYV0y=IiKf*TRJK*ww&1FMqR{_J=k{~j ze_q9`j6^y!Vml1I{tcvxhLh_raAifMUFl@#crzPOL-g6FRO~bd<6US0DnNyVKe!=S z(S{GNBh2i|2N|+EXBSoZe`(cR2k$Wa#k$}{EG1+N{9|H*W#ZVuok#)KTDEvexbTss zSY9*BHmgKME612cF%~#CUUfY|7}L{dy;d<>oR*KjU1uW=4vY?VRXc^RH4m=%;j!~2 z2Raga8q4-PvK*T}mVfgh=VsD9H!x?4-6moi`7px}Xz^*(A26G#gqZU;N-r1>@D09T z|W%)On``QanX!Yu_HyWtB(KQ&hssm^}k=p_gdD@ z3afB9T2Wb_z!ar6%ub5fpv*?xLDTLJ4k;4qCg?|Rktiwsf1xn)lnCgY0N5b9hn`gv zRd)R)pPJGFD7&UR-|V&Bb+1_k;ly#)$;?hHv~AHZC6!{5jE>Zi-cka>B;|EFWt_ai zRMH4AVGiZ!w%f#7Fpo0Er<`i4)yCJ6&{&c5?p>`eU-69X+Ig{0g+f`_;CeQ-Ds$qB z6t@7pG~yglq!09BwvS4d4>YRLhj!!NPo;zV?Ui_bJc;H7*&vP_0cKp{Gd+b4?x_Ps zy-gucSgZV-^3t-&B~U8VQqrC-bempTZbrQ-%$kzDcBvK>4!hy*o08fPG@hW3;X$nU zg16g7J^tYs<%aG7`3Z6aE{*IgSYYWs+Z6f&^Eicukd$*eM$++mogt8uGaos(4mo#R z_QY-@#>h71{W!QaALdw6V$})wkz0QujZ`VsJOBj=eYe{t&-tv-KkfRJ;fJ`0vwggN zW&CC^wDbv2q|1Wl^$`d=F~~vHjSGP;-0Z!@_QR$?;j81dR_$X8(&s$%2P5n?Bj7ZY z?6&_8GeFG05Od6X5e8N2`uP=KY)G3<4Ic$-r2+KuDV{n6OtsF21pxGe*rk@5tHHgQ ziz(5F*5Xu{!a+C)Z+Px*i}qo1~7|+yB0*U%R*Xp z(I=gIYPb5_s0ebiEeSoG%Y%hwR+h$Y)o|jILVV~C+gT6*Ku!ypl2zQORKjaUTlLZb zQ3}Kps0B{ecnNsJfJbS}6hN6|aEn2$CiIsVZUhjG5cqOkG9_Ntta#2Z!9WMkMu8YbU%AQbq@4s}xx8$yVWPh0of( z%pWc=l@vFG!8JRiwSSgm#JEYc{k(3FfUq#{@Y9-eG*W?pDQTt*75B@1q#ZFYT>q4Z zEfWCt*tomKiVnLp5L!O#x=1YyuHTWV=+;{YPGAhlQ#zXK%bfk&S(xe75QH-Hf*zGal~Mr z7KXq=7ltMAfBzI={*XTreuXG;Z&jQE97)UYL%Wp(*WIGkH-p|tcL-?~j&9hDV7;TPGd*(pqz~+)20-#UAy~^_F*MDT6m`39B~UdWVvwj2bvXu@_ohQ3dXogs zrgC&F@Ul3T3-bu*_UCKJ+^rITO)Tco4ztCk9wn+5)v7drqq9b}w1K&F6&bdgG+ex% zE9jFW&>^%hc(}i98yaL6Dx~e|7p?+&-H5mFfXGF44#SRjvU73RfO7k4_O$5qA{qo) z_^J*Oj!sV=t)Y~k-Ax~~S{M|Y^ zKkxWRe_xD>yxQ`R2nf$gwC{OBeQT73dfN~F;hgY>Ewyg{&fbw&y zm~9$QJR8+YI1SAmBt28xQYw?`_wkVci>2{r7Y+dV(7Het`8nTE0x5}jv>x|7u=F!u zijr6t1HvzB;vI6eUwxh0KKb?S4r7d@Wf z_`^_=Nx%h#hpDDSf|{*(0FDN#;|<-dbgM-o{1-{8Q?c_5v`2NER3V7D3fdXOWqSRn z_I8J{W+2~7@QkSBCH2Nq=;(GBD_Xk7{94Cz)O5A<1hwwAI%*ZhVPheT4aE(0(R&xz zTsZ>vfu<5?TN@qhFw^>zN&Z@|#9N$PRPVXgE5?<^@e>VGj8b!fi}+kHbGKa^v5>S~ zRT5Dd6nIQL6Z)V@msq!#<(^$dpIqEx3x%&cvVSWDaY9H2)+w}4oVSMa5d=vwvlB{S z-*(YPDm|umtjKc}dms@pPS>)sVID(40i~{;+;ag`=RpIK zVhjW}i3_FSSC5{i8J0b;sSTLpX?d4Ezvk3}!C@Q|`$3RU%nM^ZB!w4Kho=xUJkNyV zZHcLpZ*6(5)&M%Xo}AvlX+KI0K+7haAv{v)h4>XIspsHZn87kwYayeweNaz9U-S{E zn_-=WY>%oKtSB=rE9re{AQzxlh!JAl3-`)#ULZw^*iZ_z5m|*%v_yD>p-g#-jv-6Y zJ5Y_fDtTDmF%0srl|qHc0PlVUgkhvxt`Z=a9q5qc2s#9VXdM(B$)5@*MO_Q`f^89$ zC+OgVSlllds>d9mb$MU_QlPheHpY-(F9u5+LWk~PP$0$M1-?Eg*j5+{f_fsL7)itg z1;C?4uxEJh$RzVLMV3@T8CU?r2v80FpgR?VeW+rC{xpM+~@ICc#zLSGNxc&#p@6kn{{XmUeWCC&fO6(>=BHxu{PmHKd70z6M z^k^c`vzl{xpe_&2HKDLUZUCeYr|vB%GsIY~#d!fC?oflB?nj1~ZaxU`JB1+2_($fV zA9%z{rlUe|5ucAexsqg0ZQxI_0!&gxq!5ED%Bm5AvIzx<~j7ftMJV+adBFX?@f$K_(b-Klr-qih&7bOQ<+J67L2>{ z@eL(}yjVt7+mtGZ#*1)10iIUR0HAr0ekJ3Lk?U4=PNQWDNo!v3I#I;>;a_R zmrxKAn!;lJ6Qqurxc!mU*DvDe7Gdw~2|3NL&~fSBc@IS%Yffw^aS*ghR#f|@W!dV1 z&@{{GWWQfAH%wUkt9yN|p=bv;EE;$Pf3;Ef^hO!%I!i7x#njMEB1$Bx5zYbkV*+EWT;Y>4+zCL$v*KNIbLb! zlmak0ih^DcoQ>O%N$|DgM+0M%%w@6dZSU`3b;CNIwe7wr%Z z7>J!Y491Xr*U}Y`hL@PX-7!YVfDi)~SDV7sApR(Dpn|u&4-CCwh{mmm9{oDzyO$EB zTxe%P;Q&@x2%59>^Caap`9v?dCfexhRBVA=4jQoKyU1WRE?up2#=*fBtyX6;Y(5DU zLKMk7t)wUUffA$8zH>g{41x%)$WJlLTLASoxgLnrUCnoIk&jdCacM8?PlAdsYVg4= zJ$AMHTP(`}zopQlvfvlOWl<(93^g)Mf{X1n3fM{sPb}POYwFf6zET>=nKt+vL{!g3xeX?{&{}#zyJ&I{ll>OGnxjDOzB1#3P|C3pOP_Q5g(ELPSk$QP=ebLU$Lo0-4ajoP~;8p{!-P zO2g%)#?hNg3{yFuPno7PW($GE#j_x;4jqBFj>rv5jRQe;QL}og4e-E~RY*#A2VC+7 z4aIj{fxgiJY>Xdlej4N5lFREzWGV7W`qoN-yeRTLvos9>b8;EyP5}YiEE~|$C59mX z5yXJ|5)iR~mjt60C|6+(b46_0NkeMJrEFeBLP4 zWenSsYBcd_coJo3)@fBa#7A3CGJ<(s+RM0@APi5Mv>1WrE|t8G=rpl5HTyi168-UrAn@ zF#%SfAc;(>jw2ca-{j3xB$N=9#Z)d6SCUTgfEWto5A-+em9KCI%WncKa13&rSQ}Iq zTQP-uBDF!#mPI7y)^yHUuLS3-qx)6dOu#e91g*;g6btU8&iye_`DNnD^s6&rm)v!Lp0 zbKo%1q*Be!D2VcL&y!GW0rO<>mjroLm53pg@t7r0ztAA=X5sh(KVdfFB}Q(6g3~t_ zN=U6(8sRrz`sUow|FU?d00d*B$5UfX(tc2Y#d7)E+c8mUly$`wgzJ4~_jTTalHq>B zt`Q5SCsbv$arEK%5!}xaNnZS$`hc0#<>_QlIisI7J7BHcc($yUj}0Xi7CN=DMalU3 zH1v96=#NQp(HQXGd}Z?<%Gmqt{E4m`R4yDc0LMf*9*LGA z+e~lghvUJMJpu2@ zWpGZp`GA_U9yO%nq|uUh7n;+A2C!u1H*%!|2~e0dzs4hBh@yB+$$&Gt3zjW=&%!n9dgx(7MJ>D@NbI(1!g>+2g$FxQV7=YE1^QXXN5{-^G{)9mXXTreA zPdIX;ouFh*EP?x{NATSP4jLHN;9$t`o)X?_AAC+OifGM{VRnb*12RR;i~C87yz0ZH z_QJ!UL*M>HP<#jUkzxvhLLV}DHZz&|(1Ro`tNsJSqk}PiQZtYms49X(7Rn3cwhnk} zsu62Fw9MVj1O~=b1@^s#@lP>hCVIZIA^Wbv#ekpj$rVX=;BR!n_+liZZg+3Q{ z&t_u`ZpUeIw6)@9N?hXX#*oEWj7ufIo%wdi40jSvUh#wya6jvxI4t99AHDU$%Jsrf zUwDAO=XrqN1N_BFbfUOB3J7Tg2Jplbp~^dGuaZeO-EW!61V}e>C|@l6A`p zT0}ligX#~sS*XAd79Px7c!Okw@LQ|U@rVJTG))^>c53@Bl0`v1 z(QGbLx%7iH!o_$+=6G)7D3l0d2$M7b##jK&fF~Qn5JX~`2}G>lE+h{LHo{01i2b1= z)&eohEj8QtAW;6&1Nx%zsF(g%BA@&_seM@i(GiOiauKg0&_2S!^P-jXRj35j6No45 zy#g5^Z=*+<0Cb6AniS`xa{FW$#WH}`k<0ObGbdrK{v3D-j4lS4VjtYtwA(7SYqfoo z;e&HuzVd^5Nd(_#A4+p@tYZ;B(HXQ;LMGPULGDlq0b@d9+bNcX_EsV=l4f z04O+SNCYrVgV-%d;i1?b@dyK?-8KW|M0ZJS9WF#Y_&gj)ScB}&9yJDE5R3ucOC}Wt zLXkm^_;SbTU7_DQF*B_vuq767vM6=x#J|S4b*vBrKN9C|#sWVm1> z7Rf6o7%uhe6kw!jwp`L|4z;gEO-mP%r#3Q%!ri2w*l?Ux6c7rBPqP9|Ghx4484eAe zDl3qIhCT$^EwcP+Nlg`dWIeEGPHc3!`X7BT47C)o0W)DA{KWH1F?#bQ2Zh>Vw%2At zCf@=Xxb{-zg=a+zDk~GX)ISBDhA28jpc;SpC3V_}H1Y*a1ce`iPk6>Kk2H?3jHnIk zAY0}vmKqWSPBI7jY2C*u^mI|7{SVFL1L(IAbc-Uy*<{VGKtXzJC0ve3^kfc zdC)?n)PbgrIiobK(yhQAy0~+miU@Es>9>K(BPOsB6u0oQll%;zDP zWwRRd7HXACfY?B?2gfPBInW|7Cb`~mpW$U!-6;0hBSwaBU#eg5cNWl~wguHw!2`foXBk2lZAm++e0(k2jsDn1Ly`$Ad1w zD5O;RC$HL;_2CZcPMneElim?&3f)l2&M3~}Gy$RGsb+6LKb)%~Z0I|Av7sn~0+@A4 z#&lMkFST!I_S@H;2LG5a%6l3U_%b(J41fyC^7IP|*#pc21X1-PrRsJA5pDsa*-p#$ z%Hv@t`r@7+?do&{016u$S5CW_~ znM^5(1El3*SbDH8Vvn_;G}>o5U*25^1;8R{w4dU{;#CnuCl_3Ews@4d01N-L#eI*E zZuXfTG2USyWG3+B;_b_Dtf%>umtmBStS?8L1CyHo2bv|)2S7gt4utA(8cs%~`Egt4 zb%t7@3<9W{z_HR%C%@M2g4#QL>=Ws3wV~0THYS7m0AGhQVfwc>*fJ);-D5Ru5CWry zTG%zeC)?T~h{b8IGwm!(Nt;5+k_e78FeAzfQ%@i=HLRNRWv)N=xakmnde8X zn8vE|!AhbM6=S*J<>*5la)}P1YYDa}3+;luC4{ZYrWO?sLPy?ktPIY(vwgWv-60}% ziox|#L?}Q?qL_#hNQ5d87URCV3S1Y~n|36~tV{JaF&VMI;8zJ2!46&et1!hdc@gdA zl~1@Ra*D_uhs`2W!ESnhHw{o`B}K_gJ;8&RxWRcxU7NZ#OyxdkC`iZ`5+v(iqn9ga zrwtbKbe?9^OB5imaWxoBc4&GEaA~&aIH8hNu}QJN>Z7DwBhcI{Xn?ED3d>lo)h9Z` zjK|RjN|pOFltnakxZE2&?T=n=ih{;@yruH3j(MsPH{FqE1k17Q!0YOv$?%LHynuq% z=QFr(eithw%3D~X9o^w*e7Mt*9qSTjGidA~PKg8=%3W8_Ar<&{^E3brr3% zF&PO?Rg8)Rz=9!Cay`L9P)QdDK2JA4Vl<`?bqlz0jUJjEJ8F$tjh7*I>`1>+o>#__XZMfnfsYP97fHfRkoE=+9TX(NDHk##cr zp%A5}Q9dM5BA6-rdPSAQz-*eBc|bPT3V~5pz6}wfl*O5qvSLE$LA`<4Dy3Q$c7VXz z2wN;O2pBrq!|kqn0b0BsmVk^av~>=aR-WWT=S=09Ivtz)l`TLH(__lPanf?w+|!&rR& zQw}(~R`rpsQsgmP>ESp;UZ>$0u2_=zf(G>+N|4&7yPXU!*XaB@;|bEbl`0sbIPWle zb0xw_o^EYTvN3*p#uoy`&^N-YDEv_rDr{naBtlsR_%z61oXJI>Q z5$g3Ieg`>}>{kFcAjmN)j7GfoPU2Z4D-_f9wnpr_xH0r=`1yW)j_FiHdsoLxs*<$;o$REHd-bdA+| z0i6KO=L~VjWzl!GG_v;#D{?D6m6)n;C;(Inm=L9nZ~E{qjxHME*(OyOdfY8QnIGj$ z)r(cCN*cm6f{0a0&r%sAzI3hZy0vaNKIP|3$%JGjhZ=%{ym^AezF15yfwkwbkk)-z z1Y6pkp{@Xq+NmpCgrB1NcN@_c)r|+yOOtc48$Ve9B4gUjGjkohc0^j0O4x15Rqn=JG zf36Q0nr|(};oaCq?Gx@apos_dNLq}v1YeV#M`eOWdeW> zQw$%S1Ht|qKY@UWDdFyHlryGV`j~W?XCt!Yo;5^&*b>Hv*nS^+k%v+A=9l*7F)Wer z+jz)=pt`zaVG%mrA=P4*^3k!n#w;Hwdf_jp4g9(bh(c=23)<_@rum0X>2wt|7pf~zA1HR~IvRYZ#()AlWdH$H#p+O$5+E)ZJbeJ?u^%j^FWdGMyObpHu#1cmjgc>pD79l4HS6L^Kq#-EtG)`=h!9v+3*eCpqjbVj-J#h!vHO(;)f zM4Fqb$}yKQsM-|UO(NxJL7j9O+pawWmk(Wz1)A-y{$~AmuQgx34-NZ*}~LZT!8(lgOA#Shmz=`$X*i(NEDCbP(`k9 z#>gu0w7nyg;JO3r1X8;9!rLtifo{g*h{R5$%rB^YifS5|>MT?ok@o|-IR&c24FFMs zp^3!D6`5uF){CJ4L!n0+#93IjpTnpr&H&WNPEbS$MNbK^Ww{4L2wcUp`7}!j2Molm zA3wuf9he2lODBlO)JFB=|GjQ_gp$%86=%r=0UYrrLdMrDwTgv?{o*mIHOUR&J+EGl zLMA9^jxz#%)eC7XB+hkle8*7jg_07qT;XRQW!9`nAhTUU83b$0b~)yYQF` zGy?r?oDL9$JfS0m6Q8I60&8N>WWt>ju}R!cGcU{XR$GHIBS~WB;@5eM#+^?;c2ODO z!lM(I7~mXLm|-hssnN?MeS+5MIwt)sXG};TP=zlg+`OO))U-g?x=5I#qstgFDimK+ z_(k=Q5Qv0}|LZyZR-K(2+Y7inLqN*?109IQxKb06w`ihasyOT5`_`u1z$v*Z8tk2+ zksA|~43S%R{Q~;T?PNyilp`11-ZP|+RMNbPB4HsMF{R9lg>JwjFjjjiW-gmRD6>;d zL&2tqY*b@d{=%G``Sv6$3NiL7M@F`QyITCC2ad;WlPjtXsIsIMZZWX{-Rr3mnH&h9 zlEc^0_at_VwXDlaLFp2vor{;p52DKFpGuk7>_?gSHOQYK{a3tzB9F-6v$5mFXaE2z z9C$c&fy``L8zor@0;0z!FvQ-X0l$gT;BH2KZ~u{7acvONAZY-N#nF;CK%@`xz8$iG zluw+OoxJ}n`YH$WTpx!A$V@~8J%WluA1Cu#%=n~I6eTzc3>?LOPXw0^r&{cLV+8fZ z4ZC3hsFhX-R<<>Wzy%RH{>nVkTAD+^jipxA#E@cR<`!f2wSt`Hc-eZdv*XWhOV)a<3`kVg$9;L4!s=?A_l%8O`XIT>}nlzzf zRU*Q3U?MbZY{vd?KE_A3B7mEM&DF`;FUra~Jg7HLe`vQo||QzD^e*cq%hDIk1+{|K_X3lY7NfNc~9m(89X>2~~-k zdKF0!!cb{5T8oL;yqE+bYnvAU*D;wIxDPqkw&(TN$HZle5)P zW=D}ZV`^PxRtLgOyNB5UcIXRIN5fwJWPQb8GaB*nBvJ8)dl%}Uz;Xmd>O7T;$SVir zB)e|=fSE0F&XA>F1@0Mo`QVHz7fz<+L-7fIF`zo}P_V^QqKR+z5S0gK_r7NHI5ezC z02rcxq~_%c?eyR69|d;5L-9U_<18)QL149fVb zO2riv2*Sn7dKUj!c{U3c{YCa!}Eft%-~f_!;9HgFl)2R785M2T|z1OynIOz_*u zN)-I~#KLpGUkP*S9agSK2H(q|H9qa<-4HvunE>gv?=^myPWbgz^t|g@DYy_|ZzV(z z+*xYnP&l6;MDB>FvNUo@_IxIH@4Ev)A)e{w-fz#z-!9;8?eKDiMPBhA0;W{>tAEj64mK~@L1>>(Os}}I@8A52>}J%1FWFlOHt8X5$*e$=X|LpQ zKhQeLbjJ$dTrv<3K0HKUlSNhw5!ssuGP2LarQ=yFKLfEQ|4LaT9*Fz{SSsc(nyy20 z2YiDG309TH;Is3(Wx0(aRy=}qXW)15YGE1+5SKb+0*t$S$FK+8o%67G-ZWgZ+xlbZ z*?qTEomgN_k{@zL2i0aAOw>Pz6;-;M)azzfsYWBw_Iwxw17*)1g2Hfv1-5!*Q5_jO zI^vS9|ed)u|X!G*lT~PmqNCeS?pFA8fwoMK4Quz@=~T?6{@*KZCp>zCE{Ep)YcGx zU^5v@B9uSA!Jy|Z*cSqpjft>1mYwO>G_Gjs*=)ZX7m@Z8W(LQ{V(zTY2C~@}TG*It zpo5yZ)u^CixGPC~hgwBwLQpWMmw$~=QYH->(zAOn!k8nNc7B_KxEcD^ANw@&Z2#iYP z-q|ladpn*2ass!FS}4Lb?8b!AI~YRpU3Jbpazgg*h@qGUj64*RP=GMQblw}gxHUXc z)`-HOh`IzXiJMa?BozfV|N1Eh=OrImL7MKO?p{#35?>nrn+Y!;ORit{T7je@BWW( zT)c(<=negZEH=m&7@IE-7mbeJ42Ii6e}`ngXn%Z77ZfHqC?rq`ZBhfyhU(qNfWx%m z5v_Wn*OSB^K*y6*qNv;$kp*3;-SfWAUyjKE&?!I)a^V3Lp`6Gd9uxZ6thH6^V8!@~ zu^= z@RIVxk$)Gqi^e|65BL%_aD*|4wTjsU>qzNlx!~5u$Sj0KEQT+PW&#dL#R1b2^fM{8 zW}shYs#Z=|TFu>yC_^SKG#r$slR7uTrScgRNsA*mP%22n*>g!;dE7J>`3^X?1B$6O z&cQVL`3ERSpy=rePo9%v3KuA3=EoZ41pN zmZHI?vEWG<+mxgH1{%O9B=1E?(P0fMg5_nP=5sklFfTXO{3owzO5Gl!3+?27WW<); zP(Jmb6*CAam+BU1s}_sK6Z9gxNy0{oUFd`Hzusc7j93j$Pa!!0Ag|UN(4|o6qmLk9 z42-%?MI{@;am+_C%bofg+z&d85D+hm5iD481tZ8>?3>`T^P8h9<&odVcgnh^Md2C8 zyU$MTQnpyS8qJFPUjG86`GIA(`8A3`CLN%!3JYd1Aa1O$Y)hR361a`vkg-u)kXLcp z^<5k@(~;IRiWW1x>orYIQTlV!0qssN<<9%n$_M9L8<$xd>y;FeWiS|k`B-8SD>mlS zNi-Qoj^wxc|^> zLvq7Yn^sKQoMoQ9cx2{yn|O2A&_8LZ9fhw&6gQSf3IE`ALM~)Fq8{Yfi$yP|Z3*Ml z3izG{wx}Q=Ek!uKJirvA)c&43X7ae}j)*^3fk}?qNTzDqsy`V_@skU@=>>oXjV@<7 zVx@F6_F%)Qf%%ED|1kl{k%K@X?dia~3`s1w+ZYlTMwJ2CkBGr|C;p;?_x3P5Vqigi zXiH_F3&;t~;x7TM1S&&;YL6@F&d8mhP|sN2aR~w`;IA$0Hu`?lU9AEb>1<@nGA&O` zK5@r)vzYfMEP?Tla93{uvO;(wBp+cFR%-I)w#7!m2QXFbwu zC?`TW#H?JzLkj`O=?7MgVGt<;P6U-SV(730*by=fp+p~8+3jD@W*ymGX@*U`Zy*NVo~<;!+bee|!geLeQ+6ES#=Eq%jj_Q?ub2R(^=ep0S0j($)I>v zRAj9b69~p$qQTU*S9$FX`!L934mZsr#}&d5BC8csh`u9w&Btc2iHOjkXyHTk#l!QM zePr0QZo~c(O`vz|^{)aEJ^1`Y4$eg7OHe7jr?X!Y!?8SV*u8=}D_mMi9*AH&K@)v~ zgatn*3tZ8@Hv%h1NPfi8DE$aX4Nn>YAY-FKNPH3mkP4nKHbce72>_OYU{yiz4F{0&6C(isjtSg*drCqw%Az4Fs~e7l$}GXOXdD82{xl8}S|XJ| zB?TO)8!gxZnvf}!`GmvCLVH!(6aEpOF? zNs#ei$PPRfybm5h?T($+k+{bImy6XXe^?$-mkV|T``w|%;0MhY8D6p4&S8cVJ$qeP zk5VS$*$=BF**WFz!-VN6`;EnkG(Fp!gQ2Z7SC>Wod|)^O0pxV2Y|;9m{K9W{u)&L$ zi~>XMrjOJrSu@bU5)6273>=q+$^+mf3<_-oJv$nQ{B|e@FqVJtIuBsH2?em}%8>seldy1F3Z@i2;3(pE^#@HGZ7&d#k6lC7$` zEBTpmG9y%o^I!=8l;ec8t%!s`=FfoI2ue)GgPt^Y_XKY1vJVkxs6H#{WSI6>bz2on ztI3#9o&0*Ssy>Ro*b-7)!S`j6mmfCS+M`CL||e4xr032Gw&~ zgnp9JN~5sT)*}YBCgjNpfv8G$S-L~RUWWrucp)-T?g2?YnoAmGCXCtP;U+v&guao& zjuV~gsDyDh9@gC}q7*zbU5#0jAg(zvG85V;$76mfk*l&peQ}Xb8|Mct3yalo&R>X| zW8hjVHKN_5bdH~(yQWO15##uT6yRlRr-GV`PO%{kibH7CSD4a!^3=%X+A>Ne-t__u zd)!h`DkTFFrv{%mVK^rgp`hJHDsKF93x&%Oql@BWZ&9Fez3@{=aEPQSPuX&~*uI|% z924AWWew%YKaNnbfF0L?SepE&vC8xm%-Fyk$+yW)?BQ7y=>}uouuIZt^dt1uEIopk(^L1H z!S5EZkEbyPx(domtmF(_GjOTmj4Se3KM0R&97X|TZtS~VuBEg8R&tetRD2fw8^{Ah2E0>a>pIRm1Bj4+Sy4P@7{Z{v|AwFp-kZqk5IlJS%= z2~d{po0@2r4SK3PZ9}1-C6n+`hq$nSkN+T8NMP{xaWa$M7^-BO>5$0l z?PSBGOjk2H1USH^ut9+tx-_9a%lM=H?HdqFL0CGi{8im%zx`AmE+kmt)l}d9t`)t< z<2YR4Jn-ikzaux(TR_C;d~Iby&8T(xR@<}?pVMVCLg8CDR%uviBfl&cH64-P4;JO> zqVvU*L7oJMnrP^(vzL_zSLlnfvNHyxfW#8qT9+WS&=lq%601>N(&Q|{ ztK1s17ci%l)odI?Rz$t0yRy&Pk|a?#qdZ7s|ASyoK#IVuDZ#J~ZUo%%>{u%VjDRpB zj&T7w5#de>lTg-!xo>+d#ZNR;@sLVtcT7rl#N{)RQ?PQ0sj88~cQF++i#H$>~kI*+Me;ghlCxUX?H4WwbzosU}aY ztgvUyQ0qrd1G~gzeO}sfP$WtD%?hxgxP_*EI?4esATWe`(lNt&m>Kt-s@M;ZO8`ji zC6GNMQ8)wMM|5M;YysFKEBsEpn^YX1F@Gws?nvrBTw#7V0aRHQbl;BDlAO~BX`4Ny zq3Npkwl(~~OjEjj?Atv-MA2hs(as4^LZZ+G$NDL6xb zjsU^i|CrnPB48t_>gc9B3)2RWB4}rGpwH`2+~U*gJ!n^3qi2Sf-qXLBFpNC~UhAT) zF)SJ`t_xjuaN@h!ajp%65#d(!56(^dW{Ka4LZnWtU_4;&Ug0O892RuSA1;Kl%(Uei z0RsV|ww@1H3t2a;cc2K-WPcuj&Imo8Cy=I*ptFG^0Pk6#!-rc>L}22qT7-l>EY|&U<2tJ04b4fbur=-z1B55w z$5c1IYuuj5!}usvmY+;!W>>K*?`#BsT06%rJnt4_0TW$~3AgBZLEx}tj;i~nSX%lZ zx-1tQ1e7B2hKW)8y_h-I#*FJa-R4Ppw1x@^*}zyFZI6p-mc&OgeG>~Sg_$_cY3Xam zhb!pH5zk*AGuCMJm2m1bMQ8x|h}_L>D4yVCw$d#)ENyN*R71@Sp62k1B!T;SGLcH@T^oKo5JEWD7>%d86q$}0RjIm zJvHaex#MLX*li09z!&?7Hp~kKbcP>l*^Qyz;`t7*&TN{yldsdFuB^4g54ov_5sSaI zu2nvpNbM#ps_qi@a?gthIY;{P3{c;KO|%+1f{0}}`OB9_YUqA|c{LV)Eq+i*piU>( z^5LFh2s~|+3fnEhb0@wIrtN5@SX_loxyUULXz>Jv_25p1LBkNGU@{8fdpNK7;bL5k zmt4pNLqdNi9-b9m1!#(0EWPyE<1NAv=SqCs=DdSPpg?1K54j|VGDKe)K;TA9$D8(L z`MtNr8(X9*SW^DAic(=5U2nrtzAg-7309DZ9xk%09%usPsA6qIB zc7)&w#q>9^ZHPfAl(CU#v#xL&G!NA_$S9PyGco3l9vt@RGAb<*5_cxIy~9cK1M@`f zI@B%dlrO!ZmYM7JK3+O$d;;F?Wr6xa&K$Ug{?7menf>#j)(}vI0-goERmd)T_P8Vq z6B9Oj^jtuR11fZ%)cu(t2(S$h^5!gnOm>OZnerNvh&$8!LjOCiMwI1=2|)LH1Rr#2 zk%L9zl!=GmHQh_uf2HRra{L$}=fGxZ2=m0Y;r8H3e2hpaku3e_(t*@g?X~5ReQ`5x z*oN7V#G$dq!6*nG$KF$GfEf-GP|O+9bxu8D;KGz~wFgq11>m}1XT%PHASpnYRLp~n z?T(fRIj6mr==b8qFk$}MbRJi>I5ociW4M}f@N}yavkrjQnfqlQ>;fBh(+FL8KQIw0 z#S*@CN*4G=3Y!v+S=^2S@HDm7Y^xu{g@{^kA9k?hrMN?1!^{S$C!h=$Ex<4VFY|{T z2M0Bam07_xy;8)A9qdwJ6Z}>}ur#wv1eZ+o!GNB;hP;M;9VD4RY1PNcOOKZr`71s% zcQlE0Kjj84h+mg7O-n!+Mc+BeTt^7hI9@X&4b|F^T=o~n5ULIgsYs8AaR>~fPExef z1XloWya<^L|EEi@!gox|HZs@*sbwE=T!ICko9OnFrcAI@y)#BU1H!;_=ZiRS7D z6J~ScBm9+)0yO$+F$b$FYr|~1?AXzpC8&`ibj+7x2&}Tl0Vc6;#?anL1DsOPYJEoH zC|9zoUsG)Yq$Z%i2@~VWV*lk2@c(_!2~EItwA&GZ{-;_=nnEVX_f*^%7wfZPSk^E(6`u?}JubQ9F{D2Y1**9u>&ZwQ~^zlZKvMZe?<7@l{#ecjv0BI2S zwx!VNoCv4PJw%PN(+tOdH~!#KXqDMa4^baJkO|hM+it^$KsSJFBX8D>cL`xQwv)wy z2qF`i;W!i>sbIVOl5z$1f_F>M02XREp4g!=c3#L(u{QE1OVI?N`8pV?aow zI*p$I^`0)P1HF<{*z|G((2{rhkfj7F2ve=vtLwp7p6aDKAf~$|hRGlIwcx76TP0S< z(+-95dJ$gDNIyk^k1#l&Pm@Hz1>K1S1!}r{18?z+RLsi?NUXO$1&tqmRpOQ5fLJ;J z+)zpsW2h~00bC*A~ds8 z(>Zl>GVx(Qs*pj86Pp2=x71lx!~5pIVwA*6a6o-RJuHaMP7s*obI>HM9L~=#pA%@p zckSPKwl7{+zui|=*PcWJW`YRDP)NVdSrBiHTCot|134an4F%FoLXX7mf?G(qG5fXk z;s9OZ@%NxLw9rTFBF9qeG-!Yo(ab~G2ZBH^bfNAXOL!3TGCh|2WgxD@W@Ij0hC{Ru zdo6WmSCp(5NY6I7v=Q>eB(1>(*fX8#g)-pRwuB`Q$O z96{Wruq2a;DTHce@_+2Wamwi5(=oA zor^oU^6xPbtM#Q)xQ zsJ?Xsz5XMjIS$LKL`Ju4*XPy>@9!r0ai&!qEcZkdIW9F zXJJpiE76hkRzFNl3D{UFFB{>E8{;W~U{$)^RhBz<{t(1-j+OxRd1!u#hK8-i$W$z1 z+7%YHeUHvX^B+Qe=pYZf4HBcoL)Z54a*P3qxYZGeiHjQJuYVCQ+RnlPEU?MD7mJH< zEN@<}!~}LgJ@Z|rl`x=tiTs6jZ=+i@i3^N=6&~UIpD;{K7-ecOh;V`#m?}vkX)w@T z$Zw}I9IHtX*wTNIA|lQr3X_9e}( zF>6l{q-w)rln?yI=%F?R;5`&W*D4v;K(n=&s%ud~W3PGPL~tF_z8+FC^wonT)Y>Zz&`!w@nb+Q*5BTcm0glv@EIz!H?ROGBi*-YM%8yD!pB= zBjILVOhwx*l`!_Jdm_NhO|)n$0B>R}+9plI=1IoFF%_7q&h}~egVuB<%a2M4_l(D5 z5u#Y5$%@MY*<=&Z*z(mdb|l(8gO$++Ir;{eid=KBH2xn^vU5C*8L${BhujD=kl5;F zij8{9UI__a$xooE(ipz~)wbcEZ*a4EO0b=o6-cUE*^HZJivvXcYDqY97bRK`{ZnxV zn6e#*pg@E7;r4rCq6Yv{u#lDH$F%Ye)+aJeBP6Kp@4qaW5@8c~0;yj%E3D?KnB%20 zva=~j48IUTlxO7I)S|TvhW-I!i9FaKdlj58@{=;2lsZ2II~P*bj8rf~lp^P&kYxx} z|KQ3z{?(kE#`r(SC=?F3A@oZf6%O3Ow2U zu<4Ot{nWm)igKWH*{6Y&>{1?4MFO|o`s}%pe(x(jqPUugG=X49eRKDHO}BIzSP~TDyxI z0zzl))nKm57*R4C#U*w?BAriovGXamupS}nn9o#_!{ze&i6HN$!m%f8rj9Qpo+}>R2qE-rjt&-#L$WyLW45gg#+zPc`@F;0%R_^x1k?5nyN(>~b`>IF$_#TdVpvA= zB0FNyHiGdl!;6Lm^(^JLZB&Mwy}W+PUEf>K6}{$6J(ae<;qWq~ne3_AQiJxoBtR3T zmMdB4KyX(Id2MF0#2J1=vZ7dx6*_*1kW`$Ln+gQ7H3AKUtV);OP@}-kR%dbZLNW>RSo`&=}L3m*R6B;En58r(4HS{$(e1yBtd~(G1{Vf=9aG6g6 zu^=$b{t-@Qif4m*D={dw=sgV~0+PO{M!U7Npmv6|Z|I~m85s+Nrhkx6?&Qf3ffnJY zae;tF(Sle_f~*mRSiN*9d}BL(A?Wwpm9& zn%q=Ig?=_(MuGQu1{#Q7+&{{W*afsPYz@pH{4@M)>=(@$FO5;fhKAOrsX`<^;RTe? z>u3+<+EhUw4&XouePFH@lcqBXAk(5C5o_moCK&%65%j?XmEc@KUMoIfORm|e7l$2hkW{4oqq=drMr-ZvqYzQ+u0EtM?=@jhHkMi|AwL`3Ms zh(q50iL|sG0@b(WP7A>aV*g7wf<-{J&~9u4h+?0UCn}P%z81-q>GZI;2~u0BR3?Ke z^7|=c3;?hgOGdeX2@o#?&0wI2MI+I79|_spuimsk-%|BF#Rq{qEGVc5eu8m=1d8;- z7-3RPocZ%`MJD_?Ck^A^#DtTkkn74r>5do55<5(uq*a(zFsWw&H(pq`Q=<#xdu8u* zDcmCMh;NDl_&_3Y_Rz^@fE4jz4Uz(i%rEjTBVqwQ9z*_kf!s+QAalu+a&sE)nMYJQ zVIyebD#Ras+Z}=okodnu1Og@hFWs!ieBGcxH&Hi zDF8*SY?x{m8)HlWY(g>xy3Fhn9Bk4jR{SNz7@XcpU0$ynE1uW1WV3ZDXOpMoTrpFJ=NdZtE1FV8sIr3Rc)W z5wXC?mY{Vw(rbrXYQ{nyrPQ=eP}g$2D>{*!F&I2{w3nf1kG?U8;A*E3; zRnl|S&}fuaT`jC2NsN~pSzN!on%cq*4&7_@N-y6lO@!$YN^`98kaS9%9l$20SOcsZ z&}m1?p#}_JVa8tJ2sRL%XftbiR`+7n6y<%eUiV<&a-Hi@{jrn;SIn_U5_*up8#OM| z9yi;CU(b!ZREI-h6QJ0pwJ!dhI3)}p&Z(@lOpVQ+?Q>diP}v=#2rWr>tqjq2fx-cp zAzG8wtt?GYIAiQOg_AXo4|3X~DQcbElV?UQ;Xow_?Ud1w* z+`e40mJApxT4}lbEtEj-SI}z4FNm;f9BVBSv5&v&NSmtwt35Dh*8+-FjBcQ5C2KKY zJ{Ay^x=2f#Tr=$|xxdd#eBUunh8B;&$v~)p;>|YqH}mPW%5?iqCK6i+0Zm07XqaU7 z^FS3k?{9adj=xF8&km02W6Q^7^!Y!e-dc0|$OQ=*T{&J&5bspR$q!)6ONw}=ky*%C z35R6AZ@AM1%2-gEf%cAdnI-JfyMn27?qI?`M#HX*Y%ijUi!GrGGAdv?&eI+r0#f$E zJ`cxZl0~UL5+EJ4XVKSUY{LS42$qGmVs{#nG_uQRFm0B&R08AsIDuU)DI{drCnXVy zkp;p&Z~l|a!~G}+_Ax46vw(m_VZTS#mRZW!6m%X&0jz^+V40RayjS7ZV{)7!I(`C`>a>|dcAsNqHk^Qp97Jd9RaSumw&5qPqW*f+xY)xlPf<0RDR6k#1 z4h%|+Iz4hoBq}v@^0Sb)I41`v+&l>K$0iLhJqj~&UP&(SRL_l|VNy3s!5yAj1Q@Jh z;bR@rKM<(s)dSj_LAE>~k#A6o5DY9RInWPJy=5^`xh%f4r!L;^(IA5J6&uc%{9v4a_4go;mfLZQ!aG2-d3!NM;p z6Uzakt%dk|FFKjmS7hkdlE4bia#k4N8nKF}cma|816L}lnGiG9`+id?!iZ6}&=V3n zJAcBDi0Q8<9+Wkq<63w`o^A`A7QZrZ8kEn#V+mJgDZ!`Hd4=V)E5cj>q_Bq+PFTaX z_1sQM!2=$H8xb{nv20!djfN1Lwb|& zsu-7%zF$EE9Dj94u`8qkE%2Q{+&w>n!FJ1aCdqr&-jtAuzax!nL^OuBFaTG$rEwFDb)t^E1uGjJHqQ(0ETvYrbIpfwVWq1#)xG;K03bs zxPWz8{G8M~NRVx4;Gker%Z;24V0`HDLz|xm;ykF+2WoS;!DS|Sj5V>il#2K#iW`Vx zXYlb>1SRL|E+SbJ4&FRO{dxU+8_<-jq~~7lFpA#%wr+%22i?YQ9wu~n&NhNc5J3ux zh)1#SMXP$al` zC6CB>D`1v*N^IMK54^<4s{BDD`!Fl|3g}1SpD%5AvnnzWE1>|uhlwbop>6N* z{%r@^ZlW$UKHj3E;juV8jk(Rvq!2N!a|VD`l9st-^7iqS^ng4yQ#YrEhOk$wlu1a6 zz7-Epu0XA4A%;>z8o78J3fY3gV6a)(cLm;<%?aC%=z>cK>aLa9VgYzU=YAjp1tScr zl}*JDqoQ(vFABsP5=FZO@ka3roHJ*@O+D{YvglWc97Zt0c?OWikU&R zId|a`3#S8$^!l3F0A2mKNbsk0$4i5=0NMm=)thj4A(q5Ri-U2`F*~2XXJQ1rkaVX} z__p9yDktZYu3p6M5nJh9U+6Y18*TH~qJYnV$g*l6=HVgE^^?JG9%(MIW6tqS0Dw(z zM5IL3DtyND5ji#}nJX7R!li5$CAlJc;K`8|^dlNWuPCdeh`T%}}7t=$FZ(PMt=eo}^RodgtY^-y`1dhw>qP|U8 z6-2`gCYC)1%@C@R$l^ArN$xj8G!J5yeMH z#Y$m{n`OX|jAv#c7u@}VO~vG+v1V{}AJ(fmQ7kal+hiW#R8vN7{*{y$X(=)5-(bzT zpm!}L@bSPH`IZXmQnio6SVAu0HO!J5Jp(ciTam;65@P(&@@d&;+~&*vAp&jVGgQSBM1&XAE)CxZ}bK1kIgDEK}<<;kOh6G8oJLqOCNIh^f49DS=m) z&mn)(6EP6_N#@g_6PG$4WecEmZ8Iy*OGFEaJrzwhpKvmrANSG}2`glT(5q14a1>RX zawt0?wj5OP;A+8-2@Fei&Z@?=b#hth`J8h#3p8p2ltL2U7p#Mb$tuu9yIo|XnL5-$ z*1!nPenES|sIX`=D33sCZg~qlVUgXCN!<-t5{1N%j6;c$+oHu|;+@`s2m(~5XxBt$ z5dj&6`9hXb*=8YdbL(Zvhb{#&B$gLF22amCN*6P(mb`kE9iu}JutJ&zPAb5^%~$a$ zr^0bNdMWi*g=VlYM`jgtAmxfx%=&e>zl}PepISl!`c&%F>|hqr0|H%{OPCM_oIX~C z#a!mN%L2YBvd!=c|=(q2D9eb!2kVZD9XzPu5In;oZ*0~4aaAkgKbMN_B(iDy3f;HO zp1h@{flHJ?^QWTk$SCVdcF}DOoxcXn#v=j7e$&ey49TGlVG5uiH}p4n02^1W9ZXh# zEr5lF{9*r@Vvj0pk5>dp^?#XdR!K@iYG>rq%}%DSMHaVlbfT}# zEnbYs&5x0NCy5={q93WA804a+S}@JqK)RsUDi9SyEToR7UIZm`>;do{4f-eu$&ox2 zdLT4Zwm1h{9ayoG9Ose|7cX54M90n4KyppUJRuph1lDjp`;JpIvH_8GZUlhR7}q#c zjpyuZPy(}F3ZD;D?LKY!<9_oR>8YU_m|uoakIN8`lX#Di23-}AyDStS?6|wTkSJt? zg#?2FhUHh*AM)*(Es}W!%H(573PIkB&@&WQ52l+#ITWU6@dpz?FwV|uuKCh|tqVYH zjiEt1!dwxE?cghah0ywb^fRS%%I#nZgN={I1_}02m7GDDKr;P>Nl}%l)yW;3X9;VB z=1U+f&SVEe?2-FGb$*=Fs>n<-iyKvS&v9oBjU+-&fFndjdqXBQj%&)}ueE_YuTq~E zwqNkc){?7RF~|IM#H#31_1P~BWfsQcI&M+S#*2{)2yxLnfX8q#;Dl=z_hk|p|G08H z!Y&C@L&kVPFSJL!4bXO?h}f^=`!Zwvv8=d;SS`D${$ip%N075+32rP8ve9{^Hi((Zd49(e-8{uNP zMF8MH2?K0bqNadWqJRLES;|zzKx3K(U8fEuj}aLfzo1mr2T$!Vbj@r)?_x8g&r+|y zJ+ERhm_s7+wo@x=oO6M~;C>iEV43~pWMhUN(0|oIZan=*OH6*z_QrR@AgS!j%YwJ=uFrBo4zi};zS>gt}un}aOZR(0p_9h_6ld|q; zHzb@Q_{NMZBE_i3l!yK7Pz;d2$u5E-Xw0zX_Oa1-o?yrq!y@iVL54n3`U|rfF)yr% zKr4_n=LOpia>m!5k}+v?CKA6X=@2Mf=G# zxdD6wVr{fZkI{nWlafiNM?S9Tnhk7l{@;}dH_Gq{{*?7*Sm6kIs`^h=b zn{Y#gTT#hAtz}MLkk}|l^A!*ok8yEj1SF-v@X9+wf`x>eGSFVun2vVum|jJ}t)FVY z`uGwxEKf5m^A*fMi%d^wH^OBY4^h~~=%8Q$kj)p-2XsC41rx_jAdM>Uo=P+;)GeGU z6dflAVx**9e}1Tj1J#-fUs{wjsL;`}gGbZ+HHdi!#+qd_U$H79t2lS0!IT8VoNUY3U+2m1A!}C?TF#bMbTTW;cetW?gQ||`#CWMI_%qTt~L;&cU&OZiwj}OcuJ;(s5S;X z@TD3}kJFn^yLIt8hEf8e;EjN2mYG{Yy5w*bw9Ae8#E5)CZfqbEdWIinAEY&jkSqHj zm}*Z$8;In*vz7tHNytkn<0YQ7nG_Tj&aaibTxhFO!H#d$Ctp~q;A|zLN{4yib3Pne zC9SR>x}oyRF4+*+>870r0mP)EPKLvwQAxqAs4)0}79ct^n~#89&zuh$8lXOXCP0r% z2L_+FxT}D*S{T$PH7Lu`#R`Wc22wG~)oj3dp(iYo;bfFGd{-Ai(u>44P%oX@rh*=V z-j(=bov3CGI>1Qvp~K5apO+-3_6if>O{I(7hsPelD4Vo`udmyoXAxw4vY; zh&xyUsi0!@CzO6c1SoOgl{qR%Jb#tyJni*p~=ih&l)vWb`ufm`t; znh+P~24K4tPeL}Du;y5sp@sLIYDgI_TqVXI%Z#JrBp08spf6@7qVP&#HbS>f(ntx? zL4pQ(O+t}j%dO3?nX+C18$^!^;GiG@2<(9Rfs<}z$%eO=4I}U$5_oz`A!wwWWb~ox z;x>Goi}(t{$om&$npR!_je_2U)R<&-Z6Kt}kN~9>|36Ld*j*{Z{75_*?ZqGz1*Z*} zxgc)K?pP2U{K*@nYQ(1@A4%t;ET6HCbvmSkr@Qpzy5vBp z&&Aby&V|~oN4#`sCibf?WTm9=U zQ^_K4&e{^)%i%5=&|*G{4GV%bM{E$ucqy5&)gt8f8u_*{`tfb&Vq|^)bGNqY;em8C zU?3TRxy4g~^<75VbCv0%XXY&Cvdojt5aIKbP#e6V13P49GoM!BILbXGZ0Xf3)tqnaD==PQeh zEa|yOrM$uX;IoQ5k?$p30|oSG=Ly&N>*d=FvC^XHRf4Jkz&Tk;i-64KhBKsL2T}B; zz^E4vLd`=s!S!*c#zI4(fagR zLKQqh#?vK7@;!>kDCEfkU7R0vJ`o} zaCEOP8`xYmdYT3n`2+H$ym9O~R9U>w}FtS@Sw75E|?v5lTB+sY+z|3Q2dh($CMLOyQ~ zAO8Y5NQ#|+$v%;S*Gc(u5{vY`yUM!4k@&#Ks*#P>SC!Mxsbro-3wY6DnQD30^~8}M z>HvP`1!=J6Ka8yV`Fmc@AB8zi_Y13^_Lh-%r-WLms!dJM+{mJ$@VTA+vWv z&&nvl^u0Jz~lUzvyR!h`H;r4>-UZF3G7z;IgB zwBWnUq@fD&Pt&OT2}5ImODcL0F)ThEyV(ZSfl-KVe;R1}39cH)=ea&Rn$&_2x<|1g z6vzgefm9J=UMl+0xZohDV~Ps{AW|6RN=>-^84DBGVhJnzw|qqnu*z8pLNUvf4Nhl~ zeN}v>LnH`oG~m_8`Zm~oi4>Yz@;M~ThI0kEi7{`&QRZKe@F#Ww)g$vW81e|5C1H$^ z_9de=b5v=-ezkE^T<{uoU3L?Jx%?l2C8ER_3F1l+n3C8(GZ(uxo3%AS9X_x->|Gk- zA>)y;SO*fE3;wpP_`&^SO`$%L@PT}QS51Ziv| zUFdcnKDHR|4YcXgwM<(S!<0kW2@eX?#DaDpV8TqMonPrif-xh_`r6h|emrj?sZ@f| zqw>)U5Ult;%Hwjjvj+`KLdGfo1e>lWf{LKO?c+1UVk2Ot6h_XoyRGL|&sVOP#Qy#XNykuPm`kIqcMn z;b$qhGV((2y9Ykv)&Wo~A^)jmV50DXrlJ5h_cc(3NKX(1+NvGO z&;<)B;`{fpmm}QLw!w6CElPYIX<8S=&XTZfD#sLJ{E4AX$Ec*$7ExA=TrOtTdb$;m zS%M4=<#gvR7@5bN=EUoJ>_|~i7^uYQH$c2(K*9#`7 z+$5BkC|H_H_WPtN#vZ4epqH@9Mz z*6DM*J&Dol#>%~nQX^MHTxJgK7gu&oDlO2j~7H$j>@qEX2P5!D4fOPVj0NH!fw8CF?n_sk&xiRIz-heT?;T3SPY zv8T_8j?AUA7opJJYB&t2L0*!ZHLX=d7niX(x2)IX8!B2zPyCp{?HqSX?9#irOVH%o z;COcJ@(cukS{Uu=pihlJ2|=OIEBX%2_bX}K>r?+1Rf(fO>Cik zRC#DI`

      7r8$?kb-D3z%-c} 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 F002TuuHFCu diff --git a/filer/static/filer/fonts/fontawesome-webfont.svg b/filer/static/filer/fonts/fontawesome-webfont.svg deleted file mode 100644 index 6fd19abcb..000000000 --- a/filer/static/filer/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,640 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/filer/static/filer/fonts/fontawesome-webfont.ttf b/filer/static/filer/fonts/fontawesome-webfont.ttf deleted file mode 100644 index d7994e13086b1ac1a216bd754c93e1bccd65f237..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138204 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 diff --git a/filer/static/filer/fonts/fontawesome-webfont.woff b/filer/static/filer/fonts/fontawesome-webfont.woff deleted file mode 100644 index 6fd4ede0f30f170eecb4156beb7235bf01fff00b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81284 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äY>7uxS6S37IVP_>DW-kg%dn+sFHLnFhvXTU%&ox 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 ZUtABnb?tu62nVk>KX+wfW(Hek zvyp+(?)D*}+YmVX&(<`Z!i+@NrNIkT9jIaB0KojcX7>O8|Nq%XMaE3R(ryC)Kvh-$ zU)TtXtU;}Nq=b9uDJj@AW62eX%`$1Hntbp{o=%*VFKp~;#HbSWI^EoF@Q}N5qQgP! zXe3uW@<7Kk8y+0!#-n5DD^^Z)ywHbqdfzz6!f3GQI>kDq%MF`XHqXMmk(Fg9TU6mJ z5M(qrZjoUQHivF(b8Wk0(6O0pX^++qmrIy;kEUaaX2bR~0w&v*wz3D>u*oLFhHYMk z-h+bnPojwtd+Pcva?Kg$=$o?syro@!Lu(dOP4U%LW=Old_&$q9xu3I&{GCVKrQk^4IQ4Tt)tA5Wvg*01hHrVb#Mm_>WXRGR z`?Q33zOE|X`%F|-caNkR-DFfQz|-!WSGoy06FETJ>?j)q2?0eyOca%{Fo;x8K(Kpe zfjxC|MlW=8n{F;#yLMf_?N{#it6%^3;$6@)y-(Q#iE7)eqauutrbx~vq5pnA-JH2W z&=!ieLg8~8Fs9a%(Lb(-HLavOmXgCbgA^D7D5-{%jCaS&+2yqLG5p-|0rLPrSS7{I zK^$C!%Qymtr@8%GQrp;I)QBCUMu@~l)Q(X#Xc5@aqe4pIPEeVGl72)HhLxxo2+A4t zzlC5VGYg~s{~P*OXU!~EXYTsUdnyK}$f~v>8`A>m{gr^zj8huR>CuTm0ZTlAHgzZOuaN*4oL6!laS-dWDyakH zs#JCF_4=&#_eKsl2@}V##?&zb+h&a8n3w8QjP`w1^QMu*7T+*WRC!&AFn^4|9O z&w^?irPg>e>A^Y10q8(C&<%70oev2*|7TNMSw7MxEI2NMT}Hve&-MVQDpNhKlVXF|8J0=f+Lyon_s*X;b!*R=x%!LBDS{B9Ok8&dYw&Kw zc5w|oBU6n%veZl%Yj`8|*~#K-=>~)l8JrjL$N>Pi`7c$gD?kx8 zvm75Do_$Yg$5|gCfSKnCuySH(Y?`Wdexg^xOLy=&8d%l+{9~huiig{pHWfz!sFaif>vSC_%Q#!SdK8sA=~xto)AG=_bawA2T}60= zF*|eArIaQV!SZ}8#zk3B2n+P?e{Y$qzlAx8+LsGuH(Q#4q}SzkoQq{0>Ka98g{r8o zAFush2DVupQrUGRtz!#8LpAaC9-kXzP6t-|o~=5ih!FUK4-&|^L~V@B97roNBIj~! zN%B9)Y5ZT5-u0%|Of@Pb1l6_BZLIhH_=#=(|6<8j?asmA5@hjbO-Ft%ZLg%CY?=ah6y*p#&C14+Q97E~OU2J0)`#BGSJdHGkq!Sv? zjEBs>e_EvZ6&-W!7{opt#MRFIn%#nO?AoWMY0?4*Jt#GPE>hGFyJvCcN@{(-88l9CiBokU_O zEoWapTlnwa=k}S+lbM4~rI1NP0v?B8m=GqI31R|d8oH(`vLp&T#}NFj-&?=4erx^4 z`nB~dc&+@O_}#SeB>q$PiJB_+DE0Y&(m%b3f^Q#P$0Y55`)Oh6kW#F#N>2dTABoLy zej|Kxp-WLO*uP4i2gQWBl3_`{cH4r%pg0siUJQzDWl|N>kyk7^O)0hTVo>b!F5)D6 zX%jA+G*-5*9T5SX#+m8{tTGpaPj&}-UA$i1&EvH1uc0-gW$nD zaFoO?(kSV@TOhYv(Ed~nBD8KK1OfCsF=FkR9ngcv#6 zg`r}sL>#FtyPVe8bHNbs6lC?XOY>?@A?+c-(^F(+jgl;&etH9WVu{I++aI{9u-XbV zk<&s(N|)py# z{=Ok$Z>Ls8g-Eu~?5ds!_A?G5hx1vp6t1%NskL=Fn<<4qaUnN5eot4u0|pfFl56Hi z&K;jOUwy>^Ryk$`DAN%Ji>nlGb@Xayx41i8)q=W4^=c?63NMhARDvxTL3Ve&NFkyl zOeWLWb~SrPJdOpKiJ~oc4xa%UKFpA12Q*`msC_;^UwHI)liQYgtFYyGOcWCBVGbrH z1-H*ye{=nMyU9m;e0-1(1{)QLgUpsywV~7{D~_*e_?fw?_77eHYH%O>#hVsd6LH-z zL%W?&%4^H`TZ8`FeC8{d_pH{P}i3orrTQwhMW9E#f)3&KJKQN(TI1U06-J~Hb zX5Ww*42*{O`P$uY@EHWI8u8JSXLz#~>=k`UP^b%!QX6f5Owt_vIsi=SE8C*ooW8f0 zIzrHNtHXX>H~C$XUoqb&ZL}+n#D3x1JnDtYJUoiP0AoOy0ghym zDP+wYZ)K6~iuIx@GB+%kA+$+2zt18%Ae43$h9f@30#T}K<6#*D2fXwTQ;~inVz50z zJ^tBz=E?rJ6gg$p5a9V9w`C!SWF7GHuHk}~aK+XD*QAykGzFCIXw+yCP>(!foiA@@ zgx=@9h^WL@hu6iC1wxMNVdBTI23mK=^(bGFd?dIPSJWZfY{dN}vp8-YaxEzI17mrl z^~vM(171E*5{vEmD7N_svoR!FUSt%mi8<*z6RG^adK34LSt*iAZj61?AsPGJvJ;#S ztBX6~-*Jd(tEaD~}_t-Ej8QnL8dK{j!2J$GWwb__8#a=gxR)E%P zj4~;;K}bX#>1&Myzdy++x>|A7Xwi;_p6h-d5C@|g6=oyLO=QS0j)aLS3hLjY&?(N5 zDpiEUR;nmpYST?i)n(0_hqUUUb3L(XspX1@xngi!-9&4*UmsRQ7o99-vQDhKVi8kW zF@+(klDt@UdA8gPsI0{a1@HX zM+M}sZ4&}%jkZNLOpQp|!2}_z(MS)vOI@u8TISnCtjmIH#!4nfqFr4vxdFmpEQi^^ zj3X7%GzQ14li|SS#x-fWiCAfx6)`JG5JZ70{lFITn=OU<{h8D%%3i;$(-?7Q=2Gf% z36Z75SfZ-1--e`beW%-7-9mMTp>*b&*I#}_0@fm>(C#ur#xnEF(tWheu~Q&W zc+RQnbi$c~&p4tW=tL|LXk%inF!jte)2vdd9@<#WTls)!T>w|>ppMoq$P@U#H9hT(tvD5l?_1rgVyTa4yJJI+6Yw2FtU=Qb&fDh z?YnLh1iM^S>+w32u9Md_HgS7nf3Zl5YBIlm``~a%vTbT;z19<8y@u`Da0o|{)?#?B z^%?Ila`!AYp8<)5pTlZ(9ll!h$}gJPvGJ8b9t3z#n~Kz7!f3Q>XtQJ%CX=MQ+@K&g zU`~qCwWVgWJP%IUMwj;4Iw-5i-Fbkh;83-7>CM5cb+ndcD%n|; z52ZR;59GUJ`AqxvH8=4&jaYkYvJBh%f$^tGLZ)46?<{GDY{va|pd9 zW(~_FJojQou#Dqb%8-ypiZfrkmbN8Zra8at{hY0{+0AX;x24P21clE5ks{=Lw|39UH^_0&&WyiG+FCWIj}hu5Ep- z+T^Usw9*&DecV(lkDc*~x3;mq@f@zYqcBtz5K~!#)V&DzZO-|LiXhba{qN&^+7;d% zUF`Bi8QVvy8Ahq)U#Y!}86=c)zUak>NzKDoo!eY-qkE_4&&x@j8}Y^k4P=i94|=4p zS76(BG`>~%o~63YX9GMDWFl2iNl6Sw~3zEEKK0uT@il>87A<6sD>|5q@Jxmi#B}Q%hM6 zQ+d1q^)SF%#;95Ir2@*E*?tCAD@HswJi2=I9ES{vDb(+ZgtwOjJtJGaw!>GRO{KWn z#2)ZI6-#KJCXuymv{pSSfZ}U-%5kNqvAdJ0(}%saV>EDIbA@J~O*m{8oGzIcFsE^q z#pa;zk@Ct{32Q8js}SY6x#958>}&~^KZv3+Ba|_^^o7{*^fc*{PA@;RMJ^ZisoOi! zu5?~+-4_&;%18_#IGtF>UfDKvL$@A{Ol0y|JFuF@70rN1Ls=7Gc(RN*cw=GYV4E=Z zbcsOhtlvO<;N*QC*-{_CiqCIW@NFfUS?Th>cR$3J2gP^HItkVD)-J^m^Q>N#Wm?RZ zE$$xmtVdSHW} zdIOa&y@NT!gWkvp$}VdzrOtc879s&8+Nx$IVFok zatt|u&X(ntC&X`y`?I95)!<;D1J=$T{L+g{>>mApnVa78Mpy%iV{H`;=8Bv;Q*&pd)hSMvz1VV`N9p^6ri>D?yehdiP-xbHvclBJ} zvkpc_s7$*HF_IXkql?((qLMo`#C3ojW+=C^Y;V3!I1KM-rjtvOV%Qy?zgj|u@PfU) zc?UyI@IXKd_l}vP!Vi8hHWx05spb_sR8vkHy~AfMc30N{0{;fg+8ucy(0{-QLF14F z-iMjh7{pbE8tcP2Mvyy%r2Jbr4sTub*3e>Jstyb&4#wItH!jax_s$ zI@C zE33P#VX-aXZvg72IV+52)}GDVP{zcEf!2Xd+HCf}&7)Jnl`QFf@cX9p7)AgFjzlDL z9uP}yg@)BObVuwY4Sqk?{S<;%iVCg0a5mFCwlf)|{q-X*PE%Z*H4u}{!O+l{BZ!dh z$iM*E0I~FZR9tTy;4nj}jPvJlB*LAJ2scHG|4<_3b`=B7NkHP(kWx194gJ0r z9q73{k2e^i-sulXMlX9JET5IGy+javq}K#2y42dnOLJHk!iGN25J#7l=T`sfd($ALWRZnag1x;lDR_#)q%!7*VRkT>#Gbq>_2@zux(OEX zA_|*-eh^mq=Z8^B@A5;0OiHp&#r0P9Qrawx((+4VjwJE>hSsylgjtk0g62|i2Azu5 zO{7QRsXY)6wvZouQwoZUCsAOO-4}ka33;20G&~qe22R|x;%OQg!Gt4bseU6WlL`)X z&83VJuom*RhOe54mKBt(zX}sO2p?liU3Bvg%^g9eM|q9IeEsvGql1|BABnO$f}q(8 z_>8DmmePN{5kIRpD%V6a-;}B<-wc}6AG5$*DWc60-s?*IDWbbds1=HvTL~BDK(cuE z-Q?4?4YqWTb^wgh%ylu-I4hU6&kA^mIrX*adn~5L2_pJ**W0(Vh1{ts6bEa zi9Ezm9Km9O)kg|hAC{ruhiZhh#LQH$_ z^tDjq34m^KOxlY=n=z?cqu)Nbvwdv!(|sPPv5V> zM|LWE$kl7J=1sD}o(P`H`ho`3o&mq)$kAkg5tSV+A7x!*BF`a3I(|zL=RAgwT!pEy z=siwEr{sC>pVryeE|GV8LCzZR?EM@)zzJXXgLuLWg;+!b&*4xe9EPnTRE2P&P0#Kg zyq2^A)b;O2Hpt5LVYQ^^5d|gGal{R!Lm|M@`YOM~G=)DeDp~zv-c`LDh{lyt9Lr1~ zJJWMm-HYTo?JA#E>ZU9LLXN_WQL**-VAQHK?s{O`@7U828{d1_%SD}fPZ^CcZP(6l zCK`LYnx%&EsGh4cdj% z`+?BA&nSZHKB9Y;>+nnUA*c5o%JtaYWTBHY_g}}em?J2UO7O9il0X1w@*v~>Z>?n2 zrJL?|x{ey`+=j%r*njYEcP@oS(SdN3;YZvyLs!AnA^5My3uJD7{)`m2 zN6`kks?sRU8&6B@{L=~j#hY2XRAAw;z46m<@*`1Ywe0Y)6FEa-V5!d$)11MdO&~Pqo9FUKVq`$Gb>?;3l>0I%R~^UVrx5-!9CDMOCEVU&h*z>D z$}!$u4NvFBgLBiHsZA4qn(juqKoW9=~ODVcb%#Te6M7n1P8X{ z<4D4Vu^>B?gL8<)263E4{GRi)HV!3&sxAehra}}SUZ0tBd=(4qZqqW7hBAgOm+=B_AP5fMSDfJ^L-iy7x0Ic#dvcb1``lCw>y z$Ckqw%w)64S4F~n#yDKL0%k#PyCDBq@B#$4a)!{PM}AuvPHaC?<1%r;ZTCogT7wT< zTPr>&(##2Y0?@f+J65R5D0zhtTvFK!n?lpVqPxQ^7kV6_7a{N~kCR+RWflTc+(MyM z`(8Lts9a3ykZpTfWHfqOOa>*rTPtliqWR+y(VQ;3*VJS2I4uQ>_6M5hI89rN_&v!@ z?WbTA${qH?v6tk%uWXCtqz5>xAi)FF#n&uLINVGRgoJQVL>^>}vCRONUJ?hgP?2+p zF5_SqqD#S46buh>C%|MI{KQcxSv^c>lupOfw8<^RY`wgm;L_>e2t{Zy(59M-%-A6a zQ*Mi3Ta7?>_^6!>rh&M?TH`GjAEcZVnThAIR%Hj7^`>ZWicjGqh$SRAVJC$?WIW=l z{^mVSE&j7flL{5jyb_cO`>GZ!BnpbCkRuZlh}!uYM5d&OUGz!`#HS80V0Ri=9cw>? zJ4oES;Kq5Y&>#Q-jU(D_cm{VPQW5@Iwg$Py>MjbC7gSR#SbEQ>NYi&8#4MuW(~oq# z{a0!WUDy25Wumynz;FdA0j$8{yyLJUH$-dXD2g@>Xt2%UXt8^kE5>2fYgLB1lev!^ z15JRxg}>=#L!Ua{I8)*{rs-i7nhaz(YS_hdPX?Cd2YT+CZYjl^<_Q>I^xA^eF;LrV zS)|U@vQO)X4HY)c{=2tcYU1!coA0*Z3fg|vzaP6`X+?{Tu2i<~XJVx*#)RL0w{;NWxUFKhd54dG&CBQ1X5a_6r<2`DSEYj4jLIXOb2{Fet@b=7nsRvSsurgF!0 zg}%O4H`=1n)82TCLEcDk=r+hhr@O%*m;GtI$=24ffXUqBTLEm%HtT$A&!=ymx0P%7h;tlp@r=)}@{9EW1cX!dO zJajluO>FfFt`~oFbZ+qqjX0@DF+esCYh8cdvx`RLJ-xilP(Rpk zRq;v;REAPc$~0hRDDF(j3W<^;c7|fP`D!83)A=6=sywO3svfnXQTZ^Hz( z`w<9WQzD#Ssz2Qj7n#TaFjI$;GRa??T%j<|kGNN!@91V@OwT+hA8Dx;N= z7q*dA%q45>jWSHP^%KcwkOnuagEe^Dnv?nP{sF$kow-QLT*X1j;~?^?-$`li7q)wqR*c z3TAz3rZm)gB7q)>32RIgze1AXqZC@p&`WQQM8ieI9d<}O86=$0M@){PgEJ*YQxB}d zJ}E-83XR21p^6sZ_8>*ZL1I(%#k6fRN>HEz)D@{VnvNQ5Vf2#Sd(P4ZC1YO=hrISZBluvP@f z75olgIL00vXwuHT*wxSnHqICXFv?y;E)3pJXY+rAQ(m-ny_(j zk3dJ~6L16fz}&T&dZF=As3Q&B_Q8qRW({Q&r)kJB;*q=SB3o=Y!PFPVhCF0W`5Sfm z9=U2VG$wWW4xiHFVkolIlQq)5U+6?|=MAo6sn=7#vU+!s$gZeheN3U;@h0}+b1;L_ z7CQpSu67%uAF+9X#5uachz#+hJT^ikX^Muk)D@Og9$7a}w!hTW`KGFpDdyi^TcCX7`yH%|)1sc8?*V5Jy&kX|>`SqFa7SRm z)2nKMhv#WzET`X_R8?EZZjNb;A2_X*;BSe_KrLUr5KU)=vdL$RC+R=SFSl(hZF)PD z^_-}x@;dMK-knNk*qDOmEvi(j(s>`#Wc7bZRJ8e(R_83VLkVGwb8BI{^qWCc{1_oO+-yyxJYC?!5nT81O`10-Rc(9o#pH0U_W$|a zYhj2W0tjG$xgy?|gjo+#0w@$3XC01d^z0bKy_X4QabG&{5oGeSN2^w{dUfx-(-&wA zJ}5A;r>9z4{*E(&q3R8~p}_zF1QEm#$HUJB>4?z#omfMEp}#*oBzh+63O9Z$AhZhcsXN4kqmR>t@=*)-rn!U|f zGDev-dW`Hv(7wqAY4Un{!=p)D79CgkgJb)-^6owj`gZ!o z$F(l~#k+slVYE7lK;la%Q&=;>rBx|&7u+eP9qchXwgb=2G`l^dUSzY#H&1hLlro6WV#7!yH_XOxC;3kRhb}FTmAEOIrTD zW7!HM8x<%^sE68?VaFS0!{WL4EKfeLOQobG`Ywt7?9zl_DO|=9?EDFHb-zMmg;NY` zDxF;M0c*$40KIF#ZFpwnO_p&p*<7&wQp=BeoAh4nlSto5#6Lm8g|UoSs+nfU`ntN&+rf>X}XieWBckSD21M%6G zgOf7OQIA)ktWli6I;HrcH8Ff%?^Mn(dM~9r+cT!}dDssnM$)Og>*TGgro(i`ZSw&k zw!G$EpHv5Kj4R$YV%Sx+8N+pO4xz&WAjl@|goc4ZK~_Co6&k}`Fb4~@dbbmtk_%?b z7*V)@qp0#*1Wg_+m8;^Xp2Gp$v{@f@I#d6mD;t~c+cN~!v6={tBQYIf9TD_Vh=;Fa zkV7PY3{y-1VhoUBVOqU4BmPb5Rmzwtw)Zr$3#|Bu}d`&$PET7QRtMsS7OaqSc2{wQDP zZ@czHxS$DNpCF*wEWb(z=6?zvIhP3?`YhG81*y=Aq^un-C!me*bpfloME!a5*lMbpp>;v(TQBIyGtW~AVNLyvk)cs-4%8WfG z8?@fJ<9{AFP{JDvWHE@QXbOcH{(n<#Z{XP3k%_ZYi%z?jhnxrDK)o89FLnmZH5|KK zM+;#Y7KLGMl6zBqf(8;d>rU!@AdtJzByPp#`ksb0xM@6^Nqr-Hs_zEnIQM*SoIbf- z!`|0=W2lpJ#vCE)GnS16pV1`dGQ5QDJ6k@miJhHdp<>Kk>-v!?l2JtkjSoKeKJABK z*GO@jk>y=wb46Y8tywSvkhcCkEqu+Z$07Z1E+b;ULS{ z4zVoC@K|J9B4 zW^S$VRLprH{0+Y8v*H&?Lvawb$d3P|?9U|*D z)V7YsFbnI!AMHEPT}E@X?wn>79YQJ1^4K0(Z3(IPa~#C8Uvz>%J{r`?W!7W4E^!=@ z8ePwwHxP|rQrYdA3aVnX{o*}W+&43Zov)c#oj#YrTXO0aj z8kW7Kq?kfC^da3YJ8PuV&Ow4dL`0uTcSbrjWypcvXFSZX;UP;CUT>iCOV_P=n)=L|8E0lrLnTC%b{AE zuiCw(Dq0hUbFcp_^0wg^Qbu`);wmPizHe(4Qls=bS5%^9z zSPV2hkGtvGGq$IZC;h15qmu>Ed^J?6VpyBbvxd_?aLDoVw~tj!Qms|SD?9kOxuQoC zqpd_1d4_8gH4&wkFDiSM@trZLEY8*jpMy$m+W{6B&7>Zgbw4^J`OJat2%WJz!6rk_ zjE58Y^=ie}Qd#VeK0TNv2?Sv6z?+T3RO-Cji~X2<+}UeQ7fuFrKyF~YG5owldy;pq zM+d|U@)mMaS|cx;GRifQfa^#(w!RH37kxfql4H#^tk#j`=Z=|VwJlMiFDG4Q_xP3P z*SSA>KYbxV;XZmZG`?wqw`7C4{poSLhNQ54%TMWrH<0IeERv%yvM#S#WWI;EGsg_D z;@5CcB5QQ**LKeDYYnWTs7mL{I6X#xjUa+e-?gX&J|=(AYRqX4k2fnhToJ@@CKtDH z!$;@Na!1QgjHPbZk?JhRY`YE^dxIL&V8!toKJ4Y5*p8I?W`b{{=QwL-X0rb`@+kXO z6$=jP4K{0pW-ICs(^Pf=V);bqzAcz}|5LNFO`)b&eu@-vEY~gLI}vXfLu%VS_5YCs zfz`EJh?YD;`|hoU(>`^fWNeS`aaXa$_$^`e({cKj5?2vJ+i+ntL%Y{6^GNj(MeIY5)q~f zYW+c_s^ULxbEPOwxT+od0+r!V_Q5l{C!NFd@4G0my^rgcT~kT)b4%d@!_(|I7C6!^ zdF(4LE7WXY|1c`~A!;RCO@o@4p}nS;i8yyKHak%xuVc%itDtO&pLL?0<&tt{DVYUa zqt1cSicVm^#eoymsR0E+cgx&RAm>=!omT^tjC4rV)|?7b2}mrmhfj{tlFKl3Kpl_D z6Xh7l!^68RET=d9D>x;mPE>p$TKVS(r}yn2ixoVGbc2p>UxF{ODd0pIwDN{xVk+yr zOIj*>X9D`0MHi_m3+Nle*c_{^8&vXe|GZks)nmxa93WT#dpuiFX&w{k00Ux%2ws#= zrB|@_$belfyxMgNxRdB+-d0=i)msx0Nr{{f(ahyrBz@s(M-XxJYb-DmZAt(@KwvqoWEgIMh~Soqer_3KVv8ub zTU%gtgWY*2YX%b)>D*hXm>mN7x;# z2j3$b;M}expJBBr2+C-u3JriW*i6Q6R3AB(CVAEO7RTI|eJF=A7(S@J*K5xqK^902 z4MW*{3h!^nS3rkpIg0ECfb2;$ztg=tw_H#%C$k8jQ=+{-KESHfgQ zzlGTcM%ls0L7t;EXdJ}*_F!IM93qqKnL{F%dKzC*!odZ*AaJ4Ttx3h?6Mxk%jGy%; z{P+fr=WqGIX1&H@uugY{XrC!`#k2F(8FU}8V86XEy$y~DO-ntQL&}uEIdh$7XcWm-5mX!x zM}wUn`;<}(urPhr#=A0x92_z6nAM*cm4}@_U&bnZgK6M6H_u>GXO-hv5{G62BO?xu z@~zSs*U?+2hk9T#p`pV=MtjaM)&#G4UUF>4FMo{UY$JOOW2cLpFXl&XkK!A~m6&wd zF#|EK4i7a10BEwIr=9K)ns%E4ttn92OiU77NV|WUSfxkGspsk*SPe|xi8R=KWAlP0 z(M(93qWCxa4`o}|j=E&7lXY^V**hwSOOgK2HJ9%&O`r@F@J+lt4mMd^5G1fi&$an@ zOl%cq*rF<PsS#4d4dN<$7;_H3c26?*8fr^jt}-owK1@u5;d z0fo?RGN(+RXrm)G++EZtuSV)6hg)uF40aKp;AxttC@IGC4U5mRslGBP+h9CKd`1qq z{3j?SG}#(WP0jW7tr#x$0c|$=5(ERGD8ziN%w$@ zEFJ{g2F1HlWqtG{N}Qpj&erU7gD0JykkuZ3M)J6qQ7G_fgVI^CwQ@eWDP3= zVH7mPj#N|XP&*LV_>)XYa#7YCO$LKvI@RAlotq{HnAd0bg{91_yNk$N3v4=?)x;Cw z(&S`Gaiz+7dV1Ylda_~o{r32YF2PM2LTLms>TC}9s0N?bt9?fdImBAA96NSR_?k@p zo;)lAa+1)(<6-YM}pQFOlGPVy0X|FP&vlT&vDsy;^@Ci)8b#Z~tA+=1g8%J8L~IgPMmBDEXq= zjCuuJ_z0@Q5M^7Kn?@W?ckR>%dlW3edPpUd`-?MMG-~b8!;5Kl&Ko{6->m!GZ2Gd|*uI0wz+Lo4tMMKRfi6!R!MuyoRlR~m@T28ydb@+&>@~H4LW5G~VXQcRyL^Q^u$oWBPIFhP zm5U!siAzFLe2V@&VJ~-Rvc?wYZtyixHAmtG(x-#f!lCpEbyT<>fbPkV0?OVfVob#e zaTgLgLy7~I__K$G zJ(7Y4!bE!H6z>z4G>$#vwP2qn@;t?boB`Y767H6-fj+?M!>h+FEEBhlg<>-#;+&K2 znzXfD`8zF1zAH6RsL)2Vm8FX$WMkQ*tKO3WD|U108UTbU@1a`!Ue`fbx*RaxXOJRU zN*kDZI>jAU7(9%<`kf8_g%K2!y6hWOBRq7Ie8d%OjSf*mGt3vHT9ngMJ!(m&p58OR z!jiIHC*A{(ND#ey1LrhGUNi>F8zMF7Mb&4jIuw_3u zAeNzP>pbU@@<|tB7ze~kUp>JorwgHZreW4%KAU(>Pm@M0cdbe!s?;$nweKx$tx0?UyWh6Br`q1w$py~<{_n0ZOt znsVG?nax&Zqzv7&1`e7bdK!PoI#ZX0_obxgM3-MfCF*8g(`$C=5KnY&;sfY;xwu1W z=I~HIrYZn*5b-X1>Tjhuk{URCa4G7!qpRvgluxfv=2hl%gFeCN_Ayn5pW`qk?pO|c z=rv{|&g5f)k8Mo`@|?8sCa0V_?Ik$(=0BO+U<-CQ7~XLzD=rmhHis+91GkT|q)&qJ zuv^4EHmVFEHyU5bi-tz&NvT&^^vj$tgw<%<7`9ASOiM&|3O!7@GGQVP0Ya*_*9$ix(1%qzRXpTl7WYImmp_riMYMZcTcp9(JChcJ&NH|QsF?231 zc{oR9Sy7|(;kt)lk~A=()Mv;Wy4zq&0@Wp{AFUS2PuqZe5N43#gc*Z06fl|E>A@Z) zohp**0_EzZye&3ew+-6UkqQ|TzwcIa|E=t$e2!PzpvuvEz9p$U!Ja`ue99cIX# z&oE~OJ=ya6i!gP;Zh(FcpOpH()2|hBzw$>TO0vz=NorFE7@L1gd=Zg5_$jGKtz~xG zA8`(JG1A5Vm{ABPTU{L)dQY@sqKf+e;K+gZo*aae51~UnUWrw-%fUeO6K!WIw&m*5 z>~5lQf4oC?Sem@RV0zU4>caf^I5mS(!bZsOx+4)p&8x}tf0Qa2EP5)+2P9^-TCXg7 zG%MB0ga#Jyv2mBP2<$k#4`p<4^nr~&vG+?l5$JM{AG5pc(MVGLeDc=h6xJIm{k#Ri zPEtWN(s#uSr6Yt|cpFmmAeWnZa!zGN#~mWN{O4jj=?kz1JdG7h#HkZkqxY?zp;<)6 z#ETba@OrQSD!F^wrv!YHr!3Y~tQVO;?5u3GpYyO$pAQ_CCg1V0as;5}o<<`dW>yo8 z-KOYZMc+A3_|=U*xY6WOyR_Za2)mzSy-o>Z9~BNIQ#y1>EL3g-S}dE7L0vNZzy^bH zNB}e(I=@iN38pPh+pn z+J{FD*mR0bP)<7s_4Z*`ir|cJSG+(Wlw%1LfP0zpoLU?1ct1l_Eag4{nwgJ%JYHzn)5)u zb`YboN(F_-UhRJw)+frb&1TgrQI~0~hgZW&YVtvJCDGGr6-;6ax5qysz;&NGbuGtS zxUHB3KZ?aszZT}VQ8lCGjbkzgH1Ad zKY~~Rhh(pZwi@!OTvp0N3+$lM(Y^AZ35-%S`~S5b7o|@{^s<;b>Z{1wB0-|KF3!Ag z2Ab*BRH~tw9+!eTngGXP#Pe%FjD2wz8Fs$7}RC;HxQynPE^25TBdXGbDch z{#PW$P4UgMS1*pu9Fjlv!+1@Jo$SpWZY!@Ja=z_hWOlK8cCsr1TCUL8Z|gj;fA)iw zfn1P3b>>2G@tM*YHa#^zeez$nOdPB+UYzBLz28)Kb>&oqKFD;~dT30!2!nWKl#ioZ z&u8N!y9#noB|X9pRl=y-(Rp+RXFTT73zz;k^!q4^?UP?&;Y?jDXQB&@h5m1eFg4O5nV+)kl5sXNDxQst)XG6kV(H zh!2Rg_@Srq8EY2wuwK@OY5?fpQ$MZOGM`#J%fZ?>#;#RDm?D`%4x52Yhh~Ru48T z8H;^My}opQ-|}K&_rd$tg2qo9ii;mTU0my^qz1&PjDB~B?qYwzE`k_VjDGGFlycv> zqh~9Y20gzFaEi%U^;cn@?qT31Kk$bbdMh{}Lf>`T#Y|(9D&_OqjB`0sDVBCAD8$9R zTx7{r$;{;(tw;6Q8P4qEv)NtWari+<^Z|6>IYTw;F+BV$kME5?Pe`;131~ z8BJc#dVV%BpviR@i4z)@V!fzEebr$uE3YTr(5N}RnzRcQyoq=VR+jMf4f=bd)Q7!u zBOU!C7tboY`6jRQ-HEm|mGpQOZ}@05A#@&_(gKzo}VXa{KffAG-3vS5p@H699fF=;iKeqsE$U3 z?-cq-W+P8D=@7poT)zQe&aOo_lUVWiF%UiGWyLoh`eoWXbP9fX>0Xv{82sYbfAz_q zKeTd(MIX~JF1&*6Pzu>zZob@_`M&i65dv%XXwV|UNPKebwF|%j;C3*j6j*76UOvt7 zWV~J2acvjw!z7)k2O`?wDj_oizfW>Jqyc2h?9q0|X#Hz)_+x)s)SqMe0 zAzFCn{9MDMa_6*o@2+0g^rQo(Am!TQeTc(qzY&_bM@oM(Wt?pSjhQ3BcpN-1{z9o_ zibH)cf;HYW<~58{fAZEq36{#|?*uK!a3DN0ExUd~hg=mC71y@G<|8+uT!gpWmhF#h zXHYKlbxb>-Uvh{nKUAkWecK&QyV_$fu0P=udbWyh^QNBc)6VsmeT1OCzz!Km zG&wPB4jwO+0QDuEXLBdE`^RsbVGbY@v`YmO<_G__4BS za9>1Xhc+yN9dTLQ-ORSYn@(sfAQl8cq6U=eJB`828Ev=HG9R@tCsNW7; zoN*2qwF*Fx0jpHUz0}$%Uj&f9=%_i0%SNj?oU@VOHPcAxwLYZKkkrECGG=-qTQx08 zC-@Qz!wP><=86MMN?zi2IP+Jj2jtyT_i30l+k*`rJ1x+rM5O4Wz97mbEwTpLCDBp(_dHUW2Xb%P*ij8q)(3eM@q zKjKy<9Dy22RObANDfvO;uE)q5;+^LHU5WP#qI$eUUm6VF#Wr8|2fJDSJAwPR`+7`~ z;urDeC-lBM{?=IAaAke(drzMBdT&RQReGHI?8eYc{V>s@3VecPXeI@D$eIC1#kGE@ zJ%n;X^ibp>I4o?=*ba6QFyZY>6K0z36C7V4P8B;$_JQn>t5C*;`>rq*JbUCz9*zgbhox zC2^Q`wLSkRXN}N^8+4}$CwPVLX_xOoW#_GEktI%-@cs!rjSl7o+DL6yfG1_${@^09 z{NAH9p1R0!UjDdcR}HzFCNRf69Xlt^zf^e8l-n^36Lu%!-o=na9GG0$a3?MzP7oug zf@w|EMP=x1v;i3O3Pfcx34!R6_1CcUcQ0?-P`qIiXt-`!zk~&maBo4Z(cpKZZdWS2 zW!1MYB5siN^CqUkhPrim^6o|am@Qi|yLHPW8hTTT`0ev$v)Q}A9Nf%ZY{PA4M5B)( zr<1j-C~R$b?8p;W-KxhIryU0fiz=61lp0NBQ=O2RXk5ORaRiQ%GN#mzi=C^;;qLxT zON@mMxC*leUshO0Rat#znLGeDdcJiZ6(&~Me1$HNQuc5D`h!xdb@0aXByd06%0l{r z*~oTFYHv{6EiTF~nN;E!BG?aGn5E*!r_?aS`(dzZV|Icw1Ta9LMj@4G=2h*(=J(dp zhFM2LkRS%oXVIro1($S8`3aHgXXC$6WD@NmMhxAg9IHLNpHx^r8|>%tX8bw)84N#x zKLwVa}g6vIX5{2IuTKvLM_V3e>ej-s~5R;Lm zn;)(`iwm4MapMAljo&8~#wRC-+B=TZQ7uMf7s5sBPR4Sv{?rX;5*$+6H6lK8ji;p$2eh$yNaf@%*wAL9rT@_B-RxPKFAE4))ptqKFgY1?~|hDmY8yReQ9 z%10g&eCeI&x8+LLtLXs9JpV|UTKn>gQZKS6c$XL6fWv2T>#GVXrc6_%LWY>SyS0rA z!xOGIWKzvad>)`J(!Em_||3)8_sp~P2n!JnrDG%wJt)q$%0{_!bcVBdxNJ=EVzZ0@wt(>8JZTc@5}S_ zg~nY`32CSdX2(l&e)C5}P(>YVSc8gb1@eo7lw9<~bwp;QadoolkcqD)&Pz3*r6&GR zxk%K-q%of;vzIECdY=`q%q3rA<2ohfUyAxDiyBxk8z=XPGU3OYk8Dp z9QMkGL12WAf2*-tF-7`12VzGYsqF|RCp*Qi6|Be0iQqs7hhnS@Vf2$Ld||)1r=?Cm zjvi5UF-pWIEH095IxUK2@2y|eo~Sq*M})a1{Td$Hg4Epc;ER!fa1qfbB?GEw^J~K$ zZ}eyg{2OMz_9&^1y%e*rWh8lnQ%5VhN0rDou}Ny*YK@Fau{J>6%b&Yf6A+Zh1FlAE z{Cu9?yjFUj8FEdC5BrB|n&aqUKURn`Y+^lF6{mkZ({VxnmB8S;xZ@bht`YKY>n-tZ zx(M(BTg>Va9qc}@m?MR9Cudr-${JaP$7)R5X2)ooO*zeEBl=xM9}JNAOuw-j@f+n! zNiCQEsAhWEQ;`XXt(BkJH7uVwAGMnUtO}5n3Nol+R_rhvsBW%AJAEfnRmAJfb>@-d z20d(ekzlAYf_S<98|!Tq!wNfa)6jPLyG`C81ViHg^-a5M6xBbZ(I#U%HO@Q>9iX6Y zH4ibZ`gPo-)4O+nG=NqPlpiJ?ShP{eA)FsjR4q@?@QhlArt-P2#`Fu5#ASPN@ zy|!4r@qSV0*FS1Esm(#xrGrFAkPc!5v9W~%P(Lmb?xdycm&$uO6jvQLuARD zt6kAEq=6Xrguv56vOUg1EjcXS`2mQP+7keL?;#AU-p zDfd^HRowBQ_dC73e%Qlx49!@;eX&NDM!iMtV?IX}-3lB~t3m|xpip6K?=&IPavLlQ zV{DQeNTdfW?(w@7v_ei%E!Ny{Zx)+{4h_y=iB^;B|JYug0^>uVN%b~{FG4sSA@h=4 zg{DQVaMMjbhw;J>n8-VOV#^&4I_8l@76q4`33q%d5#5YXoX%7ha9#{?{m_X{E(?Gw zfu<^^1`+9)e?3sSn)kCs8dSavAIoAo8&wz+1cichg?%2ew@-hI_%n*?Rp*8UiP_V_ zD447OS8!zF&gJM{7X46AQ+8GLtZBG`GAxzmFx8y1GTFO0a8!k!*)KGM^=Dm|>xxr5 zDk_vV3{UMg;yP&3%_E3fNA<+z@n{p$Lhiw-ev|B!X<0g}nOEfDK^VU1h1$1 zpV4zESv#(R?GV%;&PF&Nj`VfPJvyX*OSbjuk$C6a38q%&M!Yx;U=lH#zQ+)dva zA?>mK`XtdM@av>Y9Sw6R=v70$xfOn0F#%^CynSc%ksyq>BBLioebp%X-k3&8^_0^* z68p~ZlG#6O1EnJx%vX4S6Z3{HrCwA29WrW#WrLF_+7qd~(c8%qZ_%~45NMy<#qzBF zWbNvmyAuxCH7Z|bWVvXdb<1@>|MQ=7)6L3b`xX^N;=slQV-Xig5T-c5%45aty{#V` zjn#|F$9j$M*+qCvr$;0wu2Mya;0`#h_l5sc?^7I~3I7`n9ML+u)8uZ0{2oTBXP_Yp z5vDk!SHWckWg1M(0Lp*HHE9R3nj%|hjwJqk8<3ILEa zm+rk%yW>=))0=nsryZ{JM594cX$a0ZJ&Di^)8U&JC4_KQtixt43!))Id)!jpmY@Q} z?r6UJYZex!a4;_=Q9!&7xSO%{3!?d-r&{a@;m~uYDr@ip?!YYbSZd_!H3SX0o2}Nw zvHEG#t4$T{>Y|-c?&TFwrDIs?Iak#YcT0>;*--(YG7X+Q{%lu!X%!`g@8OX4|HEAI zWh(oQsuk~yPu8-pF=me`XCv4}CMZ+At*Td^sMz_0W}PH_EsSomMV@GL)CtC>0_p1@jN;i}=0t^wd$J?V{^p6G^C-oac~Ib*@mCHgH- z=RgI)Cbv6r&tZ9Y_>+iL<23=fE~f$aFez&L4UNo!c$D$TBHuH?pC)}yCY?bv(83E! z_F~sr$tlZ1f$dk|&jR!=Y_BtizT0Z2axqsu7D3<5op_@A09DcrXC{-^8T{dz)XgTG zqzz|1&fY0eIE`H>2G(qL%S&4T)z<&5&m@enBDMk)fU>5Ik-nov$#;&f!wpclQvmpr z(?ZN&U>c&6{K@m4iB$O6i0@=&@e~S026Ex50wsX!3@s#f4s#dIHOjBLBBKcswJG%` z`L^Ro11Ms&q~K2>2Yk8qCn=Xi6m{;ZSHzQI(RN zYW4yB!`--@dyrGif|P48a!$5w;Iua7XDHLF<@3`ZxEGWe?ItgPgTTrQI&+UX)Un5O zxk|nbS7@tDmpSd16l+eLM-S51#>xI6PPHR49}1Q# zsJtvZY&hDa^LR21ZhM(immtm+R++u*6~A{ClRSi#(AJ4prnbcAO9*NB@WPX*DY0#A zKrX367#_sbvN)AUY3v~}3fg2n7{S2# zajo-^(SX^AnlR;1L9*!!$zNBDde)VwB|WbX3>q#4k!xIp_LPf9HCX;T;;YH}j_n6c zb=$*WCOS&U;(|_|Xzek_PdgbC*UVyWI@JYSaT!=S8b7qmaOmF)@)TrtAjKr{wlZti zOaXhz4Q>ciZWxH?9wjDQEPgs|jm=ZrYO`;kAXYx%bvI$HOQZ8pRuQth+xJdF9GDa7 z=}1_N>JAgqJ&PcuVqT(EvMdc%glP}4NmRaL`S^y|{mVJV?ADy}ytNsJmQfBllw3yt zh0(8}>FJVZN577y?pO};uF=qQL&P5z%AbquM(OdWwAWjzjIhKAO2F4~M=`SIO2Nv! zH|3&=<0dx*)v;t*omeo*M18wYr-=o$;$6vR$qocM(#%GOqqck56oq-3I@|8x>JvFG zn?O|Ho*k}{F`00y41rMYcy1tdoE|Pu93Ij+;=(=&`29F|Dw3w|IId8j^2;HWXCp;f9C4eo&5Xh4~JNAd0?u9M+ z!WQQOk?;<9mo`WFJ(jqxs>(ghXGwtan5TqNs-Gox|L2rB?_hyDPzq=#49F4cOT57i z7)L|ht_SXmKJ)Ik)VrmlEMvkr06o~w<)IA@}Q;@J@+93oh2^8Xprm@TdN0~_uoSuJL?T; zX7~iYX~BKxe+1qV|KR}}6HcH94&X9t9W(l8did(Bp(}HRh6lkTYz8Nl;w7QOFqHIi z@ky*Mp8nnl>ke^qDy;5$dj$UrKxnFHMc?l++f()djmlpyG|kmf;Pa8?n9yU4(n!z< zhs!jA*grrLr+EmGASB^1byk~TL6qDdOg+}Uf6tRtSSqDIz{GkqCiQ&}7*~H36Vo?q z$~`p>CEd_Sd!ODL7qFNl;3aOc;#{YN=-B==umAk>jEsZdzoCsRXY7PL zzd@0B1q;@*RzcYYZ=*#gykBs^4TjZWy$$G( zx-FzuRQ&~F#mJV|U_?{S4lc=n_mx+eR|Oxy5l91c_h_ub8>Kh)%Xu2s!V^pn&Md6u z){9f1eM1T2i)^~a?=)ShY)=f_-LDd-LqB6Z2!J(QO8QHq{wev3Rhj39?}Ttyufn^X z|3sm~pz~s8ewy?Te$&80Yj>}!?k7A13FB&G{l`w4D87&_Ekx03Au)km)TWNzP7n5 z{rNf23+LykA%mXE1kM_0L}tx_Mfaft9>@@kGOp}7ywY%RW^Hv%*ZvUC6CN!kO~EXu%_XzvsaF*wFw{P zF{KKlN#wQe{S-YcXm0P6STj@aWSS$VJ8OM(oamvy6x^L0e2tjK267cLo_|&897t5~ zsn_dhyF)t8R3%@Uu%=h@c1k|N>Bks2efq*6z9I#pnThzNn3Fe&li;s+h%(us*uvRMPsK`u4xt)k<>;)6*^fj|ZX zzC>wV+1O&IDt2-r5S*r4Wd{STD^XtnokvdtU?`ucqXA?qN7X@{^c~$*c;B@x37tkc zQ)~i(J(XkBnec3g_ob$FqEc9#o-QUrYPPXT;Hkg_tg;1t77-cV*^a9N9{l%1>4({s zhQ^3oT?e>zV|ISZbNvqS3SQk1z$ z&#LZQsPa7DhwotN)q#)}wljaL??j`53AX)1x744nJ8x2@$>1PeZ28m_TI#x1)fd)# z!*xPx4!fG0EzAfK=h*ma_}j$^mf5XXrh+uo@XfIa5(_i9+3aeP0n$r9rE(Ml=roM8 zo*8K>>(L-gd;$8|+^jI!d7%_?-qb>dB#wteiRK0xM#lhU(`?EaFGl=8rP_X2AluZ~ zoMe1@y0vvYfO`rG00dzx>yA!i2Z-(d|1=b*I?fpYSd}oHM^`H40`(c_^HakwV?<$i zxRCKTTe=_o&_fg(s5icH#kk&sAXZmzJa9ze-&MR{Mt}2*AsfmJE4*1RlT55!IU%_Y zfH=v7tiJH()iOg2*{?SR^r5a|g+Cg$9SO4SiIw$Fmf{Q)Lkgf3@C2>RiheegtRV0F z3@G1r2p4&W{><97BctL+w7>QoGqw_#hg@-9^OajVR_oL5tSmb6LA&!*k?A7_pJsei zds%zoI&H?T#){kmI<4VZNUGuR^&^~9U+FG?r`kAX{BU)hSh9hp+1}H+MxTCZWudUt z>O#3TeGIE{$!EN6?fQ7ccmO~o2%dFXIw%$0v>x>FC^o7;qa^W3${9OyI6l8x*5%tJ zbNe*x7)3_o)9X&lz18u@5D%%spl#2hT=_8H9nZ3+kih~e3Mn~>91H^(ro|}<5Q5)b z(E9l;MRR~>W}0xH}H#+TZRw*=JH4UBtujOz3E4nIbD5 zTKfk2T3fI4YXh0;? zWsm%lZ2#u3@9mFIRy&;^no;nXu|vMHRlUBrMcBD#-~_>YoG#Wn(4$jYn6nhSiXkB5 zpppU-Y4t_wbTdl|b1{r3V9Rl&Coka1<-z`kLNZspTpCoNu+6T~$LTaekFFCAI_ukV zVJKY<*6NSc?bh`jGFk|r>yLL+`GR^viG2b85pc&sd!6WII9=tU!=q9sN2Qx$A{D?3 zk3`263JB1dE)K$vsi~E-{TL1*8L%lp{@WZw)!bj9!tn5;^WO}lfkpoqt=fC5YQ66g z`-QHn?89*Fesv}%k@Et25jF6(cC2X3v(YQg#jVLU%{9)J&PfC^UA4`-$LScP7bh=F zfle*e8BoZgVB-KSlZ>q1{S^L&Xo7I}W>s)>7+;nSp{yrGUZ@v$407`B+19t*fJ8mJ z>RPKL2#`_0o2=k(l7Lcak}7eS2wDRLS^hDG;lr4&MPfH(P1M<88!-4raU&knfVI;R zt$QUzH}&a!S=+!pfoHAk^hB48h7bi;yJ>+SQbQUtT!?xi{Om93+YVg)VZ0rG7LMxD zvoqdjJP4?Z@3LkoP%+>E=gFp1f#16U18VG_Wmv{y{ty*rfUV1@9FT(n2Rn&<;?7tA z&<8{!0A>t@d^1o0*a*U&8_3${lFe^gLwq5oI7pMrL0}Dah5`t3feq%cgf+P+ISkGi zW(=?=YZY!eXp|~TTjYv=dzZtR+RIlGI0o)idhR>e6xYDfU%nJf=QXfxMEavrV9yoE z$UlxveL@OB8=i%5mH1Vw7I<%F8*1LWt7wsNZ+8UQorP1RS=nOZi5*D;5BZ)FoCYB~!`;xNuP3%G`#G>9BuS0eHsW+IEV19TI@nM1N;z zbb}(Y1s4C&qEEcfvAq+{ZFIi+3{v%HyCy%^KfdJij@f1ZQjdlb$f6(Cuo4SL7_1gM zP)@0|{ZhCYGI&aJ3VaGQo@qnCo!A%~ZVDmVn6m=kpaac9AdzsujuA!{);sNu2-O0&rZ?KEqE26|^g zSDEdR-g>x(9#M8e-DOW4tZ_g_;jw8b4P1u+k+u^V=Pfr`lFHHcT_7?05DHiUj8sfO zc0)Yqy?~{a$@MAmWQP{8E}_`8@(kWHDdYk| zqnkbpHkefjwlJ_`JI;+#t8IflNL7^V{_$G|0ERUL`&gx^pk?qR0cHJKk#GrU9ZV4H z&)XP8%a$mgZcq8KmNHS^tWA{1AE-Q5_s4WEP|f102wIv-73x7qeJ&xHVTXqR zA=4a)s%bwkBwZtF7;-LGZX)+E=)4qmw-?`DoShUJ8O=xE38b$xbkc+Pv`Fpx;j^mT zDquS#=6@_Y-QC-2ckHOejr2o^FrEScE)oq5sd^hX$45IX z@8;q+SF(TNK+&qyH*dxziZIM3TcNM7nP+O6r>RvHUK$z_kYI%(T7|Hm_DtLNV#{l;XK_eRAHzy>nk$7uLZO z@Ej|J*Mg)AGvkR*ib(^BRBZHH0>r_7xqz<_9?1i6Fj<7u$vE362M(1X|HNv;=Mh$C zJ6CP^9L+1N&c(=toq+BT%Kl@VGyphbX<0LuHJk7!7&dxZM}%bJ)~)i(pFc;FJ3-LM zo_J0`$2=c6%%1j^PU-QOVvOk>Fo-s04^A%P#)H8V| ztkeZO0k7|`$B$KT*RV{CSp@|yeo1C#tUro{{DI;Q+j~T{H>Gs#*4X4P=*-K^mh4;_ zvrQ17W*~41cQv9bozULh0@ye#UfuFbqR|*jo5jg%1JOm3YDjBM^EGsFT(J zW@;`J_oFxL9k600?p?wyQYebJlOO@+%`I|}D($&_IxH1$-Y6_Pu#OIZ`U*=$K@J8W z@PEsr2fkgN7i%1FGA7HV%1O<~s#hj8N%;<7*T6`Yi zSbRsbwO3e}6o|3hoSNT_K$*2(Yn@rSFf+lonm3f|P7a`oHMB|E%n{kxW9uf9Z5IT~ zhr2H+!P}b#bMH9)5fL37_n?9u9T5@h?i3Xj&Q)Qi@%@xX4OAk#dCztG8wM!`x~#Nc zUyiIZB-zqi25EP{xXa1gC@R^Q$GNL9=DI{2u0^?<$FXeT+ZhmOR67Z~-J!C`#H!^q17H);AU zxn~*`gZBJdN$qX-Hk5BaxI}T9zkle)wV=4`rkqyVI3LVq-A@+jzm<>5+j%R!0 za`7%93FKDmav&B=@zch3_y-RXs+%B1JGDfoN#mp;(IHN$u80_Q0t@=L#mlP}U~ap! z9De=`|D{kxAXB*S?Xzm1{Q9vAefL;>f(nj(%Px1$&Cn>^gFnu0Jb18?J+3#DR9~OO zc01)5=+gH54x4dDukD%3!0`+ioCUaFjA~Ev%bYA?aN=zQd5PCLR(wzc$;LN-DVT6d z8PcKE2mSI7F#GT|@Tc3!a=%Ewb#KmT!xyA7g~*T&WrNEUk@|~%t!?A8rOpQ58YWwU zoy&qGYj>|Y@hGfink9Q*H(q&gTcuxFhG^dbj|>1ae3Fqk78qJ>LJR9}+Q{EpkF_rU z#b9344B90casbmKP87^Bnl{Ws0N@SNq8-tvAmdQ*A&}&dL!!xu2!&$ksF;pQb7^Gg zNt*s2Fi~&{z9N;%8N|n{CjR`H*v6%8kRoyhm3c})B>utOp3mKdq7S~V8yp&nh?o=s zv;p;aDHn!dsc1MLmtYtIl^w~zLPRHfvJ)AYIMmw5g*GXz$&RFWHxLi$2$!3UJ82t6 zBLU?Zs3!%eG}4A4>BsTNH?+Alu-(G-UKlx=cFQG%A8z8HjLU{9e@n9GOynZbMbHz% zp#o68lIRve*Y`K~9oXiT7I}!81s{vi#{B$1Pwo4Y2i{SpAGK@N@KQ9ofPC!4}3m~%qZ}*mXhEj`_(l0n5bZG2lb?vc zVEXcTugA;4dT{Mkm3-4s_wI|YF2=JRwZMyb(1gX<$3zB8UxZ)FXM8rjlvcZK_Co-` zq_R-qo@ady#rZ3kFHb}`ZOxTFB6OLoh7rIG4;PxzZ?2~Y2uLHsfjuO4{AN3esDN^> zmyZizWoEK8%2<1OQtAEs<9xfQC_Dc6;Nbq|6Pqtz-mEy`?0iD8GCk3}KPyWr<=ta_ zHwS-i^!~({$oSZl1s?vuLpB}o%mgZNih3U}^!#~_mW^rNP${m|Xoq^EsvK3Z#&Fa7W*XSDuWHv#yUB zck#zTwC3A`)hJeIDJ>e12>(1Q8?BeEzE$1hIGXsq$*ZbaeY0LRDm(ipR{})yq-ZCY z8gX9eJkEdIr9LLkI@!8C%m$>q%hJ^M{9V%RyQ967NSl+4%cz+K|H?mbqR%&3% zWnOw{QtG&ECB3aX+E>KUtl7_MO+!+Q6nN12kNKYkx8<$1i!(&kGnzb%ERYa_mOi^D z7#!og6-K(sNl3?K@svRK+|+7%QtA3`EkLQEn!uLBe zt(CQZjfUeZiteVj*;bCHh9;%+QZ5IkvQ$cgPtNFQ?z~reQWZ@^6Swnq>`bIfnuXR@ zPyZ6A%xv+qDbb$}P;lig2F7tlUdgH*>j628r_939orEg7(OUs zb{>GPCv(YR@92C4f%Ls>P99oK%za4|5UXA;v(9`n;!wSDx)P%K zXNPdugnz`LSoVf{U7i>N8o@X`;#u$HDHac$%?3s=?E;W}aS9Nt2rRa;yLkjwJiN_s zNQ$FicI@BZ)<$`N4eXE$EhP{>1QfEb2UqEGpo-L+wK}-e9yUA$Qs+%5~*wa3&=Aj_W#9bM$iOxHd;HJsp*VwvGsC#gH?7U}zzFygO4r)?Hh{dkLw0 z@#jfPB#8btw43mc-|t_7GWOJB1D24W1#M#Te}H`eV&=|! zz*lWQzP5pAYo3a8>i0I+RheOeUVHHv**KwXFXIu_=ZtsszwI?VtixhZljIAqv%B|S(uKb$e zfS#`k91l9BstbDM6^ITu$7mFpI$QGvwiZn9fOhOZsC7UJ!PO2OJuArcOJXJ3Ie+;r zlGKt$Q+gR9kjMywmy(v|N{ZY?PPa>BCHZAyx}(u{h%78kvdKyE?;FQUj~SRAp--oc z`T7+CQ25F-XXN2X%un0QZEAdk3mC+eb*$bs5+`>FP2&tmDFA$7LwU9*lbrxLIzT7| z06%XXj@22M4-_~TFWLQDR5c;S65}Fu4_6BJ#aY+{@cjfxQ|kkX)O6q8Uf*<^a|!9D za5<#g+F~t_?$oe;s(8@STXI)45P%fPFQ$>PylH>`X`bc_ZdDrx889GH>5vf5F8`}i zZeXr3Em;h=ZwUuae7JYSvv7y?QlBH^`R=Y<(3S>=RH!{;q8K+YUkMdCslWn;YIRgB zBdlg9e(yQ+N_xk!V;!qfvI;RN{`9ikkVJF9``e#p8>4wL`Ee&_m;e7^{jz~f-%1KH`X=-H$%t3ohhYnY$%zL<*drVI#@AoUcE1P!4W3%J_3n>uvZ7=d&&v(x+dn8#lGri4&@( zauP7IUb7?Lc2Di14NZcQsSWoU!Olp%)Jzr|Bw~=XoCg?w`UeZcio!9dt$q}J>R!5Y zp~pjWU^;IoY(>23z~f>=@9qhp4H^`ljia0SZmS|9pw>{8AgL9wcC!6D^8 zYQewSU+j=jaC(EjU3@HXy8cyHxImA8I7C(O)0G;RTmLg#OZ%p#1C8e7jgI7PyJHmM zvXs1TKrsiT5c#^$g<|E+vKCvu-KbTkNGy1;vUOT9RmW|D{UR)XZy(ZNR;@jV)AMKsk-2=c8LFcAW65nK7PWTYqtq-g1*mUd6|8Hqrl<5jS z_0WeSP?rvi3J>N5PK%EN5?P4y_pxIV2{|6+%i~|*p1eEbR_E z6A{y!)9Odud5W`h%gtbJ_;+_onR(Kw&ISM99a+%&(aI6bRaZhgxW@S;R z6?E+UZYyx2Y4aWAz*r0z^BV?a?Ibp-%>z-@6djVfk@D+bgX&hVEEwdKAGN|iLt>T= zfn9-_js&?(I?6J$P>=+n4|TIsNN!tBtTJdNRGn0`*9ix9=mJg_Kpa1c?}Y!`oIW?$ zb(hZhW+`>woAN<``mGLF$v10qIo`+Em9bGLHQPFP2Kg`wd3F%w7$p+dIOhJ|2Q3Fl z{df>_)?@0^|I`}6zerM*_*ra5Iu~1jWqr6`j#T$Y#;(rhdy}1pJL7>l3flcV=m*#` zKh-qS1;S)loj$D=gQOA{xSYL}*a9<l<{~3RwZKHl3 z-_e{05~p9yYva6d{+Kopnwd z8F|#>f)g^^f7`lRq+C0&iE{ia?<;+_TqyBEaZhSP@Iwy|;PLzv)0PFytf<-Y9YQT~nY(S|{U=0Qe1OpgM zP-5jIXnVFS08U1LWYp6vaj%Y!s~BRZaSVjo^4agHrk_)eJbJx(9NK6(7}gB4|@u-s0*Tm`tdW*JOz5#E#uGarkZ ze*d`WWJZ@s;#TA}43j0*ZKi?#`T^dxcHy?vC1?S710X?Q{`j?P<9xeW-v4v9GVLX> zGVK-J$3OBIcKq=xS9jU+$GW@5Prlr^Yn*TMH){h7E@!oSQ&A?Qw#Z_%3;3)Pi`;25Lm+>R2?TJ3hdy{bGHn zxi7YFpf=PJA1laQO^pcW7i~+3UfIaFqG0&r-S+T{Ta9DHO z{m`dX%}NN&49jr4J}Tw8Ul42vHSL@4vY7@7$wnC*PtgIr!zD#baTyy|yUIl_L592T z?hM0rdEiU}k2hsfDguCNM{ui|(fc$=#z!mHudnRP$nYLCD=Awy`RK{ehO&~xq;V_c zRV2JWDLF!!o!>v4pBEnP-D>_(%a4lUYd?y`qcoD9MCl$M|CFB~t+X2NW3{EF+Su!2 zaYhq^dM&cK(Sud0VPBm;h>R8B&U8Vl;t`2C3R~IH|@&y9_7^?u%4tsvC z>1eID(4Puo^7;M4%^y?6CYLdI3Q*`|ev}QH86{u~+~3&}E)$q;y1=qz|3F2CR>l%( zHJ)N$Gc+i9V`$ob1PW1^-^r>nA~OoyfQ_zJ#PT6&cxO}oQ1YqPDETWDC?Xp9B7tH6 zSZ(y_(7lCTsR;+#4Q)+OR)vkgvdD4RA`)H~WD~YG3UCRn3fm(K^qi!4DRVtL zeRqq3A4XIXuDlP_spa+n1ZFNM1;;Gf1+iOAXwe#QIpn7QEjZcy7(dAMS{2-c3ZB7j zVT(Of?u#+ZxZG&F(y2eR+|AkYb&)1%hyj>B5GtnIOl5#>gY>$q=HcLKE0i8?>V73v zZlV83G_|p;gxA1MV+s-B>z(+DfH41jav^14royv|$qNe#$5vTKu2&s1Yt?5p9RgR{ z!N8MpV0mcN7h06+_0G0jI(Gb^kk>YmO7p2ZJ zLCvyr=UD&y;?@0WB!eS9ZP8s1Il~jk@n_rxf`8ex6aD0P%K$@!RO%Mk1|u*CUwQhp z9IggygU*UMy9lhSJRgAPQz0y(U|eMKA*u7=2cA{dgR$BSM)B*WUVU9^$6LFpMZ+!+ zNrRPsnBOYPCkH0lNSi(8ee?W-YmcwY`7}~ib>VqqZ{C4`rj+;w_jXZk-Lo&3W62UkIU#4xL7iaD`17_OZ5t4`bMM#l7B7!NBvu_Laqep zBlVuH78ldZ*d@*N3p((t^DjEdy1JSJ^8DQW{tYQ{b?$A#?1;5W@>xajT7EQ`6gzVL z?)KrW8=Gf4-sJ}=q92vgE3naI9}eFqSXUAyFG*W(n}HlZl=ZL40DCG#Ss~ZBMcBxk z7$Og*k4R0^A{dyB$PFVw*H^dqDv&{f2p%_5M=Rh2hw6j4>Nr|)-nE!e^Tg56?ADkh zV_h;%c$MH$y310-dhZ{@X3)h)RV1aQb5M;#UXUP1;NzkmoM`ZPbKtmxoEhX1VN-e1 z$TxmHSklG&7kf-6htDTL% zWiip&?%6?_ST-a(FEF1F&-P6UAv}9g>bv@z*o*pw!p(sfIcoj5i9D$!za+51-gjT& zJ==&!1&{6)-+fpBETdSeaj|T0r808p447hEe!j|Wjk3N`H6kED<~|nPvvshqJcwyV z&sBo_u{#{#lj1qFlP76&6xa*!3GsIJ%+qlIpA35;Q5g{0A00n01t?OD##A^h`X*(0 ztQq;rVhhcFhwMxJT;QxuakCM^aY^&N9$QWdB$BvQiSzAwe|4mHNtu=2Y!Jb9g6$f2 zZL5<#>2TLarmc~)s-X#?BYftLGa6eE!9a6n2cJ0-AF6+E`*6iTXoNOL#pI?7GLiu7 z^qOa3&ysxrd0v_htj$PMgk`60%}AC1;pnfh$x~NFhw8+_ooqJ+sQ0tBc32-cbW-Y< z?GQS5W7)JJSwsUtw#WS@p`UG3zgR^5i=?)pmQQPv0k%2v&9x)rrl<{7jpo zLHoT7P&5Jv1M>?suh@LLV;$R=Uh&DkBWM`Lt*VtJRD=D01Jmzk4+A)4*&EiVs#-w zfLuQyK5HCH@4oqNWl8VlW<|6QF~v6CQ#~3|SFojBY#Mwu*rB7dO3s^6JTy$Z+I!0G zibUT0u0z;sWSQr$+mo%$8%^;`^`k|h_nuIw;Njx|j;j>YUO%clL`UDLHXq!m&1N!9 zQvW3M-46K0Uq;VR&$eGALA#)qBCB}U;Y@Ecoy!g~tHFTaQluO`hB6D=e!VBH6p98) zMlCYmU8#$J;CB>$Y%nt-7}|>NB7i^ftoU}7<0iRW2BMp#Qf1=Z!4g}9u#nDh9$ae- z9^)A(u2#(DiMUfJn<=g+Z>~zQvg*%EY*5#!S|JXM@q~|A!g+8C!QtTlOkL-RRaTMD z1~&gf=>jcJrT2UEr>Blk8BK!Ew#+4g_g)@gxVtZJ*S>R6NMZEtmn%Px_>uu8i7t^y zgF6=ZaF*3v(#c`rlWe)Tz9^!@qnjW=>dLc35feQVhB2$YUj+y>Rw;@wWUkFFSqu#4 zmHE8$b?WYR;#@s%$b8P^MY5BH@L&jk{;FVWJ-+XJcx8d%i`gY>Gh(;*l^o=s5D*~Y zn!x0*k^}$~n5k!H=t?+3O9)z>08XRYd!6vej2@6*O-!}Urnig8l6+owVQOP- ze-|qb{Beja8tKCUWjXO8M3nf-pd=&M6hluPEX`=W64Kk6Bc;+C!q37V_uXCK9dQ31 zCsEDz{dO0Nt2SByFoQi_CPL)I2b9r=EgCV9J2(BnMuzxPZ%b&1G_9>?(qyTOmz->y zMnAgW32+jLCSCA-j{N?3>hpp8qr+zC%^!G9^+z1{!TU{U+(6$y2R5VI!uorXoMpk8 zer4_hd@=@XFKGi%0N<>KD3EagTh^ga&4$oX^2-IjQ3M1h{=XtKPKRz7jKPvjB3y2l z$Vq-f)npC7)8vB8mGG?tG(&(-!Li16Y3Yu-wOT6gdn=qtD1LUUi~tn|#j>97(9p8+ z@nwLMcuj!?kR;?95DPG7hw$-*7?Y|$4+I##wE3P@MRN}DT<8x;bIHee&%#Vf31gc)b^(W<_9qT$-NSzpfL^f>ztCPPo2!qg`X zFvhE65QM8f7n~x5Lx3VdmQr}uWti;QP1GX9rgg(Y2{?}7=%kRbTg63{9E@`(RS=Mf zkkI!6Fn~=&vwTNnl8)0&v=qq+Cn;b#u}WQkj>>yD{j7dY|J2l6V2#+A*Gi4Rg+SaK zAN?*(O~oi+@=!oD{QU!dotH+X`;b61a&P|VKT1%*-&uGYk?*ICIZojl2ZI+ zjheR`lq&>VOxjmobrOdp39{l!{-rAq_G0`Y$5=xgljfXhLn;NkeYH?939*D>o#}?PE++Jhb&kokyquqUM`mm+G;4DWJS zPLJCW=U}-r!w)xZR_%t*Vynm%W!>I5Z>@S-G)mc~vy$KHTaXRGz75ykw+?b*Q>tBZ zi#JCX#&`2J^|o+jv74ic9-nP>GDp%n1Q3+CW=s*RIG88;Qa9YNY*D&}5ay@a4O$gG zRfOX$3+>mOkzR;o6et*|--!}cUZWj>@tvFf?phaa=?V;hGh-pQsseXg;FSImNWZ>f zS$C=De}d4fYwBx#S#KD#B5MZ#7ODTiZTfcg#O1nQmq5;aw`Ung@<=!6f=tVdz4A1ZGdy4E+?MKT`@-U>Ws+UH z&t|Kz@>9NLZgH*+<7Eq%eSG{BaEONZsP^AEW0$1|_n+IXHofS?tx~_Pi^twn^*Shp zeDUIQ2G%#$9=AB8Z_xcnH*eIlP{0>XbUN4Vp`M854^#8h&i2>_`G2U=Jmmd*(^K_x z#8cDPt~&}KyPTkSOZ^dUfN-7&_%E9+Fn_c` zaAsHV3@_bM@F(Zmn^C^b7FBQ;EkfDq_%mf$|NLFZgJdsvbk5^|nBHku7$A;6=(=>9 zaC|<_eXVVP8f-j|w6pn;3wWra;tft(ZIm2Lu3A$kK(JQBsK5RmBaU?uyZ-(bWf23& z2I}h10HkeUvLWMdi+&{_Un{wly)@RRF5FDeXOw}mVmsCZFg&$E!)OHQ9 zT~2R`vO#^Miz6eW^tnlaSrU8)s`H=R5><((ug=YSI$Txgq9dD^RkQdiEe@Qt{fw+e ze&0-<%-10)U&=d@)!`dOKs6yhTL+>&qnZa)wCw~h_r%a(!46kh+zlJ63)2mkR1K5n z-s+9P%{iJ8AVr>Smp+4U#J~~m++_yMGh3z>y}&Ye$wzm8fEx6xiQTe!)Q8$LTvC5#JEc?MIRr`*^-{hXScFr?J-^NKpFGW@-h!UAIg!rcofZ`7q)7e)oaZB0P`Pah~weXQA?g5_^$(vFZk#02kDw@bCAc_;re@%K021Sd( zw!hp^dKu;9Z5vQd@nE3sfvvOjNl!4o9)!Q-$hhBX^d z+CBgyA~Vx1yO>VRl@2)M<{I()xA|#PQc_ukhuuv~48*9xYK7>>k8$F-Mk5DQ^xNZT zdu?GMz+!{4H&+5;BHtJrUQy$h9`@!ajWhz1X6(pnmM^Y~Z43?je%R#j_pk*DIDm_Q zct_H1*ay%?3g}R3MW3vaj@D*V(M^XKjmoFl3Q_L(U9A^_z|3PcG%_?P9iGwxviIqC z?yrJ&?{^7QxMW9`X&K~Q<{0ed6XxVjvXsDY2Q5kX-aefxv z__;w>S`i}|KOVoD!f*j4Eq|teM{8NY7bX=V_upo9=5T~0IA|9flYY;dR|m>@a<>zJ z$Mx0a1rU}<1ADa_N8+^ql*(zly2_~}&E1hW>G!D@kWa1lGsnxw{vVlj{e$1w<6JMR zxV1|+&sp!PU}7_|FU|_iaID&PW3hP|P*7gF54jDo|H9pM+lU!#P_Qw0Bft_GlaT;& zE0-lG=603R3^)6MEmJS2MB0S_*TYUH762dei?8aw8L6o_zfvfCU1DNYZ|~Nt1OYN( zB?4OEhl_#Ek1H?xl#wBf|FdBT-I-fvV7gyYA-xOZkZN21G&Zwy2>oY+Fg_!rBv8no z2oREhtne?T@P)CgZ?qpL@c};Zw`^e3up90{`%|N46O3qdDCe4!t)=mm1RT_|jp=~^ z25y_^ahpchv z&8~3^L)79GYQoK%3r((Ap?+TH_$=y=YjB2sFTV|<&(kn|?oW<NRqF4sUz3L0c^@#l}9fpk{izW4pqxe3Ztqn)Ia` zeNu(mcMLSzOrHiQBBI+v zP;KSOAW(o3KgLH76* zoxHLVZeVFr-ZrJjYUU6q1XX0Cf61MGjIjJLM&H5L@0nUB8A#YOcVak2Ci#vMq=#17 zT5s_M2E(MyX>|WjvrhErQP-H%6Vqkblc>qnCH}(uKrKU1;XFMJH03+Ocy)llHRob; zeLjDYpI9OO+8u;5ft2o`7~H4^19>h?Z%*gr;3x4pTXJq~g-Mohqsg3` z3)s7#V(9&u5y ze=(vC424(Nl@D8Wn@Cv&DoHuB39ErDum2|L`@VizM+TrTIvgx!l?@=(7G$dcW%1@a z03Tf6uzzAfu76E@k2a}w$O#Ney_rtGzfX!k8UtfRfXw2|`kX~zC~W!6{FbNmA8L#D zL4q7M#Rp8;^NAq^;6pp3Lr4Ih4BSb2GCKO?UNSlBZO*epLV2j@p#MVd5X>RseL>S~ z7oJ^;k4jqs5LTVLNA~ap8A`SQW%8)dC*^dbYeTy7?^Xcz4k1)Gl*4a-D~~Th?pZkt z0b`K8HgC#nUi!tApkkhH2j6PO{#y-qY|f|Thcnmw!LJjZPtKRV9Nu&o5MCb0!B{`$ zj}&kV>cdfiIEIk#+6K98d?3KH6klf*0vR3KPJX%PMQM~NTcUssz}|@fC7}Eq%(K!! z=bkL}G5=?Fq<)VA=%8nzF?l>ru%b*JE@nx%Y5EZUrs#uj2%*ZaFj7Q$y$ zaez29ybVNGqJ(Q5qKQgEojavZM{Fi=noDy^twqrQYC~IB_S{i6jmVT^K7wBN!12yD z;S7}1{qkUJL}@92B;kQ=q_l5$VJx63FO9$km*027*rJurczD}u&__9jNu;rl&SiJC ztwjN%BCko|jV)vczLu(I!e%0*^NqzK*Fq<1Pl_{5h`@sw40bX;q-cPXdDzX-%u@70 zwDBKHx5JrV515lkPJ3p!oO5BkW?taA>@DGe%60*phK~bT>RB56;lGZ}XRqV%G2i#t zXx9n?H+Ld1=uv$?KX5HNdgnYkYJ$((yb|He?#+DOL|v;Fn-}L2&N|IG9Z^M2$fjj) zy%a{NZV6PL^I>mM2I_xEZejbJ3){~Vm5J<TO*#B4#{O93PZAQjqMQoEMNuiTfB=_t4IU4u%TjI(@45GrbdcB%M=qnfkJ} zJd7KS^FHtGYqCnCg(t8H8C0euW?xR^=5&!beShT6$g}AZIfv+ucZQt49TY9OEsefD z`x~MB=a|UhLzq`OcsMrlGNJgRdCS&==$D{J{+o%AOhk4~uXUz1JdD{z&$f%omzo@q z?AGiTN<`WN>fP%7T9HJ!KSJ|If}e`TJX_7~PAH~=tZeLlZUmg-v-G6mhc%H<0VaG!>N8XpVD3pRBH zB@OpMXW~|`Za^L;JF?3)1*oGAw222G=pz zwb2>$!#M;OjWYz7rLYzSav5&XehZ~rz# zd&<7>Egb{^=ncJaAVqHn1^^sw=l-G~MB8J_o5ZbwpEm{w1f8R& zfl;0y;W!vnOaUot^QZDz#@Lg5tKmhy=GOLu&i&)dT>6OQD4VP7zq(ppuj`cw-qb7% z5!yxoiBQqX&Jb~v;qIfwE$3_zxHx3>N+ONuNnqLS{daVi(a<1Q%V4}Yu*JTHw2M?@ zzlBsSJcjC>@2fQB;P zzMQ}Db6c7!!Xs1dHFg@ckK8i92njDdSDMCn7ghrnL*fSv38wL;wWBX;17)-YQySC8 zd+Wn5ghvUq+=DOdAKAT@ZU5IKEc;_EBGXF9khAq(*O_O**~t4+w1)a83!g$hlY)Ob z==W?;qWQ-%eu1!6_gb}Y4*1iU<@67+zxbW8{xm_hShWy;%c@$Mg zca5I#F@1En`qC(y9e&0>E$zM$6jcv?35Kb6>%~Y=={_D9n-G;G{E8D))s*T$%Itj^p)^{Q=v9P{RzkC(f6l6sN`L8eIP<5F^jQT0LO{6h!2>*R z-_9}HUeIYkI$>rWf!A|#GW8<-mX=Kc?&Z;W6Z~|L80hdK(!Bz`<*%x5H-gII&-wpWAOxw+sj8~^#nVgG$a#Gdtl z=?saIJq$)uj^bnzJ=XVD-*7+bzKbyzeU!25!ASfWJ;7Y|41d8mY7$>`Yi@=+s{+4- zF_)PWJBRXp4QDIYSGsYqHy2fEZkG?qK0?{w`Vo_Yrsf|BnJ}tFxwB zpnMZ69&91p`{O`egHz^CZ$Cbro|C8Xw)O-YprIrZi>t}D$qC7I_p-OhH0g#;Dpoj_ zBceA_%4gDEya%;=JHj1KT>($1n$=NU4w}C)=a-%85>1p*XeSuky! zMKxN3vU|V!Q1oD4JAFz-M-WPiY4`%D4wxpk@9FO3|C4{X{b_J^$J-tB_ z*=I$})S!T@D;6mZVLmY&*bF!Y)ZP zlKN}}ZQQu;nPuN0%FQe!@=hS6+V34$a)J8M+^F=xLIyBgR^_8I06Fbg>CcPBWmTq% z)@jPM$%-S^Stc5M;V|;%d^9>7>^(2F3w51eoaTLZ{OUVb5;j7Owy+)=f{Z=VL(Hd2 zX&5>G54z2&>jdnfaIS^6xyX}(=Nj=Yl^J9{JblZYBZ}|aS9AQ20L7_UKQ9=~^jTU3 zJxlK-Vz21EV_6J22a03YMY?AS_<8n$UE&Q;5j2@rMJ-9s&5yl-h%SLiZ8!FB+?<3& z&e-%k#^{nzQGcT)HVx){KWQAaWa_jWFZgqJ?pF&)0hT^O-2Sls>plPmblcBq02uj~ zZcy16-MN~k{O!>2Z*4&X{2#uF`6h@ZF-wuLKCuH6T}gGKB&9bd`(E|k`psSZlV7+a z%;3dOQ{LwtqCdL6ED9U^)%%YXAOJ*kE=>O$8DZ11t?Z7NP%D;lkN*1NA@Ozp9-z%% z7#il^AQ#)UxnVo#93@050`He>z1v@VVN->)@2{~BS3f;BH#9>gOlX9C{-Ur zWLx5Mi0HM()2}#o&NEePa3~597AbSC>eZfUPE54UkDJhG*g* zE!!0B^dgC%B7aR5u%wopNTs!+-myn!jlxHpG`77;3@rNyfn0_GESJihJFVDfNF2?iK7=~HI6wiLn{8@@$N?I{l$D{HD#!ph6uE`3W~KK&1M z4QPdOG{!28p;u@dDcVxz1#}0kR2355!)YN* zrfQ`i5jYvCvDf>BDm= z$2e#VOpBHjre0Gid7*~&tq%#wo*8BsAwZuHW!>Zx8|9N=8qbOVn}|gHZs*pdnsBd} zc{Ns5gw;+U`axrHVr5ONCy7R9#jcb@aa3lo>XvFYg{qMDfLj3xP9z$C3<%XVg+A>0 zFqi@#hhoRBTjqz$Rq1NHoZ+Du0xUdy^IC6|tu-mybUWOw#m0lcBzfIJ&wW64NNlcF;OeQ|i%n z-@@K{$2smr(}|^8+hl3mi=^9K#SyMrp3Vnfc;9;wa1hz}*y=v#SJM-uG<-9&?$zE`2=ce%&)t+>}&ijMF%o%znIN zD96w*ME+AA3M9|{8=_SQrzKM60{ymT5_wU2o|lsQ-gh%M&v&}o7QHjbD}3df#yA(T z!Rp9hFW>MJYdN|8Yq_JiAdNccZRk1)$P9nc%A^XCsczVA3w8+|3X zAYBB{lP5p1j+@Jy_N(?5m~eA*1G)JZ%T+_5g$Rv4Az{xp24n_`0T9n&vnT659$niv z`iM7}Yg=HeepvFYe4;}?j#d}Z~oiee(`(S<~v4v z?pW#1cB~UTe{BjV60fOKmdj}s-ElQR3X?r-=%2;Fhe}lW#I13bn@AC0vYdlqDir`2 zkcc-X0?Pn^okQN)Be+27`f#!aDE(%FwzPo>29j_zW#rJujE`2 z>Cd5Zv(MtsOb821cg;kyi&7_>Mvd{PZNbH@f4sh*&(3jDQ@UlvvW+Wa+QN!yZ;?pF zS{^-A94Cw~?)~)=yfxBVOxe^I2c!hb7x~wL@8+r$>I@g$2?fLzrOW?6v3c_Ua-xp@ zb8QU}H9YQwvBN}8&Z4jraZVzmPEMHUtHwtn$z(Uj?T3XBFL*ey!^E~aC*S_Z-gKSV zZ=Z=Vj?Q68BtDLckMX2l+e_!pkB8Sw$$jddbz~=@kyH?PVD#$M!1rR03qnf9ua7^T zAGDVIB;*O1a+QBoLmrDi1z#RlbpKeQ8i#Oy-|lSv4`x*q@33QTP-mWHKdeak%!6^% z-QmkRxozF29ox2#hg(O8S+&G^akAV1H{RhmVn}3p@l<(Hq#fpn^L9+lXq~pKRI4c~ zQRC5b7-phW;c+?*8^;&)%=U z_gctJ7)NwR7=?4+KkuIZ_GQP)(*eCxatnO?o^L4RxX>ynT%sFyD-x-txSqs z4Is!88^hzcj9u7ycdmuR7#`nWMdNj=-Nzd-G@L3gI=LR!aNG4dP1v|K*J}QUNSM&^ zh}`rr(}Np*O8B5MjkPu|HCtf>!rku|nT&C7Z|f_>K602xJym7Xaj+ zSVGTxrPQ$I&jDtZZ?hn^{FwC!1)`ouW zQw8zm(qM1e^B)WL)tqaa>+v^EU<$kmWp~e`c2jZATLbGgC1GKj(D!cl6?Df7_q`dh zrfTCv`>{FIcBP+AER<<0eH)#(1LDUwh9*ZwpYTI>c&_{~&VmS(Al zLT_jKRurI1hm|J5rFy#~43TJV+~o6u8WkQRGamREE?S8% z$)c9#-$$ZQfTB0M3f;#AG(nptKV{IsT>{#4OP9B|9UZ)Mf!@qke>>2?7I-gSpLHxe znEc3LAp2CJ7cVl!0rF5-@is zADf#AjmLEjbd_F?nR5ray+3dwA}O+bf?rMR+SVg}gU6|^X*2ri45764Sx zv}ms*8N+TujD_?mt@=#dDP0Y!w3;o!=L)5b*(SL!NsTFZO`=h*^MVB-^4#fmkh#ZKCrOxxZ4xJU<~ScSXkJ3R9&q;`r<`75txzk>wTY#oOKOy%8yY6E9=X6 zYZX5&s=5nK=sna?l`3URkz{R{I;x6$H?QkrR-sNG!j&`a-wP}l;*W8m!tb$RhX$gH zZ*Sdsqf&M|I7a1^9~8!$s4G)}>I&Z4`m&51RaBKaOtQA6NC|7DCB}j3z=8Cszv66$ zC2?A4B;??n2?4076=%D!gt@f?y9mM@c!2aq+7k4YsC?|dp{`Ux1diUyNpw;?>H11< z3&5Y}pFXKdc1UiH^fU$NdUVnY-7G5W*~1;4F0MkO_O<91Ohg5pT+VY8)zq4Dy;XKFoFrx%IEw?dxQltE(=z<~&@+T@v6N zp>T^rDud@2rmN$VQzH&PJl;^6Yfcu+!X<0XF>OQh&Bp1umd^Fl9oK?SbZ?Zqc&{k6 zsQuqhBFHljRfPiS&&Zd1dq?%TaD+Ge`*ZEKEX13-gKnA(q&wJ#DpzNAcw^6Lz+(i||T@YwSiqM=VUok6BoN zsLgIur6p4(uO&N5;`hrZzpdqETK}YgHS9Zws#&Y*S=ARb6dgtzdV0ltHZndZMkfqZ zr{s?Jm}kd+8@YXZZSQh_4c)p)7+ew<(cyPptL{>&|CVO1UUhNRsC{*2R{SRkAn-3n z6l16DSr7i)o`X=dQWJ10OGd!Hx`BicS!$nGu0s@^b3D`BF13^y(a@vM1>=rp9|P0S zQjE@S3xARPPY_oojZTB49`|)8_&=JN`Mo6Sxc`3x{Tg_i1fp_vT7E#(WrQCDo z64WND>{WsP>H7DpwT~(`p-1%8Sk1UNktejW>II&}pU8AyF_>*Eg~nK|J%o@V+_m=9PCFcvG|wm+3pD4BPs7(>F-zh zjSsthXA@`y)7!O_X4{+f4T$omzyhRKRij)LHh*=JnfSwgr@xV#YX>KdB*mvC3j zHPnr+9eox5wR&f%rOClO%-6oARyw(F?n^_X)7gL6KeH-LI>cPew-JLXAIksAUq9BD zGuYozifz69OKpaLlCQhCi_9vM5v%UleBteIW@Eo-7M-4lYBHdor5Lcv>X59_F@XGkW@laheSEn5H`)z547RZ-g|*DBM* zQv~6bY_CTooQbxYbFCZSVK?M%6dQjK80*SAo&oAtF*O4i~ZtiF&`H`&Aaz72$T? z2q(}i*FzmN7D%UuCJn!4xRK4sHei3(tZ#C9NLt`g5TAZPM8H5Tp;G)BN|}Dl#z(+7 zP&Pr7ejvUen0g&v=M(b7v!|p3G7y*~L`!oW^QV;gUQ>J$d72<9uq_D7-r&2}(Z=Ru zcl=!524w-QKzz*l6fqnN_s>Gh@{?w|lpBP&2!mFmsQ&GDZAn2Q18PuhRl|8+qK$j{ z(N9$Et&HFp#`#wal;tD?w^U?d@(em zE<_J1j&wLSXvdCD{N6rh+i0RNj{Zabju@(Us9k&#Rz*&htnpn0`{DRe=|jlP%v1Sb z%Mnn<7X8$^ff=V6x4Hwro7mtsjvuId?s5AzSwW0oecrDBPQ5fS+Z<}2eCjQHMgU3O z=g#Ng()gVh;TxykMtW$x=J}l5(v04+r4*Cs6~yaygoiP?HOSg?5h=5?mG4)}Ho6>M zyzzDa-s86yhXR^XTSaqxXR<@KCMF<`#SKkQICAT!O(DSjqWJzC)zdJ?MWeN|+4P;; zYTsi>*=~J+b9X0x8Rx|JD{r9|jo>gxt3!l_Y;Ok54aa8DlpacDCe97{Xa!1|zn6Nh zJYTo@-J9*uCCFhAn6lIS-K(udD-I`c4>HQ9H&&)71H#6gkM7%QJGBWtZDJZPK-SHy zZs^KR|06_xT*z1XDTTgVrHJdHcH@iq8o5R-DsdCkZtbnEompMKCN1^Zi-l_ip-N7q zfE}O^2QVUNtb!M%MpWb$TDNT#;IIw2+p04OZ`dAp>Qt=Vc7kY!|FrgYW6gE}@>&bF zHwXka)8@@3t2{w|x7F&7fSC3KlxR_1-N*ab7niV%KT|XEXM=e)FD@)H6o26hp7gt0xsVYf;yR~&uWXROP$^CHW5~{Z@L*_GTKD+F=M&{x1nmU1A_+%C9phin6 z>d5`_dfO^UJ-OH|+grQp=Hdgj0bt3g2mweG>8|j~vdgh)27-y;him&^E*}mb{OzAM z4dAQD7T$oRUC*2AU);m@ADnr_Kc;7{1N6RQ#p>D?a=gp;E zzd;d}@GX)0M~uN4zW<)u_&1RcqaVJGaYzs<7dH9}<4|6o0}=z=EDq%_T-Yd7IwZVy z{4#H1D2ambErFt#?oWpc55paUDh3N11>yIcgnUpPyXD*lXZe0{F2=mMl6MJS?$ zTQio9iBdvU@XZLkhiN1tZbc-1tz5dHi|E(N#C17)uVnpaR)5!-t9{NfH#c9Dr*&NA zNA?P;WPwPZphV(bCkgRowKL!EA^mST%!!VX!ZNh?4F9WZoL=UZ4Y^r6Mj`tWgLxWW zLw{#Owbj+j-rK&~8v6Iv~D2D{7H%ml=t6e zX`MZL?6b8#m)>HHu+!bh7UJoRtA?Za20Ahl{))vW{IZOnY=haRjC2Y6>}@=XZ*4*H zAAl@%O^fuu!*4R;rg@PoxxX7oFGy9K&Pf?c9`h!i z9=lCE@M8orY2WyND=NzyM96s(Sf+J@-4jw5b0T*CLSf6w!i|RZFHg< z?CebJA%qrU%$YEVt_@>x=&f@%pu4{s^WVYeK@P-vAo96LL5jq)yoY1mxkdt;P$*rW z(`!x>9EpWQN5ba;%QR+VfS@L{qIYXdbxdWAYZ0CGjKBs`s{K9uq=DE`DTz3V>3+6s zTnZ5i@CzZJnBzkJU@#?y8i*kMpj0CeNdz*?z`?L~D{Rib1bvgKyS*tv|1=G2Wk+!w zo}e0_20um`8e?^rK39_wTyMXmi>+z%4Gr^+4Y8(z{2(g!13-?Adf?b@n$jpow7s)* zI`|XVGJeA6kFEm7mMx5evCyuwmhQIHD5Eio+Rba;`Q(q^MIsuPwj8TCxTZBsyaN(h zb8sql*>>e3(O1T}6}&$_u8Y_;MjVTaAG3S(aR+`@4~=!%by+5mkJzISNHq>S5X8<& z2$j%?I6lrTq=Uq`Ob0pjn#1rBER4(mbXXFi-r&0nLzllna$`R|^AomP4qy8i!KruH z05HJ@cJ+2x1`9tu%Z-J68@fztmAG`fm5VE!|0W2Kr+PDs&35xO{6Cr1Y7Jd*u%@gL)Cgp0g6S-XOL%11D&^h)E6Wf|%Y6ZPMv-BxaL6_f ztS)F`l#Xcz9LPQtH4k&p>u<3b?O2<+Ao<>EDu5N8^LTmV3D0B5h2v`k4WM35H} zRS=6{!yBi|N2oC87FJ>X$AYWJS4b%;3r-VM<=LPlU?ib(OR7A=WU)^X2In!bAw!tE^La+IPUb??}!|+GZZjC$U zf{*Q3LHcY?8lWuR;)X?S7=?2@=>$TQ0R!xNs2%aj@?EQy3gMS9aet; zVTuFui{U^MmEqxDEgvi`RR??sxQGYY?);J;bf+r8L~z0~)n0pBR_156R?m$;uA@u# zqW78&mhS3eRQ;{3U3(P+R4`i`F!6r+=QiryvmFOT0p84M6=gpD;)LoDLLp2g1C|kl zeeuwRsfzisWbx`u&LdB?tgfZkoQM7nQuApVk^)B|XTj-%>4;)-j`ey0kLzD3D6U;6Z-PBO%O&3U zL~|Lk@KW;{&3&dgSC;i`zpJIXxjC-HboLvvegJ-`tR+zVA&t7{owwXnom_0^ZP>YV z4Je}cIGcY#JU=OZj_3)`dcqZK@krTsPxy=Q3Q;P3xL~z$0O{R(DCX_g$M!ntK@CRB zCDX%4I+A*QKs@Q5dXeXPlL$zy+noIR?H(wv{A*J=I`(m{kkZ1>P zoMHu()p}QbjCS?P(3i4Xb;yV8GcYrI) zB_c)Pz|k6I>A=h&4=X8tmzZfYco=YsfZ*kL9I{a0SN)AnYeE-Nh|v&?Q&&|oCsNws zwi}Cte!2R&y5z;;Pjag$a6X?M+?iEFCvOR}UN>_n;G;y$@8U-R z^bycAP%2>5KP=p5dYjg%hF3pNwyiyaE>JfD28a|<-FZ>iT#$#-nwCTanr#@9H7lia zqBwAq=w1Od2h@g&9oIF{DkqA-6|=;c9x6x#Tct%p0VbSU6mETtpSiOwbX0aIB;4rc z?PhV&+q={@Zf8gKth>eBO8ZaFni(=(5*F-?_j*RN3QbOf=&*md!qpOCM(0V_<4H7~kuQ&so0ajxpot z60t7uP5Mk}8vb6_LXZXd$`j)vbnl^4c_c$m|0g zA`_;UYP+?D+lhdhS(>*=`as5Q17YYYzOBzH@Pm{%(2xk-<&}iq&RJ-H4EIw*n|b}L zN#!&96xvti;pF$^U9EHE%%Qlm0&05@V&f$@x-hF$X4OnZd+)8rKd}l zIAE_DB4I?@%lY%=Gptf^t%panxa+cH!4?G_iMwrGXyA9jzYl?qTcj~ch>WLZ)GgUI zDui|B~uA%L}oOcmM72-F7qZ`cYv z@Q6?7SEx^7h#viS5+WjiBXA2^?Su9+^I{{*P*l>qd7wl?Gwqw%QsC6)w|X}O2~O4K z?Y#3^;U2#vsU3LDLg@hSvYh)4v0c8^MFy}e^dQAgTW zAGf2%&gYdbrkPod*?3vN>f3tWroL^Zv3h|-50JbSsB8jZUCy0eY;rlxiN^DgiFx@@5AzxJ!W;K2o5ARTR>igS=6 zYJfuj5cA}FY+&qi5D#pBXN}C@sDWnAyhyn|7_mMu(D0#uP8KQE*JqIScDHu$$LVgg z-%Mad=UlUMl929;P^p4t99}RUs^=n(M4s#1>m2KkzHzKKqr7~?j}a+cZT*o)nq0|p zP{XzQ_E*Q0oP^32*gq6iD^ z%;p2ZbEOPut_;bhdOKPp4kT1KYSDcw#dy^Svh|o*Kj;56Gy1td=voAH~dLuDf5ou!0 z!}Pk$kQ{mRLB;iJmS3$rfchcuAJF}da3~52!$J*euDAA<1iAE0y7y3$FJzW?vx=ll zt18pEH8U)k1xs?oV5(mD>9`LPt@M(D@6{Lf)Z8oW$!|IOdr9(_;@Y>db!>0M=@;?K zcah|-=#!>Cn#$Ur41O$eNXJM+z0P7^CU0Svr9yZTwNL&|PF9N6>G!&Bek;+gZne?< zQn7ETCTY1*-HQ!wAf{ct3XGrUp`igl%X}uo*Qz2tUs_T1Qi*5tG0lpU?_M!@IS&Pa zO{~eA_kwc|dQC>E9>bpZcw7->BD;(*s)3hv>n&C97|%E5w2;#pQyS7&A5! z#$UWbxH90)FzmcWvI;tmn!LV&+!QGCcn;-ZYD>Rv9j?amnH3CGH zZ{mqcVo|L=%U}J0^TFoc!@PPoN{h*4%VfqY<`}8xs=;!<>S_9!I9k|AY6wlF)ki<< zb4^R*Y}=k}4H}H4DFE6$Y+G zMy@F^w+o`__)(5%AfBpXbI3?%wDE5-s}Gl78S6h>#@)r=8YwT%A;D9- zf_HzL4B~~IM4lVKNSb>rpD-e6qwP`bQI9ON#H%PG7lHfD#1qQzUf6D~|S)VQA)`;I*{2 z?amWNy(b5vS1--(-DcCbA^1qD-wBUmrGm;>}+gQq1#l>9o6tsB)9$D<~S>D`x_fHtynla8<3(n zx0j2}9eC4qChbf7Prfu-;V=akF9kILY3WP`eS$C5Ia^37uGmKAv&1QIWWg`1$)eE)~p@5*#&%2tkHh4%)?0M%FsvWMa` zE8VImVJzxjVTC@%8#W1qM5Qlbdq#f7CRJf+#6ovL&NZQ!%k8TwQ@c1d!;9DH#`t1D zGh=P@nb7L2K6BcjCXUjLTD~~jJ*#OFU!Y=KT>`4bt#zA?vh8Y|jGyF}%R!Eo}`Cs~FIisLGy2 z^t}j@PZGWO;nKR(*W=G#>(5wk>w-2#U_9U}<->U_C;q}cS0d^*&&G%VdxWyEboZ+N zPh<&k{{0HSPKrA>g@eJ!`NC=+NII; zMe3K^M^MtnmYG1;6wlF0#GLn%sv0TrU~8{IcmZAQ9Z%pKXR(YNfDNk^2jM2|M}8;% zXZSeUn;eab-U<88-vpH98ppnOY5v-3qvhdy|FmXb8EWRHC94+!lTZgNWJT3IEetV0 zk(%Vay}EyCPSNvZWlEEOLWYwxiihz*BcL)N<)ybxxRbRi_tt;VP>acZxNukOK` z-Xz4nD=1bf{wNyb@J_tINj=6tN&%Dvh#++Fr6Y58BTt%`NXkM443)dszVlvCef>vJ zZ(+SpZN(FLzMTw`!SWqx2V-sumu7HwpZ+lRV3Nc^+wA5#wpNEPcav_XRelR7rstr} zk7JAa3x{x>@d+yIS@fvzjfEb-jDx?b!6}G(&w1L!5$F@W|HdEND}g(4#C4}UJG)$m zwr}yh=`n!0fP5C77!0lGw7-^;z<$zbxy4r1z!(r_D|)-HCu84g=Eju1LU#&AAT)&D z7XhvaSg1+#V7d#Pc&!`5`KK91t_r6!%9jregiwQPYYLu$S!4r=vGT{|vk_fbEj8lx zxoT;a!($vV-q`+*pi?)uB~*S{r@`AGiC088(U%yUW{xN}=bu1-F>somXgf;ZrrSsF z-S*oKJOYVINQ_h0zB^^Bky{bjd*ALnarOYvhn141hB@9HRe=YA>hN~iLc_P?<72iH z3w<#wV>bBW`8Mlke5nJR)8qX#w|&)cFeDnIAA#C%x2{{evm=7C-SGHP{Em)3{;UI(wAZ#hoR+@? z5xABTOs=J0Yywz^YzrRSs-^mPXiF8)B6xjYQ$SUtw4knX^ShfO_6vPq>UX}s)tj{u1ojJtL1xzi`Q^ql zd*KN!_Jg_WGwqMN`!p4MUEwTkt?^$-qrrXAYWgMdQ zR>$*pr)})gz^z*qpWp)PDv>GHYTt_!A-&eKw-lo?6H{8V5tamD~U@$<{P^ac+ zESa5R9pMB73>;^>vo3u<`(eUH^;UTnA4HFh#ObJmZrSm)Ze?7~a!lc&2N--0|c3nZ#Wkf3m39+@v|^q~mha zi7>eK$SJOs9jC`4JQw?%GrGv!yGxb4_U>Qpux4K4o28ht3;43*oRx}GAJ!C{;{JOG)i`}xKxh^fy# z!!md8uiN_jSHt1@Pa0syb$6*t%nsKU@9)9P;19>$jgW0{hit{TMZ+Lf&sz1{8BX4{f(Z)X=DH*H0fx9fho~t?CzApto9DAir$M{3=p`UI?PUbWn1ykNCI9Ckio}H!)mGptS!2j8 zdJdF}-wYYpO|@LB8uiUrgjX`j@Z$@A^Hk`lGT5ke(f2Bb+`fY^k_yUok}?vaDoUpK zK;r>7q}9v6)@`6vG1HAt@{HPUsB<5JKplyuaAQ?CShf1vFo2~3W?V|W`Vp-mbO_W; zS&z&2o!y5P@dg1Lj9*CaYhp)|N|W1($*>kRqw2*GDayza3M!r( zV{4`?&RbM1Wi$MHC3YL>v?4b-o}4&oxRED#i0|PobkS)owa`Dw`SKS3A&YI{CtHS5 zuv%^JsNcnLtp%eEGOI+7z&q zADY%V)-XVdX~IOs98y@4a6)$%3sXBW7`IQ?IP-WSJSD?KlI@Xxz>~?xX=#hsO;tD4 zjP=)bq{py~==T?bCl>2MZj{;z1V#~<3jT3&h@Yb>R7XA_EOmkQl!dUFYQetG4TKN~ z)NwC}!zoVH7K>7Z$$?OA!A6zCvsH5mZhlMWGbG99+(E}SlTP0FfggH0i2rc#y~!au z7)e-Z%2J;~5#7b5S)HUSooe<>u`n|7nv&TM@*xrJ;joN2T_Mcm`a$+29c&FFeceY; z0KrLzU;HlDu8nxs@Ou|DojFDjKVMZjo~CCj+Tn>fzQ?3rMg06dd=r+8B28}gC zIxaFu>QrrC)Z{XT&wcPf7Ml}$KW;l1{f)V#2NelL>n_HGgto`(&>vA9z=t#<`TafX zOWlN#eg8QWi#a`}qGPQ&H9>QIj`6!}Je#1Urn+&MxVJU%)a&6J=cJ?ScJ@645RV># zR{eTPTnRyZ{+!uQv9ezo4}z^4>@vD`&^(3mRxb{OWUGsE?%WS$Lr0$QO2kt2#QWCH zq4;dweyiYR_$dvfF<%nd49F5h%l9TFYWL23ko-kkviX6iJmN)<-+$GEXXTb5$7Rf5 zlI;AaHOjW9taekLQ|$she@3K^lo48@?DU zf@r37fiKz5Fu!hib%ayrR+0RDu2K@c((k5P-onAucx>~2Rk(B@rCpDrYec?W>76ct ztzX*xUMTRbbZh~|Qnrzlz&JeYpwm5aw2*5ARj;9)VXg|}@L!HW#eECbKWK>fx5C=ZMIOCb(`RxMM~NUT?5{ukf3PseaAVrAKx z^WSa6uG(z*Rw&}aU9hQSnW1zZy3R)z!vSweTsYij;dAQWrW@jND)_8*bfg~p+A7QP zbFGuWC5nEhCt;DBe3gEHocBIOpssT2cKhk#aGFQ*=?AWDpSQJ>j~oolWgup`d0!jQ zZkC5db7T|yThGw?))RDyI)|2ZQeVQ~rI7+JQW>mVJRs$rD5d=L8R?WOr(C6BXNV<~ z93@1Z&<&@hkvfgNV=^^m()FH8An@=Df5EI%zJqgr66NFzw?>)yr?SVT9Bou7Pe68b z)K2D;&Dq>15;*%*U{C;!v6VAyFmaQjY<5=u^{CeV1?^)0SR@Y@IK+A6s>_zB z$R-8Ib++mZQus|cz}fGENdA-Mz%{$T_ve9A0s&I4V-l&TF{GXFOU)GJv*Wv~ZLaAQmT^grN!6}FfsU$*A zeHTee1VE=AePk6Z9GsloQD+nuc98vSbg=LR)?-a>ss9n)<==}*Q2A%fBmM#o!P_Ct z%ZGF2>+_88VXFAo|4jIU|0lOyrEh;eqyBj5(0BudqqZNrq5~|tPZVCG)3!+aW!f~%H=U5@vc@MmnOF--GMulEx4 zY2*=XofNujekyYJ-}D$JSz1O37JZ{M$Id$*AG;=W3Pc|hpzuXxhRXxBolV6yr_Fn2 zc^P^XoZ{F#VU!fhNR0cFmm7F0C?w=of`HxbVd2;2=kFILeGoQ6*<=N|uYS6k7CRM( zNO2y47L#7of$Thdx8vqA_*5rO--l#1KkOhG{F`MqrzxgF4_z*2G>NW(*+7t1eA(ni z#hCWAgI#$v#TN|;K~{I#($Hvxm(*{E{(KA?rl7B;Ml=6tksbRBA`TB2ri zB_9b)tOuzC*bw((1l0qJ+S@n*$|Bo*`1|%tt$O^|$51(IEe}(HCjD+s(`_`o;QN`44 z`To$6^x1SgRz;4vYwy^t%lLX8%gf2k(o&fY1KLyD@m{>^4S^7jhQzY2s4){GKbV_W z*dkHAsj1IYD|Q!lXkKsB03dyS^&TE50CjS0>dLmg@83{gPM71iog(KzO5TLDFRPgi z4@Xp`pr@nM z>wj+ad;{H9#@I+SloOgdD3JKrW10?Jg;cb{8Q3KCk(jY==j@-eULkGS2Km0bE(5OR z(xw^#>H<8=iah6MpY~cfBaAhh2LiWPBHafKo3qU{ygs=8IFny7adA%D-eb!QPPURrI z-#^7yQLMUMy>d$oNIegeFNx+`+uE*$0Fe!RaV*BT1bGH^3!QLal>dA~(@k~7(mG(M z38TEJfdGhG&o_txtx^J`vK@~xAQeF2Fc;x~1b{I_{+=T`^7k1adHkBWBm^i4FI5(X_{3m0;O_(m%&5g@6S3sA%~bMqsA6BjbpJyHwVx?kkSrDmkSUYh5>@_`zX-IeS z2KBPv#*pY#<__Wbx-0D;3EPnB#oOj0w@qg^;_aG!dAsROY2kjI z*8X5UJ^Q=R>P5R`fR+%r1UKWd!5iztbWz!dB7!jP$^{2%R(kV;^!upWC|3w)S(TWv}rL!-=RuxLtHzPf~^DcD4Mp0@jJLA3@H5`_3n#%dP zLW-hF-nJnUazfd-x!KrkAT?4^tkf?fL2&2uS5@IMIBhxEA}#ON35Q2JweeO+)$tC( z-q1|MKKedO87&!e>D=Qisf+0?`w!rxYn@3_?*`P#8!RI4(;4YIhyXLb${Dtih8v=2 zYJ8zc-V2gWcJ-mRz!1w#I-F+m#2?-yb%`w0x{c+g;zy{?H#An$q;`#;dVT%zjY8OmR#^&d=>lXgr1C3k_44;W3WPK6nipyNB zEuyRQ3qpl{`aAsQ+Nl@Wo%gxis0NuCpbZ7=YCCTAtNOnsesbo8t+CX~2w4E`IA;v9r{YHn z3?+ZazM`KaWdFMFVSafDu%K+fkL4++s_&bJhM9NM^ev{%p_UDu%_Uwk92Gv-2w(nd zO*#!;Vb^KoPBmzcuz@!lolj;kWPIKR~5=XmELnYY)*%$ZgO=!pLIa6jym| z{=4TFcVRzvW*w4*p2TlRpf;sEGWqVN{XtQmd=im{Pj%CdrkCVX8lO|rb_a!loU#>mFBvWxC#Sli`oIEVbYF@a!?z|BK+0sfyRZoT^M2c=!sqs=&aac&A|;pO5f6L76OOPfE(}PQqVRM=e94Had!Ar|dJV&y`#Qq*8Jgh_=%>E7Kfy}J5%!GW+=43lSMMpEVm|cmMN-xn` zIw2E5z^KvZ@*K$G=A@Zd#er&f3b-2BI#3P)&VIB(_YXlQ=78rv4#edfxxx!~ zTPLJ71I^E-9a`PrgtL8<-yovZJTTgcFjrd2SM!J^GfBKS4|%%y6DzCDP`NK5U_cn2 z4Ss$BnHj~$=(so%$(dLuZKes9`m&5Ze_2ezqEGa2_*6vJKDwpFu8TDI2 z1}*okCFZ-0lgVSfV`z*E`6qndbMR@)Vs|Dw?Ey*@P;F{FUnb~)+~Q(Pi6w`B;#rb}7h|CL&>s`=hz&uAcPHFmu{3IKovZ zG-VOmU8j3P3%^RA^4jr0#4?>Jt8>Wlg~|g(e5@?7ph^zs^rXr+d$`)`M7EHCPS1dA z7xUv%y7%w)&CZAD#EV}3zYs3JE>N=lrHGqVWQx-fH zEr17RZal~|ksH34za)abTFq;K;*zk2rB!FZF1gKZl7~r`e;eP-`%YA&+JP(q8h{5b zf>#AaLQt&9e55y_uqx55NnAuRqz^g2 z@G5j}4!hrnCl-{~+xL>uls`Vb0fr3x!EV>ywJ)Zbq+P8PCBsA{jSoOqmtS9J_>_Hx zKy}yCQO;l|rS zL}KSil2;D0M&sF_<{essGp$J6;2z_R7huq$b6uZBgK<3k){Wj>=cfBJ&hv7ZS_LTe z)%13z@#zbe5J(VK3$*b39lhA8a96Tv78WqQCuRkU0s&K)XF5#!4%qy6wAy)Uc>>$e z!m;;{&N1}Bf-;~`C`-RMpf%y%mba_oDDKQwi=kAqYDgbnf?*9aXe-NTM=Gp$(ugcV zDUzk$DkzkjP2+`{BrgmL{&?8!RAB2(z7Rs>9_0tyB8;Mp63N|9$7bY{Zw?`omq5z3 zX9B3Pj&ysb$Fb}5;C8dMsEYT?E>pwQ%y{*2JUjQ%{WBe~6`nJM8U>=cA;ui@OU_gy zO9xC8h-I1IC{GoMTvttTNWvAv{~SM(XzzN}F0|{N1&LlkUOl7ECd2=L0awA`rpB7? zYvN1X|7<2Y$L$csvjYrPF77x)v)p#O+gX7H*SB-3D<9we3}AQk-$PBHJRL z1hqq5)qV)C)Nc7HJU4B~?8^p{sa=guO{eo0*wR zfEK&A2TQ1(BkZG2ksH3fufTsVIH|^qUSqk+NwQo$2AA-H&zeXcy5o}D1&j)HCLlw= za@M4hef6X6D5Y1el-d`|C#cX-g9cKYESPAP#`4t57totG0gsjDrFt#Uv)dV7Fzzeg zR$RdMe;%-_n~)q>3mJu>iIP)8b#1!EUdDDt?`*_Oy_Q(%?u*e%onXjNfxq77%LOm7 zOGh&xBY_Y}Ja*ObFKe&NCPV-UZq26VPN`KU{r$UnJFG71-cc3U>~U-n?2YW=$IBQ2 z`(U-2gJhmnJR|gNyf&`#I|y{E;YtQ%g6w3_lu6iezIzz9%))a!2cj2y^GF=^rL92yzd znp8aq?ul35B~~8edk;~_@GCVsiUlkNkk9uULP6xKKFntWXYbHSIP6-lq`%ajn0>C{#}HLTw6HVKO6jYt_+?aQxv$UF!dnHg{d!+kr$$@6zDZ}{#uT%;1 z9B$9vjlLC@EAa#S?vbnVc_#U!?&T`K&HEzyZR4F5Dg-}a7jBvIFWZ#LN)D&%A2`cq%{|4l}Gfi5N%*fMgOCEGmqS3 zD>&*w5}vslA^j6W*caH1FR@Y}%7MR6r2+C% z|JtP6>7P&S(7Ei?Ru#5TA`KGl?udFo_~Md1$!-_OD(Qv1CK;`K`toOzi2Cgzx=fqh zA`}rBrjm-wi_@X=<9ce$(UPDNo&%<#O60!C+{d---NY5LU$j!dx8F`d>r>j^$MSh! zXoO#V#<^d6HaugY_vD15Ul_5V8zxZFI)BPBW$Kw<6A(1UfK&zvKuWVva?$qh!hmAj z$kQgg_hwy}YH**+=Rd6-nnLqe=zB%f6j<&bE;&mi`T}=DT+kZZ;XV8SXf1^|&~S$| zc4#4>XEfc#X}o;f2~1S-i)m(%oI27W`_WwD+}>BB$IUiqH!gLNs}k7?VFv9v=PwTm zj(=bsX|ccnZA$3YMZl*4K{H3dR=(XE@0jSfaMp3h>ZY zymc|gEvi;4yeDK@8Fm!|j(McdU0(xXfHMRzP1AudJY#AVZz$>pXa2k@2AM9<Fw=XRaVSHTXB!&}O0Rzly6hPD}(M~%C6h`#ak}63`M@c;bF>t6`&D#O^#_F+~#w@-#7v{83CVOGxO{NAg zqBWc7;p8mrhI;|Oj`FqTFnseBpqxiZ?}+A%kzQyVXez;Qc3V9FAa!*_$NQM4h3aVo ziY3K6F%Sw!L8;Huz0dpXDB-fuM}BDe+yKz#p(&z)88Yydk+3*@&PC79Fb>8UQ(|OT zFtZMLEp>_$y(u3SZKaZtAG`_@{8TPZG>PIUE0`2@c#E;pm9^=NH{P(IW_Y~5|ndh^H%(>YN z$fe|2zwvwwt+k0RLHT1*<&if5e{0EsdqXIccB?So8X#l>TpG|r+tQbtWhxzyu?;HF zZJC`<0&n8{Ge*lSrS-Rm&Ppw@jemKVYYAC-m}rR(d>C$_N@TV3j%eYs-kgM4Ro&Dh zyhyI~N>;J&0>jVru`{wkaO~>zJ4*40hi+MUl{mkdUe#wXp2>*#vX~vF46fwGe9n24 zab@3+`A7Bgh?&Hp8+-lqz^D6%^YJZJvr8|2gmIe|e6T7rRCQ>W`Qfsd2!=p6seUwGIKp9eXnCp)f3J-25+zgbR&W!jfkMo}UG z(rMK)xA$GzdG&Jf0SGY!>-!HuB4BzzWB0>Nl?7N++-H zKmK=B<3`SHJUs&cl3Ub(SRqudWZlHo-EYC9UB%Wpc<$uUYf1e1WHz)J-Z_PrfMj_q*nLVk;ne(=X`#nmQ?7Q z-@>T-8U32~_#6;cF|uFJJf4(s1G`RacL?*!9RC4UFg^=hYSXibMzD{dFM<6?cji#o z!o$a^tFC(I)d$1JPXH0(c?`&XKa65N2 z;GtcQ>h3*;=pB!6uH$ytybSTk*~R7&nDz27bfH3r!a#7jhN|RJ4Oq;;y>kIC^O?V> z_bjCtOUY+rF5h;3ZRQ}Lmh_&G{Q58{J5sC0YKuQ;e77YfvVzkwY&p+Ol4o#vH;cmf znhItcbORJ7vY2pSDW<4%MP@zL){wD9+B`*I!CJ_1w&=wKjg8hT#Gy~%7^rg183t>O z=ELbNS!uE6bS@a-*!s!@juB$F#P&Ow#~%H+)MRC*c=&NOI<@&?Hgd<3^7ic=W}x-w z=PKB%9k{XtXXz4Od;MX0-2+LaMto&hF_hqtw|Sc};*JYV_aO?1pZ)DGzMXG%v?24} zaeEW^!n(qu{gXCvhwEuAI)d--7EnK^^8&jlJ1cS>rbRl;`(HlvBgaChB=;TfxID|B$k0%B-v!1*c!S#7914%K}No31ECyN%keYM42rJASjS zF#KQfD1M$FM{a3qd;w)0d~KTAGd*#*FxPT(R|TacMV@`MyaN-h3X!H354+*9wKUa9 zS}wpWitJDU`aXQiE-6j!|h%#kvdMsMIgMUH>WWeEQ#m_pnH}_5CkK2iNzx1OjBv!6z~C;>_cC0;xy6cK^eV&xj>{s; z16Sz$@-4}8z_->k-tC-F?YRi;{1Bqbn+NUj&IWWD7wIpM&r3R6Ne%r%1q+)889-GL z1F|jkRj@MdCf6xk1~9jrWM(L%DK@Zw_!2QW;3Rsd@hARShY@^8op5Pw-byy`&bND+pKSFtm zOn3@DSl1Hu^Es#W`yF|Ut4S6m1$|eIr24g&%P&^Gq>>$fNj}R_1%jO7h`{@r-xER2 zaU#;)%VMA|o9->cGB|`R2~v&=#IKs)v1PF^?-vI-xwU$OR~!$l2BlIf1}UDBM3Dh~ z=*j`PyU5P|Je77&wZ_OKDkRKmnW6A7o82F zbU$HKZQ*halnz{aKZ(xGhG8`aak*L7{R0ms(wa1#{q3>id6eW9&&pNO-@2H{)an`g zd)4}viv7L(rCwy5a-)1}hbO0ax%MmhyL1nPt^AiA!R1CGNpk=+B(&u52Vb_>xDHYp zukvhPLjH>6rM9${ejy_}@KBzNrrDnEbBvzJ-%;bP@!B4KY}e%eqh4~!^rSayq7dDT zKl{y#f^D=_{gQv?$7wmz3Rq(6ck*R&^9uogOxrJHN9a-+IEH}Eo3DTC=CjX*$bo@3 z8~3p_9?3j70WdwzoHO7n{(+&?)icueYo_F;#LJ#Q0a67hS>!yADPP>z^Y1mqrxe~b z1hE@eCK*^A{ZX}9Y3du7Fj6rrfn%$4sESwA?6)6(`Hk zi<4HgtgD+>Mlg({8AkvB1XzP%000pG4QTT+fdiRlc?3kod7?f+q~SmiX6DA`f75N( o-IM%8o*ehr=#Iq=Q0BvwUBdJ3D { + console.log(`${DEBUG_PREFIX} DOMContentLoaded fired, initializing upload button...`); + let submitNum = 0; let maxSubmitNum = 1; const uploadButton = document.querySelector('.js-upload-button'); if (!uploadButton) { + console.warn(`${DEBUG_PREFIX} Upload button element (.js-upload-button) NOT found in DOM. Aborting.`); return; } + console.log(`${DEBUG_PREFIX} Upload button element found:`, uploadButton); const uploadButtonDisabled = document.querySelector('.js-upload-button-disabled'); const uploadUrl = uploadButton.dataset.url; + console.log(`${DEBUG_PREFIX} Upload URL: ${uploadUrl}`); + console.log(`${DEBUG_PREFIX} Upload button dataset:`, JSON.stringify(uploadButton.dataset)); + + if (!uploadUrl) { + console.error(`${DEBUG_PREFIX} Upload URL is missing! Check data-url attribute on .js-upload-button`); + } + const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome'); const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container'); const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info'); @@ -31,6 +44,9 @@ document.addEventListener('DOMContentLoaded', () => { const maxFilesize = parseInt(uploadButton.dataset.maxFilesize || 0, 10); let hasErrors = false; + console.log(`${DEBUG_PREFIX} Config: maxUploaderConnections=${maxUploaderConnections}, maxFilesize=${maxFilesize}MB`); + console.log(`${DEBUG_PREFIX} DOM elements found: uploadWelcome=${!!uploadWelcome}, uploadInfoContainer=${!!uploadInfoContainer}, uploadInfo=${!!uploadInfo}, uploadCancel=${!!uploadCancel}`); + const updateUploadNumber = () => { if (uploadNumber) { uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`; @@ -65,23 +81,34 @@ document.addEventListener('DOMContentLoaded', () => { // Initialize Dropzone on the upload button Dropzone.autoDiscover = false; - const dropzone = new Dropzone(uploadButton, { - url: uploadUrl, - paramName: 'file', - maxFilesize: maxFilesize, // already in MB - parallelUploads: maxUploaderConnections, - clickable: uploadButton, - previewTemplate: '

      ', - addRemoveLinks: false, - autoProcessQueue: true - }); + console.log(`${DEBUG_PREFIX} Creating Dropzone instance...`); + + let dropzone; + try { + dropzone = new Dropzone(uploadButton, { + url: uploadUrl, + paramName: 'file', + maxFilesize: maxFilesize, // already in MB + parallelUploads: maxUploaderConnections, + clickable: uploadButton, + previewTemplate: '
      ', + addRemoveLinks: false, + autoProcessQueue: true + }); + console.log(`${DEBUG_PREFIX} Dropzone instance created successfully.`); + } catch (e) { + console.error(`${DEBUG_PREFIX} Failed to create Dropzone instance:`, e); + return; + } - dropzone.on('addedfile', () => { + dropzone.on('addedfile', (file) => { + console.log(`${DEBUG_PREFIX} File added: "${file.name}" (${file.size} bytes, type: ${file.type})`); Cl.mediator.remove('filer-upload-in-progress', removeButton); Cl.mediator.publish('filer-upload-in-progress'); submitNum++; maxSubmitNum = dropzone.files.length; + console.log(`${DEBUG_PREFIX} Queue: submitNum=${submitNum}, maxSubmitNum=${maxSubmitNum}, totalFiles=${dropzone.files.length}`); if (infoMessage) { infoMessage.classList.remove(hiddenClass); @@ -105,8 +132,14 @@ document.addEventListener('DOMContentLoaded', () => { updateUploadNumber(); }); + dropzone.on('sending', (file, xhr, formData) => { + console.log(`${DEBUG_PREFIX} Sending file: "${file.name}" to ${uploadUrl}`); + console.log(`${DEBUG_PREFIX} XHR readyState: ${xhr.readyState}`); + }); + dropzone.on('uploadprogress', (file, progress) => { const percent = Math.round(progress); + console.log(`${DEBUG_PREFIX} Upload progress: "${file.name}" ${percent}%`); const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; const fileItem = document.getElementById(fileId); let uploadInfoClone; @@ -136,6 +169,7 @@ document.addEventListener('DOMContentLoaded', () => { }); dropzone.on('success', (file, response) => { + console.log(`${DEBUG_PREFIX} Upload SUCCESS: "${file.name}"`, response); const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; const fileEl = document.getElementById(fileId); if (fileEl) { @@ -144,13 +178,16 @@ document.addEventListener('DOMContentLoaded', () => { if (response.error) { hasErrors = true; + console.error(`${DEBUG_PREFIX} Server returned error for "${file.name}": ${response.error}`); window.filerShowError(`${file.name}: ${response.error}`); } submitNum--; updateUploadNumber(); + console.log(`${DEBUG_PREFIX} Remaining uploads: ${submitNum}`); if (submitNum === 0) { + console.log(`${DEBUG_PREFIX} All uploads complete. hasErrors=${hasErrors}. Reloading...`); maxSubmitNum = 1; if (uploadWelcome) { @@ -178,6 +215,7 @@ document.addEventListener('DOMContentLoaded', () => { }); dropzone.on('error', (file, errorMessage) => { + console.error(`${DEBUG_PREFIX} Upload ERROR: "${file.name}"`, errorMessage); const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; const fileEl = document.getElementById(fileId); if (fileEl) { @@ -189,8 +227,10 @@ document.addEventListener('DOMContentLoaded', () => { submitNum--; updateUploadNumber(); + console.log(`${DEBUG_PREFIX} Remaining uploads after error: ${submitNum}`); if (submitNum === 0) { + console.log(`${DEBUG_PREFIX} All uploads complete (with errors). Reloading...`); maxSubmitNum = 1; if (uploadWelcome) { @@ -213,6 +253,14 @@ document.addEventListener('DOMContentLoaded', () => { } }); + dropzone.on('canceled', (file) => { + console.warn(`${DEBUG_PREFIX} Upload CANCELED: "${file.name}"`); + }); + + dropzone.on('complete', (file) => { + console.log(`${DEBUG_PREFIX} Upload COMPLETE: "${file.name}" status=${file.status}`); + }); + if (uploadCancel) { uploadCancel.addEventListener('click', (clickEvent) => { clickEvent.preventDefault(); @@ -238,5 +286,6 @@ document.addEventListener('DOMContentLoaded', () => { } // Fire custom event after scripts have been executed + console.log(`${DEBUG_PREFIX} Dispatching filer-upload-scripts-executed event.`); document.dispatchEvent(new Event('filer-upload-scripts-executed')); }); diff --git a/filer/static/filer/js/base.js b/filer/static/filer/js/base.js index 09c5e0a61..f1b676b16 100644 --- a/filer/static/filer/js/base.js +++ b/filer/static/filer/js/base.js @@ -53,8 +53,12 @@ document.addEventListener('DOMContentLoaded', () => { }; const filterFiles = document.querySelector('.js-filter-files'); + console.log(`[Filer Search] Search input element (.js-filter-files): ${filterFiles ? 'found' : 'NOT found'}`); if (filterFiles) { + console.log(`[Filer Search] Current search value: "${filterFiles.value}"`); + filterFiles.addEventListener('focus', (event) => { + console.log('[Filer Search] Search input focused'); const container = event.target.closest('.navigator-top-nav'); if (container) { container.classList.add('search-is-focused'); @@ -62,6 +66,7 @@ document.addEventListener('DOMContentLoaded', () => { }); filterFiles.addEventListener('blur', (event) => { + console.log('[Filer Search] Search input blurred'); const container = event.target.closest('.navigator-top-nav'); if (container) { const dropdownTrigger = container.querySelector('.dropdown-container a'); @@ -72,6 +77,30 @@ document.addEventListener('DOMContentLoaded', () => { }); } + // Search form submission logging + const searchForm = document.querySelector('.js-filter-files-container'); + if (searchForm) { + console.log(`[Filer Search] Search form found. Action: "${searchForm.action}", Method: "${searchForm.method}"`); + searchForm.addEventListener('submit', (event) => { + const searchInput = searchForm.querySelector('.js-filter-files'); + const searchValue = searchInput ? searchInput.value : '(no input found)'; + const limitCheckbox = searchForm.querySelector('#limit_search_to_folder'); + const limitToFolder = limitCheckbox ? limitCheckbox.checked : false; + console.log(`[Filer Search] Form SUBMITTING: query="${searchValue}", limitToFolder=${limitToFolder}`); + console.log(`[Filer Search] Form action URL: ${searchForm.action}`); + + // Log all form data + const formData = new FormData(searchForm); + const params = {}; + for (const [key, value] of formData.entries()) { + params[key] = value; + } + console.log('[Filer Search] Form data:', JSON.stringify(params)); + }); + } else { + console.warn('[Filer Search] Search form (.js-filter-files-container) NOT found in DOM'); + } + // Focus on the search field on page load (() => { const filter = document.querySelector('.js-filter-files'); @@ -80,7 +109,10 @@ document.addEventListener('DOMContentLoaded', () => { const searchDropdown = container?.querySelector('.filter-search-wrapper .filer-dropdown-container'); if (filter) { - filter.addEventListener('keydown', function () { + filter.addEventListener('keydown', function (event) { + if (event.key === 'Enter') { + console.log(`[Filer Search] Enter key pressed. Search value: "${this.value}"`); + } const navContainer = this.closest(containerSelector); if (navContainer) { navContainer.classList.add('search-is-focused'); From e23579af006b866ea8af6e58e4f68fc9c2a8bd0c Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 8 Jun 2026 14:37:14 +0300 Subject: [PATCH 16/51] BEN-2954: fix new line error --- filer/admin/folderadmin.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 13edebcde..ba8c53452 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -54,7 +54,9 @@ Image = load_model(FILER_IMAGE_MODEL) -logger = logging.getLogger(__name__)class AddFolderPopupForm(forms.ModelForm): +logger = logging.getLogger(__name__) + +class AddFolderPopupForm(forms.ModelForm): folder = forms.HiddenInput() class Meta: From d7cd0c5410e847ee4f1a318d1e2e6f1e08b5b67b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 8 Jun 2026 14:56:16 +0300 Subject: [PATCH 17/51] BEN-2954: fix tests --- filer/models/virtualitems.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/filer/models/virtualitems.py b/filer/models/virtualitems.py index e65b39fd6..44fccc9bb 100644 --- a/filer/models/virtualitems.py +++ b/filer/models/virtualitems.py @@ -15,6 +15,8 @@ class DummyFolder(mixins.IconsMixin): is_smart_folder = True can_have_subfolders = False parent = None + pk = None + id = None _icon = "plainfolder" @property From d29f4a6f08eda300699c9195f6779dc6d66b33a0 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 8 Jun 2026 15:48:07 +0300 Subject: [PATCH 18/51] BEN-2954: test --- .gitignore | 3 +- filer/static/filer/js/addons/upload-button.js | 46 +++---------------- filer/static/filer/js/base.js | 24 +--------- .../static/filer/js/dist/filer-base.bundle.js | 2 + .../js/dist/filer-base.bundle.js.LICENSE.txt | 12 +++++ 5 files changed, 25 insertions(+), 62 deletions(-) create mode 100644 filer/static/filer/js/dist/filer-base.bundle.js create mode 100644 filer/static/filer/js/dist/filer-base.bundle.js.LICENSE.txt diff --git a/.gitignore b/.gitignore index eca0e10e0..4e08979de 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ .installed.cfg bin develop-eggs -dist +/dist downloads eggs parts @@ -14,6 +14,7 @@ tmp *.egg .DS_Store .sass-cache +node_modules .project .pydevproject .settings diff --git a/filer/static/filer/js/addons/upload-button.js b/filer/static/filer/js/addons/upload-button.js index f496ce4a4..09887831d 100644 --- a/filer/static/filer/js/addons/upload-button.js +++ b/filer/static/filer/js/addons/upload-button.js @@ -6,27 +6,19 @@ import Dropzone from 'dropzone'; /* globals Cl */ -const DEBUG_PREFIX = '[Filer Upload]'; - document.addEventListener('DOMContentLoaded', () => { - console.log(`${DEBUG_PREFIX} DOMContentLoaded fired, initializing upload button...`); - let submitNum = 0; let maxSubmitNum = 1; const uploadButton = document.querySelector('.js-upload-button'); if (!uploadButton) { - console.warn(`${DEBUG_PREFIX} Upload button element (.js-upload-button) NOT found in DOM. Aborting.`); return; } - console.log(`${DEBUG_PREFIX} Upload button element found:`, uploadButton); const uploadButtonDisabled = document.querySelector('.js-upload-button-disabled'); const uploadUrl = uploadButton.dataset.url; - console.log(`${DEBUG_PREFIX} Upload URL: ${uploadUrl}`); - console.log(`${DEBUG_PREFIX} Upload button dataset:`, JSON.stringify(uploadButton.dataset)); if (!uploadUrl) { - console.error(`${DEBUG_PREFIX} Upload URL is missing! Check data-url attribute on .js-upload-button`); + return; } const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome'); @@ -44,9 +36,6 @@ document.addEventListener('DOMContentLoaded', () => { const maxFilesize = parseInt(uploadButton.dataset.maxFilesize || 0, 10); let hasErrors = false; - console.log(`${DEBUG_PREFIX} Config: maxUploaderConnections=${maxUploaderConnections}, maxFilesize=${maxFilesize}MB`); - console.log(`${DEBUG_PREFIX} DOM elements found: uploadWelcome=${!!uploadWelcome}, uploadInfoContainer=${!!uploadInfoContainer}, uploadInfo=${!!uploadInfo}, uploadCancel=${!!uploadCancel}`); - const updateUploadNumber = () => { if (uploadNumber) { uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`; @@ -79,9 +68,13 @@ document.addEventListener('DOMContentLoaded', () => { Cl.mediator.subscribe('filer-upload-in-progress', removeButton); + // Prevent
      default navigation which can interfere with the file dialog + uploadButton.addEventListener('click', (evt) => { + evt.preventDefault(); + }); + // Initialize Dropzone on the upload button Dropzone.autoDiscover = false; - console.log(`${DEBUG_PREFIX} Creating Dropzone instance...`); let dropzone; try { @@ -95,20 +88,17 @@ document.addEventListener('DOMContentLoaded', () => { addRemoveLinks: false, autoProcessQueue: true }); - console.log(`${DEBUG_PREFIX} Dropzone instance created successfully.`); } catch (e) { - console.error(`${DEBUG_PREFIX} Failed to create Dropzone instance:`, e); + console.error('[Filer Upload] Failed to create Dropzone instance:', e); return; } dropzone.on('addedfile', (file) => { - console.log(`${DEBUG_PREFIX} File added: "${file.name}" (${file.size} bytes, type: ${file.type})`); Cl.mediator.remove('filer-upload-in-progress', removeButton); Cl.mediator.publish('filer-upload-in-progress'); submitNum++; maxSubmitNum = dropzone.files.length; - console.log(`${DEBUG_PREFIX} Queue: submitNum=${submitNum}, maxSubmitNum=${maxSubmitNum}, totalFiles=${dropzone.files.length}`); if (infoMessage) { infoMessage.classList.remove(hiddenClass); @@ -132,14 +122,8 @@ document.addEventListener('DOMContentLoaded', () => { updateUploadNumber(); }); - dropzone.on('sending', (file, xhr, formData) => { - console.log(`${DEBUG_PREFIX} Sending file: "${file.name}" to ${uploadUrl}`); - console.log(`${DEBUG_PREFIX} XHR readyState: ${xhr.readyState}`); - }); - dropzone.on('uploadprogress', (file, progress) => { const percent = Math.round(progress); - console.log(`${DEBUG_PREFIX} Upload progress: "${file.name}" ${percent}%`); const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; const fileItem = document.getElementById(fileId); let uploadInfoClone; @@ -169,7 +153,6 @@ document.addEventListener('DOMContentLoaded', () => { }); dropzone.on('success', (file, response) => { - console.log(`${DEBUG_PREFIX} Upload SUCCESS: "${file.name}"`, response); const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; const fileEl = document.getElementById(fileId); if (fileEl) { @@ -178,16 +161,13 @@ document.addEventListener('DOMContentLoaded', () => { if (response.error) { hasErrors = true; - console.error(`${DEBUG_PREFIX} Server returned error for "${file.name}": ${response.error}`); window.filerShowError(`${file.name}: ${response.error}`); } submitNum--; updateUploadNumber(); - console.log(`${DEBUG_PREFIX} Remaining uploads: ${submitNum}`); if (submitNum === 0) { - console.log(`${DEBUG_PREFIX} All uploads complete. hasErrors=${hasErrors}. Reloading...`); maxSubmitNum = 1; if (uploadWelcome) { @@ -215,7 +195,6 @@ document.addEventListener('DOMContentLoaded', () => { }); dropzone.on('error', (file, errorMessage) => { - console.error(`${DEBUG_PREFIX} Upload ERROR: "${file.name}"`, errorMessage); const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`; const fileEl = document.getElementById(fileId); if (fileEl) { @@ -227,10 +206,8 @@ document.addEventListener('DOMContentLoaded', () => { submitNum--; updateUploadNumber(); - console.log(`${DEBUG_PREFIX} Remaining uploads after error: ${submitNum}`); if (submitNum === 0) { - console.log(`${DEBUG_PREFIX} All uploads complete (with errors). Reloading...`); maxSubmitNum = 1; if (uploadWelcome) { @@ -253,14 +230,6 @@ document.addEventListener('DOMContentLoaded', () => { } }); - dropzone.on('canceled', (file) => { - console.warn(`${DEBUG_PREFIX} Upload CANCELED: "${file.name}"`); - }); - - dropzone.on('complete', (file) => { - console.log(`${DEBUG_PREFIX} Upload COMPLETE: "${file.name}" status=${file.status}`); - }); - if (uploadCancel) { uploadCancel.addEventListener('click', (clickEvent) => { clickEvent.preventDefault(); @@ -286,6 +255,5 @@ document.addEventListener('DOMContentLoaded', () => { } // Fire custom event after scripts have been executed - console.log(`${DEBUG_PREFIX} Dispatching filer-upload-scripts-executed event.`); document.dispatchEvent(new Event('filer-upload-scripts-executed')); }); diff --git a/filer/static/filer/js/base.js b/filer/static/filer/js/base.js index f1b676b16..25e67bec3 100644 --- a/filer/static/filer/js/base.js +++ b/filer/static/filer/js/base.js @@ -53,12 +53,9 @@ document.addEventListener('DOMContentLoaded', () => { }; const filterFiles = document.querySelector('.js-filter-files'); - console.log(`[Filer Search] Search input element (.js-filter-files): ${filterFiles ? 'found' : 'NOT found'}`); if (filterFiles) { - console.log(`[Filer Search] Current search value: "${filterFiles.value}"`); filterFiles.addEventListener('focus', (event) => { - console.log('[Filer Search] Search input focused'); const container = event.target.closest('.navigator-top-nav'); if (container) { container.classList.add('search-is-focused'); @@ -66,7 +63,6 @@ document.addEventListener('DOMContentLoaded', () => { }); filterFiles.addEventListener('blur', (event) => { - console.log('[Filer Search] Search input blurred'); const container = event.target.closest('.navigator-top-nav'); if (container) { const dropdownTrigger = container.querySelector('.dropdown-container a'); @@ -80,25 +76,9 @@ document.addEventListener('DOMContentLoaded', () => { // Search form submission logging const searchForm = document.querySelector('.js-filter-files-container'); if (searchForm) { - console.log(`[Filer Search] Search form found. Action: "${searchForm.action}", Method: "${searchForm.method}"`); searchForm.addEventListener('submit', (event) => { - const searchInput = searchForm.querySelector('.js-filter-files'); - const searchValue = searchInput ? searchInput.value : '(no input found)'; - const limitCheckbox = searchForm.querySelector('#limit_search_to_folder'); - const limitToFolder = limitCheckbox ? limitCheckbox.checked : false; - console.log(`[Filer Search] Form SUBMITTING: query="${searchValue}", limitToFolder=${limitToFolder}`); - console.log(`[Filer Search] Form action URL: ${searchForm.action}`); - - // Log all form data - const formData = new FormData(searchForm); - const params = {}; - for (const [key, value] of formData.entries()) { - params[key] = value; - } - console.log('[Filer Search] Form data:', JSON.stringify(params)); + // form submit handling }); - } else { - console.warn('[Filer Search] Search form (.js-filter-files-container) NOT found in DOM'); } // Focus on the search field on page load @@ -111,7 +91,7 @@ document.addEventListener('DOMContentLoaded', () => { if (filter) { filter.addEventListener('keydown', function (event) { if (event.key === 'Enter') { - console.log(`[Filer Search] Enter key pressed. Search value: "${this.value}"`); + // Enter key pressed } const navContainer = this.closest(containerSelector); if (navContainer) { diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js new file mode 100644 index 000000000..5a81c3094 --- /dev/null +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see filer-base.bundle.js.LICENSE.txt */ +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n

      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 literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fa-solid-900.svg b/filer/static/filer/fonts/fa-solid-900.svg new file mode 100644 index 000000000..00296e959 --- /dev/null +++ b/filer/static/filer/fonts/fa-solid-900.svg @@ -0,0 +1,5034 @@ + + + + +Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/filer/static/filer/fonts/fa-solid-900.ttf b/filer/static/filer/fonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..25abf389e22db851b03dd14d87ca10acb8b6b44b GIT binary patch literal 202744 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 R_Uou~eShdq`k`O*{{v{mwVeO} literal 0 HcmV?d00001 diff --git a/filer/static/filer/fonts/fa-solid-900.woff b/filer/static/filer/fonts/fa-solid-900.woff new file mode 100644 index 0000000000000000000000000000000000000000..23ee663443a7c6d2393dbcb713b07c566f40c925 GIT binary patch literal 101648 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

  • '),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template").innerHTML||"",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file diff --git a/filer/static/filer/js/dist/filer-base.bundle.js.LICENSE.txt b/filer/static/filer/js/dist/filer-base.bundle.js.LICENSE.txt new file mode 100644 index 000000000..ce72ecda9 --- /dev/null +++ b/filer/static/filer/js/dist/filer-base.bundle.js.LICENSE.txt @@ -0,0 +1,12 @@ +/*! +* Mediator.js Library v0.11.0 +* https://github.com/ajacksified/Mediator.js +* +* Copyright 2018, Jack Lawson +* MIT Licensed (http://www.opensource.org/licenses/mit-license.php) +* +* For more information: http://thejacklawson.com/2011/06/mediators-for-modularized-asynchronous-programming-in-javascript/index.html +* Project on GitHub: https://github.com/ajacksified/Mediator.js +* +* Last update: 22 Mar 2018 +*/ From 78dd96543f4f4e9a1fa706d430434f6ca89f4bc6 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 8 Jun 2026 16:03:51 +0300 Subject: [PATCH 19/51] BEN-2954: fix clipboard --- filer/static/filer/js/addons/dropzone.init.js | 2 +- filer/static/filer/js/dist/filer-base.bundle.js | 2 +- filer/templates/admin/filer/folder/directory_listing.html | 4 +++- filer/templates/admin/filer/folder/legacy_listing.html | 4 +++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/filer/static/filer/js/addons/dropzone.init.js b/filer/static/filer/js/addons/dropzone.init.js index dd49e3806..6c35f9768 100644 --- a/filer/static/filer/js/addons/dropzone.init.js +++ b/filer/static/filer/js/addons/dropzone.init.js @@ -74,7 +74,7 @@ document.addEventListener('DOMContentLoaded', () => { paramName: 'file', maxFiles: 1, maxFilesize: dropzone.dataset.maxFilesize, - previewTemplate: document.querySelector(dropzoneTemplate).innerHTML || '', + previewTemplate: document.querySelector(dropzoneTemplate)?.innerHTML || '
    ', clickable: false, addRemoveLinks: false, init: function () { diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index 5a81c3094..503581a57 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template").innerHTML||"",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file diff --git a/filer/templates/admin/filer/folder/directory_listing.html b/filer/templates/admin/filer/folder/directory_listing.html index a748d0b60..c4a336a04 100644 --- a/filer/templates/admin/filer/folder/directory_listing.html +++ b/filer/templates/admin/filer/folder/directory_listing.html @@ -67,7 +67,9 @@ {% endif %} {% endblock %} -{% block sidebar %}{% endblock %} +{% block sidebar %} + {% include "admin/filer/tools/clipboard/clipboard.html" %} +{% endblock %} {% block content_title %}

     

    diff --git a/filer/templates/admin/filer/folder/legacy_listing.html b/filer/templates/admin/filer/folder/legacy_listing.html index 73beae30f..50cc1af34 100644 --- a/filer/templates/admin/filer/folder/legacy_listing.html +++ b/filer/templates/admin/filer/folder/legacy_listing.html @@ -70,7 +70,9 @@ {% endif %} {% endblock %} -{% block sidebar %}{% endblock %} +{% block sidebar %} + {% include "admin/filer/tools/clipboard/clipboard.html" %} +{% endblock %} {% block content_title %}

     

    From 98d367ebb0fd7b0e015b8fc2a39b20ac7fc6220b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 8 Jun 2026 16:22:41 +0300 Subject: [PATCH 20/51] BEN-2954: fix dropzone --- filer/static/filer/js/addons/table-dropzone.js | 3 +++ filer/static/filer/js/dist/filer-base.bundle.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index 934a3e663..1f4ee09ca 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -79,6 +79,9 @@ document.addEventListener('DOMContentLoaded', () => { if (dropzones.length && Dropzone) { Dropzone.autoDiscover = false; dropzones.forEach((dropzoneElement) => { + if (dropzoneElement.dropzone) { + return; + } const dropzoneUrl = dropzoneElement.dataset.url; const dropzoneInstance = new Dropzone(dropzoneElement, { url: dropzoneUrl, diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index 503581a57..9556f58cb 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file From 6d8486a0142492b24f281778650af9ea25340871 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 8 Jun 2026 16:47:51 +0300 Subject: [PATCH 21/51] BEN-2954: use filer tree --- .../filer/folder/choose_copy_destination.html | 72 +++--- .../filer/folder/choose_move_destination.html | 63 ++--- .../filer/folder/destination_tree_field.html | 220 ++++++++++++++++++ 3 files changed, 270 insertions(+), 85 deletions(-) create mode 100644 filer/templates/admin/filer/folder/destination_tree_field.html diff --git a/filer/templates/admin/filer/folder/choose_copy_destination.html b/filer/templates/admin/filer/folder/choose_copy_destination.html index 3bd73f5bc..38437b9de 100644 --- a/filer/templates/admin/filer/folder/choose_copy_destination.html +++ b/filer/templates/admin/filer/folder/choose_copy_destination.html @@ -1,5 +1,5 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} +{% extends "admin/filer/base_site.html" %} +{% load i18n static filer_admin_tags %} {% block breadcrumbs %} {% include "admin/filer/breadcrumbs.html" %} @@ -14,8 +14,6 @@ {% block extrahead %} {{ block.super }} - - {% endblock %} {% block content %} @@ -25,52 +23,36 @@ {% translate "Take me back" %} {% else %} - {% if not destination_folders %} -

    {% blocktrans %}There are no destination folders available.{% endblocktrans %}

    + {% if not to_copy %} +

    {% blocktrans %}There are no files and/or folders available to copy.{% endblocktrans %}

    {% else %} - {% if not to_copy %} -

    {% blocktrans %}There are no files and/or folders available to copy.{% endblocktrans %}

    - - {% else %} -

    {% blocktrans %}The following files and/or folders will be copied to a destination folder (retaining their tree structure):{% endblocktrans %}

    -
      {{ to_copy|unordered_list }}
    -
    - {% csrf_token %} -
    - {% for f in files_queryset %} - - {% endfor %} - {% for f in folders_queryset %} - - {% endfor %} - - -

    - - -

    - {{ copy_form.as_p }} +

    {% blocktrans %}The following files and/or folders will be copied to a destination folder (retaining their tree structure):{% endblocktrans %}

    +
      {{ to_copy|unordered_list }}
    + + {% csrf_token %} +
    + {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + + + + {% include "admin/filer/folder/destination_tree_field.html" %} - + {{ copy_form.as_p }} + + - - {% endif %} +
    + {% endif %} {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/choose_move_destination.html b/filer/templates/admin/filer/folder/choose_move_destination.html index c59dfb385..93b875368 100644 --- a/filer/templates/admin/filer/folder/choose_move_destination.html +++ b/filer/templates/admin/filer/folder/choose_move_destination.html @@ -1,5 +1,5 @@ -{% extends "admin/base_site.html" %} -{% load i18n static %} +{% extends "admin/filer/base_site.html" %} +{% load i18n static filer_admin_tags %} {% block breadcrumbs %} {% include "admin/filer/breadcrumbs.html" %} @@ -14,8 +14,6 @@ {% block extrahead %} {{ block.super }} - - {% endblock %} {% block content %} @@ -25,48 +23,33 @@ {% translate "Take me back" %}
    {% else %} - {% if not destination_folders %} -

    {% blocktrans %}There are no destination folders available.{% endblocktrans %}

    + {% if not to_move %} +

    {% blocktrans %}There are no files and/or folders available to move.{% endblocktrans %}

    {% else %} - {% if not to_move %} -

    {% blocktrans %}There are no files and/or folders available to move.{% endblocktrans %}

    - - {% else %} -

    {% blocktrans %}The following files and/or folders will be moved to a destination folder (retaining their tree structure):{% endblocktrans %}

    -
      {{ to_move|unordered_list }}
    -
    {% csrf_token %} -
    - {% for f in files_queryset %} - - {% endfor %} - {% for f in folders_queryset %} - - {% endfor %} - - -

    -

    +

    {% blocktrans %}The following files and/or folders will be moved to a destination folder (retaining their tree structure):{% endblocktrans %}

    +
      {{ to_move|unordered_list }}
    + {% csrf_token %} +
    + {% for f in files_queryset %} + + {% endfor %} + {% for f in folders_queryset %} + + {% endfor %} + + + + {% include "admin/filer/folder/destination_tree_field.html" %} - + - - {% endif %} +
    + {% endif %} {% endif %} {% endblock %} diff --git a/filer/templates/admin/filer/folder/destination_tree_field.html b/filer/templates/admin/filer/folder/destination_tree_field.html new file mode 100644 index 000000000..beb9a7ba7 --- /dev/null +++ b/filer/templates/admin/filer/folder/destination_tree_field.html @@ -0,0 +1,220 @@ +{% load i18n %} +

    + + {% trans "Select a folder below." %} + +

    +
    + + + + + From 6ff4b236b2b00bc72d0bf8f06b69eda418f64344 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 10:33:15 +0300 Subject: [PATCH 22/51] BEN-2954: extract zip files check --- filer/admin/folderadmin.py | 9 +++++++++ filer/models/archivemodels.py | 9 +++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index ba8c53452..d6f4902fc 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -1291,12 +1291,20 @@ def rename_files(self, request, files_queryset, folders_queryset): rename_files.short_description = _("Rename files") def extract_files(self, request, files_queryset, folders_queryset): + if request.method != 'POST': + return None + from django.contrib.contenttypes.models import ContentType from ..models import Archive success_format = "Successfully extracted archive {}." files_queryset = files_queryset.filter( polymorphic_ctype=ContentType.objects.get_for_model(Archive).id) + + if not files_queryset.exists(): + self.message_user(request, _("No archive files were selected.")) + return None + # cannot extract in unfiled files folder if files_queryset.filter(folder__isnull=True).exists(): raise PermissionDenied @@ -1338,6 +1346,7 @@ def has_collisions(filer_file): request, _("%s: %s" % (f.actual_name, err_msg)) ) + return None extract_files.short_description = _("Extract selected zip files") diff --git a/filer/models/archivemodels.py b/filer/models/archivemodels.py index 019bac515..3bc657119 100644 --- a/filer/models/archivemodels.py +++ b/filer/models/archivemodels.py @@ -107,11 +107,13 @@ def _extract_zip(self, filer_file): file. It first creates the parent folder of the selected file if it does not already exist, similair to mkdir -p. """ + import posixpath zippy = zipfile.ZipFile(filer_file) entries = zippy.infolist() for entry in entries: full_path = to_unicode(entry.filename) - filename = os.path.basename(full_path) + # Use posixpath since zip files always use '/' as separator + filename = posixpath.basename(full_path) parent_dir = self._create_parent_folders(full_path) if filename: data = zippy.read(entry) @@ -119,9 +121,12 @@ def _extract_zip(self, filer_file): def _create_parent_folders(self, full_path): """Creates the folder parents for a given entry.""" - dir_parents_of_entry = full_path.split(os.sep)[:-1] + # Zip files always use '/' as path separator, regardless of OS + dir_parents_of_entry = full_path.replace('\\', '/').split('/')[:-1] parent_dir = self.folder for directory_name in dir_parents_of_entry: + if not directory_name: + continue parent_dir = self._create_folder( directory_name, parent_dir) return parent_dir From ff064cb08e37ab2cb43aaeed319b2b4b0c416d6f Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 13:47:52 +0300 Subject: [PATCH 23/51] BEN-2954: remove clipboard --- filer/admin/folderadmin.py | 50 +--- filer/static/filer/js/base.js | 29 +- .../static/filer/js/dist/filer-base.bundle.js | 2 +- filer/tests/admin.py | 266 +----------------- 4 files changed, 20 insertions(+), 327 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index d6f4902fc..5c22883b0 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -74,7 +74,7 @@ class FolderAdmin(FolderPermissionModelAdmin): save_as = True # see ImageAdmin actions = ['delete_files_or_folders', 'move_files_and_folders', 'copy_files_and_folders', 'resize_images', 'rename_files', - 'extract_files', 'move_to_clipboard', + 'extract_files', 'enable_restriction', 'disable_restriction'] if DJANGO_VERSION >= (5, 2): @@ -355,7 +355,6 @@ def get_urls(self): def directory_listing(self, request, folder_id=None, viewtype=None): if not request.user.has_perm("filer.can_use_directory_listing"): raise PermissionDenied() - clipboard = tools.get_user_clipboard(request.user) file_type = request.GET.get('file_type', None) if viewtype == 'images_with_missing_data': folder = ImagesWithMissingData() @@ -523,16 +522,6 @@ def directory_listing(self, request, folder_id=None, viewtype=None): items = list(itertools.chain(folder_qs, file_qs)) paginator = Paginator(items, FILER_PAGINATE_BY) - # Are we moving to clipboard? - if request.method == 'POST' and '_save' not in request.POST: - clipboard = tools.get_user_clipboard(request.user) - for f in file_qs: - if "move-to-clipboard-%d" % (f.id,) in request.POST: - if (f.is_readonly_for_user(request.user) or - f.is_restricted_for_user(request.user)): - raise PermissionDenied - tools.move_file_to_clipboard(request, [f], clipboard) - return HttpResponseRedirect(request.get_full_path()) selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME) # Actions with no confirmation @@ -583,9 +572,6 @@ def directory_listing(self, request, folder_id=None, viewtype=None): context = self.admin_site.each_context(request) context.update({ 'folder': folder, - 'clipboard_files': File.objects.filter( - in_clipboards__clipboarditem__clipboard__user=request.user - ).distinct(), 'paginator': paginator, 'paginated_items': paginated_items, 'virtual_items': virtual_items, @@ -772,44 +758,12 @@ def get_actions(self, request): del actions['delete_selected'] return actions - def move_to_clipboard(self, request, files_queryset, folders_queryset): - """ - Action which moves the selected files to clipboard. - PBS: Only moves files, not folders. Checks has_multi_file_action_permission. - """ - if request.method != 'POST': - return None - - if not has_multi_file_action_permission( - request, files_queryset, - Folder.objects.none()): - raise PermissionDenied - - clipboard = tools.get_user_clipboard(request.user) - # We define it like that so that we can modify it inside the - # move_files function - files_count = [0] - - def move_files(files): - files_count[0] += tools.move_file_to_clipboard(request, files, clipboard) - - move_files(files_queryset) - if files_count[0] > 0: - self.message_user(request, - _("Successfully moved %(count)d files to clipboard.") % { - "count": files_count[0], }) - else: - self.message_user(request, - _("No files were moved to clipboard.")) - return None - - move_to_clipboard.short_description = _("Move selected files to clipboard") def files_set_public_or_private(self, request, set_public, files_queryset, folders_queryset): """ Action which enables or disables permissions for selected files and - files in selected folders to clipboard (set them private or public). + files in selected folders (set them private or public). """ if not self.has_change_permission(request): diff --git a/filer/static/filer/js/base.js b/filer/static/filer/js/base.js index 25e67bec3..9c7f34d6f 100644 --- a/filer/static/filer/js/base.js +++ b/filer/static/filer/js/base.js @@ -236,22 +236,23 @@ document.addEventListener('DOMContentLoaded', () => { }); if (dropdown) { - dropdown.addEventListener('click', (clickEvent) => { - if (clickEvent.target.tagName === 'A') { - const li = clickEvent.target.closest('li'); - const targetIndex = Array.from(dropdown.querySelectorAll('li')).indexOf(li) + 1; - - clickEvent.preventDefault(); - - if (actionsSelect && actionsGo) { - const options = actionsSelect.querySelectorAll('option'); - if (options[targetIndex]) { - options[targetIndex].selected = true; - } - actionsGo.click(); + dropdown.addEventListener('click', (clickEvent) => { + if (clickEvent.target.tagName === 'A') { + const li = clickEvent.target.closest('li'); + const targetIndex = Array.from(dropdown.querySelectorAll('li')).indexOf(li) + 1; + + clickEvent.preventDefault(); + + if (actionsSelect && actionsGo) { + const options = actionsSelect.querySelectorAll('option'); + if (options[targetIndex]) { + actionsSelect.value = options[targetIndex].value; + options[targetIndex].selected = true; } + actionsGo.click(); } - }); + } + }); } actionsMenu.addEventListener('click', (e) => { diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index 9556f58cb..f4aa57036 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n
    '),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file diff --git a/filer/tests/admin.py b/filer/tests/admin.py index 0f9f67625..c064f94fb 100644 --- a/filer/tests/admin.py +++ b/filer/tests/admin.py @@ -23,9 +23,9 @@ from filer.tests.helpers import ( get_user_message, create_superuser, create_folder_structure, create_image, move_action, - move_to_clipboard_action, paste_clipboard_to_folder, get_dir_listing_url, + get_dir_listing_url, filer_obj_as_checkox, get_make_root_folder_url, enable_restriction, - move_single_file_to_clipboard_action, SettingsOverride + SettingsOverride ) from filer.utils.checktrees import TreeChecker from filer import settings as filer_settings @@ -261,42 +261,6 @@ def test_file_upload_no_duplicate_files(self, extra_headers={}): self.assertIn(errormsg, response.content.decode()) self.assertEqual(clip.files.count(), 1) - def test_paste_from_clipboard_no_duplicate_files(self): - first_folder = Folder.objects.create( - name='first', site=Site.objects.get(id=1)) - - def upload(): - file_obj = dj_files.File(open(self.filename, 'rb')) - response = self.client.post( - reverse('admin:filer-ajax_upload'), - {'Filename': self.image_name, 'Filedata': file_obj, - 'jsessionid': self.client.session.session_key, }) - return Image.objects.all().order_by('-id')[0] - - uploaded_image = upload() - self.assertEqual(uploaded_image.original_filename, self.image_name) - - def paste(uploaded_image): - # current user should have one clipboard created - clipboard = Clipboard.objects.get(user=self.superuser) - response = self.client.post( - reverse('admin:filer-paste_clipboard_to_folder'), - {'folder_id': first_folder.pk, - 'clipboard_id': clipboard.pk}) - return Image.objects.get(pk=uploaded_image.pk) - - pasted_image = paste(uploaded_image) - self.assertEqual(pasted_image.folder.pk, first_folder.pk) - # upload and paste the same image again - second_upload = upload() - # second paste failed due to name conflict - second_pasted_image = paste(second_upload) - clipboard = Clipboard.objects.get(user=self.superuser) - # file should remain in clipboard and should not be located in - # destination folder - self.assertEqual(clipboard.files.count(), 1) - self.assertEqual(second_pasted_image.folder, None) - def test_filer_ajax_upload_file(self): self.assertEqual(Image.objects.count(), 0) file_obj = dj_files.File(open(self.filename, 'rb')) @@ -477,24 +441,6 @@ def test_validate_no_duplicate_folders_on_move(self): bar = Folder.objects.get(pk=bar.pk) self.assertEqual(bar.parent.pk, root.pk) - def test_move_to_clipboard_action(self): - # TODO: Test recursive (files and folders tree) move - - self.assertEqual(self.src_folder.files.count(), 1) - self.assertEqual(self.dst_folder.files.count(), 0) - url = get_dir_listing_url(self.src_folder) - response = move_to_clipboard_action( - self.client, self.src_folder, [self.image_obj]) - self.assertEqual(self.src_folder.files.count(), 0) - self.assertEqual(self.dst_folder.files.count(), 0) - clipboard = Clipboard.objects.get(user=self.superuser) - self.assertEqual(clipboard.files.count(), 1) - request = HttpRequest() - tools.move_files_from_clipboard_to_folder( - request, clipboard, self.src_folder) - tools.discard_clipboard(clipboard) - self.assertEqual(clipboard.files.count(), 0) - self.assertEqual(self.src_folder.files.count(), 1) def test_files_set_public_action(self): return @@ -864,127 +810,6 @@ def test_move_site_folder_to_core_destination_folder(self): assert Folder.objects.filter(parent=f1).count() == 0 f1.delete(to_trash=False) - def _get_clipboard_files(self): - clipboard, _ = Clipboard.objects.get_or_create( - user=self.user) - return clipboard.files - - def test_move_to_clipboard_from_root(self): - file_foo = File.objects.create( - original_filename='foo', folder=None, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - self.assertEqual( - self._get_clipboard_files().count(), 0) - - move_to_clipboard_action(self.client, 'unfiled', [file_foo]) - self.assertEqual( - self._get_clipboard_files().count(), 1) - - file_bar = File.objects.create( - original_filename='bar', folder=None, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - move_single_file_to_clipboard_action( - self.client, 'unfiled', [file_bar]) - self.assertEqual( - self._get_clipboard_files().count(), 2) - - def test_move_to_clipboard_from_site_folders(self): - foo = Folder.objects.create(name='foo', site=Site.objects.get(id=1)) - file_foo = File.objects.create( - original_filename='foo', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - self.assertEqual( - self._get_clipboard_files().count(), 0) - - move_to_clipboard_action(self.client, None, [foo]) - self.assertEqual( - self._get_clipboard_files().count(), 0) - - file_bar = File.objects.create( - original_filename='bar', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - move_to_clipboard_action(self.client, foo, [file_bar]) - self.assertEqual( - self._get_clipboard_files().count(), 1) - - file_baz = File.objects.create( - original_filename='baz', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - move_single_file_to_clipboard_action( - self.client, foo, [file_baz]) - self.assertEqual( - self._get_clipboard_files().count(), 2) - - def test_move_to_clipboard_from_core_folders(self): - foo = Folder.objects.create(name='foo', - folder_type=Folder.CORE_FOLDER) - file_foo = File.objects.create( - original_filename='foo_file', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - self.assertEqual( - self._get_clipboard_files().count(), 0) - response, _ = move_to_clipboard_action(self.client, None, [foo]) - self.assertEqual( - self._get_clipboard_files().count(), 0) - response, _ = move_to_clipboard_action(self.client, foo, [file_foo]) - # actions are not available if current view is core folder - self.assertEqual( - self._get_clipboard_files().count(), 0) - - response = move_single_file_to_clipboard_action( - self.client, foo, [file_foo]) - self.assertEqual( - self._get_clipboard_files().count(), 0) - - def test_move_from_clipboard_to_root(self): - bar_file = File.objects.create( - original_filename='bar_file', - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - clipboard, _ = Clipboard.objects.get_or_create( - user=self.user) - clipboard.append_file(bar_file) - self.assertEqual( - self._get_clipboard_files().count(), 1) - response = paste_clipboard_to_folder( - self.client, None, clipboard) - self.assertEqual(response.status_code, 403) - self.assertEqual( - self._get_clipboard_files().count(), 1) - - def test_move_from_clipboard_to_core_folders(self): - bar_file = File.objects.create( - original_filename='bar_file', - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - core_folder = Folder.objects.create( - name='foo', folder_type=Folder.CORE_FOLDER) - clipboard, _ = Clipboard.objects.get_or_create( - user=self.user) - clipboard.append_file(bar_file) - self.assertEqual( - self._get_clipboard_files().count(), 1) - response = paste_clipboard_to_folder( - self.client, core_folder, clipboard) - self.assertEqual(response.status_code, 403) - self.assertEqual( - self._get_clipboard_files().count(), 1) - - def test_move_from_clipboard_to_site_folders(self): - bar_file = File.objects.create( - original_filename='bar_file', - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - site_folder = Folder.objects.create( - name='foo', site=Site.objects.get(id=1)) - clipboard, _ = Clipboard.objects.get_or_create( - user=self.user) - clipboard.append_file(bar_file) - self.assertEqual( - self._get_clipboard_files().count(), 1) - response = paste_clipboard_to_folder( - self.client, site_folder, clipboard) - self.assertEqual(response.status_code, 302) - self.assertEqual( - self._get_clipboard_files().count(), 0) - self.assertEqual(len(site_folder.files), 1) def test_message_error_move_root_folder(self): site = Site.objects.get(id=1) @@ -1315,38 +1140,6 @@ def request_move_root_folder(self): bar = Folder.objects.create(name='bar', site=site) return move_action(self.client, foo_root, bar, [foo]) - def test_move_to_clipboard_from_site_folders_for_site_admins(self): - self._make_user_site_admin() - self_cls = TestFolderTypePermissionLayerForRegularUser - super(self_cls, self).test_move_to_clipboard_from_site_folders() - - def test_move_to_clipboard_from_site_folders(self): - foo = Folder.objects.create(name='foo', site=Site.objects.get(id=1)) - file_foo = File.objects.create( - original_filename='foo', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - self.assertEqual( - self._get_clipboard_files().count(), 0) - - move_to_clipboard_action(self.client, None, [foo]) - self.assertEqual( - self._get_clipboard_files().count(), 0) - - file_bar = File.objects.create( - original_filename='bar', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - move_to_clipboard_action(self.client, foo, [file_bar]) - self.assertEqual( - self._get_clipboard_files().count(), 1) - - file_baz = File.objects.create( - original_filename='baz', folder=foo, - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - move_single_file_to_clipboard_action( - self.client, foo, [file_baz]) - self.assertEqual( - self._get_clipboard_files().count(), 2) - def test_error_unallowed_restriction_change(self): self._make_user_site_admin() site = Site.objects.get(id=1) @@ -1915,49 +1708,6 @@ def test_make_subfolder_in_restricted(self): response = self.client.post(get_make_root_folder_url(), post_data) self.assertEqual(response.status_code, 403) - def test_move_from_clipboard_in_restricted(self): - bar_file = File.objects.create( - original_filename='bar_file', - file=dj_files.base.ContentFile(b'some data', name='data.bin')) - clipboard, _ = Clipboard.objects.get_or_create(user=self.user) - clipboard.append_file(bar_file) - response = paste_clipboard_to_folder( - self.client, self.folders['foo'], clipboard) - self.assertEqual(response.status_code, 403) - - def test_move_from_restricted_to_clipboard(self): - clipboard, _ = Clipboard.objects.get_or_create(user=self.user) - self.assertEqual(clipboard.files.count(), 0) - self.assertEqual(clipboard.clipboarditem_set.count(), 0) - - response, url = move_to_clipboard_action( - self.client, self.folders['foo'], [self.files['foo_file']]) - - clipboard, _ = Clipboard.objects.get_or_create(user=self.user) - self.assertEqual(clipboard.files.count(), 0) - self.assertEqual(clipboard.clipboarditem_set.count(), 0) - self.assertEqual( - File.objects.filter(folder=self.folders['foo']).count(), 2) - - response = move_single_file_to_clipboard_action( - self.client, self.folders['foo'], [self.files['foo_file']]) - - clipboard, _ = Clipboard.objects.get_or_create(user=self.user) - self.assertEqual(clipboard.files.count(), 0) - self.assertEqual(clipboard.clipboarditem_set.count(), 0) - self.assertEqual( - File.objects.filter(folder=self.folders['foo']).count(), 2) - - def test_move_restricted_to_clipboard(self): - bar = Folder.objects.create( - name='bar', site=self.site) - bar_file = File.objects.create( - original_filename='bar_file', restricted=True, - file=dj_files.base.ContentFile(b'some data', name='data.bin'), folder=bar) - response = move_single_file_to_clipboard_action( - self.client, bar, [bar_file]) - self.assertEqual(response.status_code, 403) - def test_move_in_restricted(self): bar = Folder.objects.create(name='bar', site=self.site) bar_subfolder = Folder.objects.create( @@ -2230,18 +1980,6 @@ def test_extract_files_shared_folder(self): [filer_obj_as_checkox(bar_zippy)]}) assert Folder.objects.get(id=self.bar.id).files.count() == 1 - def test_move_to_clipboard_from_shared_folder(self): - bar_file = File.objects.create( - original_filename='bar_file.txt', folder=self.bar, - file=dj_files.base.ContentFile(b'file', name='file.bin')) - response = move_to_clipboard_action( - self.client, self.bar, [bar_file]) - self.assertEqual(Clipboard.objects.all().get().files.count(), 0) - move_single_file_to_clipboard_action( - self.client, self.bar, [bar_file]) - self.assertEqual(Clipboard.objects.all().get().files.count(), 0) - - class TestSharedFolderFunctionality(TestCase): """ * only root folders can be shared From 53de0b643266fea9f955e548f9b822758a1b6aab Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 14:18:52 +0300 Subject: [PATCH 24/51] BEN-2954: filer archive model added --- filer/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filer/settings.py b/filer/settings.py index 5ac715abf..7d2c96520 100644 --- a/filer/settings.py +++ b/filer/settings.py @@ -67,7 +67,7 @@ # classes that I should check for when adding files FILER_FILE_MODELS = getattr( settings, 'FILER_FILE_MODELS', - (FILER_IMAGE_MODEL, 'filer.File')) + (FILER_IMAGE_MODEL, 'filer.Archive', 'filer.File')) _FALLBACK_STORAGE_BACKEND = 'django.core.files.storage.FileSystemStorage' From f504aefbae9bc0fafb9aa3689ab97a9ecfd85619 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 15:01:42 +0300 Subject: [PATCH 25/51] BEn-2954: test archive and browser reload after drag file upload --- filer/admin/folderadmin.py | 22 +++++++++++-- .../static/filer/js/addons/table-dropzone.js | 32 ++++++++++++++++--- .../static/filer/js/dist/filer-base.bundle.js | 2 +- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 5c22883b0..ff3392ef6 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -1248,12 +1248,18 @@ def extract_files(self, request, files_queryset, folders_queryset): if request.method != 'POST': return None - from django.contrib.contenttypes.models import ContentType from ..models import Archive success_format = "Successfully extracted archive {}." - files_queryset = files_queryset.filter( - polymorphic_ctype=ContentType.objects.get_for_model(Archive).id) + # Filter by zip file extension rather than polymorphic_ctype, + # because zip files may have been uploaded as plain File instances + zip_extensions = Archive._filename_extensions # ['.zip'] + from django.db.models import Q + extension_filter = Q() + for ext in zip_extensions: + extension_filter |= Q(original_filename__iendswith=ext) + extension_filter |= Q(file__iendswith=ext) + files_queryset = files_queryset.filter(extension_filter) if not files_queryset.exists(): self.message_user(request, _("No archive files were selected.")) @@ -1267,6 +1273,15 @@ def extract_files(self, request, files_queryset, folders_queryset): Folder.objects.none()): raise PermissionDenied + def _as_archive(filer_file): + """Convert a File instance to Archive so extract methods work.""" + if isinstance(filer_file, Archive): + return filer_file + archive = Archive() + archive.__dict__.update(filer_file.__dict__) + archive.extract_errors = [] + return archive + def is_valid_archive(filer_file): is_valid = filer_file.is_valid() if not is_valid: @@ -1290,6 +1305,7 @@ def has_collisions(filer_file): return len(collisions) > 0 for f in files_queryset: + f = _as_archive(f) if not is_valid_archive(f) or has_collisions(f): continue f.extract() diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index 1f4ee09ca..cf7e3868d 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -36,6 +36,24 @@ document.addEventListener('DOMContentLoaded', () => { let baseUrl; let baseFolderTitle; + // utility to update query string (same as upload-button) + const updateQuery = (uri, key, value) => { + const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i'); + const separator = uri.indexOf('?') !== -1 ? '&' : '?'; + const hash = window.location.hash; + uri = uri.replace(/#.*$/, ''); + if (uri.match(re)) { + return uri.replace(re, `$1${key}=${value}$2`) + hash; + } else { + return uri + separator + key + '=' + value + hash; + } + }; + + const reloadOrdered = () => { + const uri = window.location.toString(); + window.location.replace(updateQuery(uri, 'order_by', '-modified_at')); + }; + const updateUploadNumber = () => { if (uploadNumber) { uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`; @@ -249,23 +267,29 @@ document.addEventListener('DOMContentLoaded', () => { uploadNumber.classList.add(hiddenClass); } setTimeout(() => { - window.location.reload(); + reloadOrdered(); }, 1000); } else { if (uploadSuccess) { uploadSuccess.classList.remove(hiddenClass); } - window.location.reload(); + reloadOrdered(); } }, error: (file, error) => { - updateUploadNumber(); if (error === 'duplicate') { + // submitNum was never incremented for duplicates return; } + submitNum--; + updateUploadNumber(); + const fileEl = getElementByFile(file, dropzoneUrl); + if (fileEl) { + fileEl.remove(); + } hasErrors = true; if (window.filerShowError) { - window.filerShowError(`${file.name}: ${error.message}`); + window.filerShowError(`${file.name}: ${error.message || error}`); } } }); diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index f4aa57036..9a614eab2 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},B=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},$=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return B(this,1,e)[0]<<24>>24},getUint8:function(e){return B(this,1,e)[0]},getInt16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=B(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O(B(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z(B(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z(B(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){$(this,1,e,q,t)},setUint8:function(e,t){$(this,1,e,q,t)},setInt16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){$(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){$(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){$(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){$(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,B=a.isTypedArray,$="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return B(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):B(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return B(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return U[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=$.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:$,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=B(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},$=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=$(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+$(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?$(t):$(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":$(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},C=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",C),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",C),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,A(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,A();const n=_(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(A(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{window.location.reload()},1e3)):(m&&m.classList.remove(x),window.location.reload()))},error:(e,t)=>{A(),"duplicate"!==t&&(L=!0,window.filerShowError&&window.filerShowError(`${e.name}: ${t.message}`))}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},O=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,O,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,O,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,O=a.NATIVE_ARRAY_BUFFER_VIEWS,j=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(O||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!O},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};O?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},O=function(e){return U[e]},j=function(e){return encodeURIComponent(e).replace(q,O)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,O=/[\u0000\t\u000A\u000D #/:?@[\\]]/,j=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(O.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(j,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=Oe.call(r),r.searchParams=je.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Oe=function(){var e=S(this).query;return e?"?"+e:""},je=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},T=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),T(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=T(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=T(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,C();const n=T(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(C(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),A()))},error:(t,n)=>{if("duplicate"===n)return;e--,C();const r=T(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file From 45a4d022486d01d063b66e093373ac5fd731a5d3 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 15:16:25 +0300 Subject: [PATCH 26/51] BEN-2954: debug logs added --- filer/admin/folderadmin.py | 52 ++++++++++++++++--- .../static/filer/js/addons/table-dropzone.js | 12 ++++- .../static/filer/js/dist/filer-base.bundle.js | 2 +- 3 files changed, 56 insertions(+), 10 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index ff3392ef6..422757cc3 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -703,6 +703,7 @@ def response_action(self, request, files_queryset, folders_queryset): action = action_form.cleaned_data['action'] select_across = action_form.cleaned_data['select_across'] func, name, description = self.get_actions(request)[action] + logger.debug("[Action] Dispatching action=%s, func=%s", action, func.__name__) # Get the list of selected PKs. If nothing's selected, we can't # perform an action on it, so bail. Except we want to perform @@ -730,7 +731,11 @@ def response_action(self, request, files_queryset, folders_queryset): files_queryset = files_queryset.filter(pk__in=selected_files) folders_queryset = folders_queryset.filter( pk__in=selected_folders) + logger.debug("[Action] selected_files=%s, selected_folders=%s", + selected_files, selected_folders) + logger.debug("[Action] Calling %s with files_qs count=%d, folders_qs count=%d", + name, files_queryset.count(), folders_queryset.count()) response = func(self, request, files_queryset, folders_queryset) # Actions may return an HttpResponse, which will be used as the @@ -1246,11 +1251,19 @@ def rename_files(self, request, files_queryset, folders_queryset): def extract_files(self, request, files_queryset, folders_queryset): if request.method != 'POST': + logger.debug("[Extract] Skipping: request.method=%s (not POST)", request.method) return None from ..models import Archive success_format = "Successfully extracted archive {}." + logger.debug("[Extract] Starting extract_files action") + logger.debug("[Extract] files_queryset count=%d, pks=%s", + files_queryset.count(), + list(files_queryset.values_list('pk', flat=True))) + logger.debug("[Extract] files in queryset: %s", + list(files_queryset.values_list('pk', 'original_filename', 'file', 'polymorphic_ctype_id'))) + # Filter by zip file extension rather than polymorphic_ctype, # because zip files may have been uploaded as plain File instances zip_extensions = Archive._filename_extensions # ['.zip'] @@ -1261,22 +1274,35 @@ def extract_files(self, request, files_queryset, folders_queryset): extension_filter |= Q(file__iendswith=ext) files_queryset = files_queryset.filter(extension_filter) + logger.debug("[Extract] After extension filter: count=%d, pks=%s", + files_queryset.count(), + list(files_queryset.values_list('pk', 'original_filename', 'file'))) + if not files_queryset.exists(): + logger.warning("[Extract] No archive files found after filtering. " + "Extension filter used: %s", zip_extensions) self.message_user(request, _("No archive files were selected.")) return None # cannot extract in unfiled files folder if files_queryset.filter(folder__isnull=True).exists(): + logger.warning("[Extract] Cannot extract in unfiled files folder") raise PermissionDenied if not has_multi_file_action_permission(request, files_queryset, Folder.objects.none()): + logger.warning("[Extract] Permission denied for multi file action") raise PermissionDenied def _as_archive(filer_file): """Convert a File instance to Archive so extract methods work.""" if isinstance(filer_file, Archive): + logger.debug("[Extract] File pk=%s is already an Archive instance", filer_file.pk) return filer_file + logger.debug("[Extract] Converting File pk=%s (%s) to Archive instance " + "(polymorphic_ctype=%s)", + filer_file.pk, filer_file.original_filename, + filer_file.polymorphic_ctype) archive = Archive() archive.__dict__.update(filer_file.__dict__) archive.extract_errors = [] @@ -1284,6 +1310,7 @@ def _as_archive(filer_file): def is_valid_archive(filer_file): is_valid = filer_file.is_valid() + logger.debug("[Extract] is_valid_archive pk=%s: %s", filer_file.pk, is_valid) if not is_valid: error_format = "{} is not a valid zip file" message = error_format.format(filer_file.clean_actual_name) @@ -1292,6 +1319,7 @@ def is_valid_archive(filer_file): def has_collisions(filer_file): collisions = filer_file.collisions() + logger.debug("[Extract] has_collisions pk=%s: %s", filer_file.pk, collisions) if collisions: error_format = "Files/Folders from {archive} with names:" error_format += "{names} already exist." @@ -1307,15 +1335,23 @@ def has_collisions(filer_file): for f in files_queryset: f = _as_archive(f) if not is_valid_archive(f) or has_collisions(f): + logger.debug("[Extract] Skipping file pk=%s (invalid or collisions)", f.pk) continue - f.extract() - message = success_format.format(f.actual_name) - self.message_user(request, _(message)) - for err_msg in f.extract_errors: - messages.warning( - request, - _("%s: %s" % (f.actual_name, err_msg)) - ) + logger.debug("[Extract] Extracting file pk=%s (%s)", f.pk, f.original_filename) + try: + f.extract() + message = success_format.format(f.actual_name) + logger.info("[Extract] Success: %s", message) + self.message_user(request, _(message)) + for err_msg in f.extract_errors: + logger.warning("[Extract] Extract warning for %s: %s", f.actual_name, err_msg) + messages.warning( + request, + _("%s: %s" % (f.actual_name, err_msg)) + ) + except Exception as e: + logger.exception("[Extract] Exception extracting file pk=%s: %s", f.pk, e) + messages.error(request, _("Error extracting %s: %s" % (f.actual_name, str(e)))) return None extract_files.short_description = _("Extract selected zip files") diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index cf7e3868d..d2ffc7ba4 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -112,6 +112,7 @@ document.addEventListener('DOMContentLoaded', () => { parallelUploads: dropzoneElement.dataset[dataUploaderConnections] || 3, accept: (file, done) => { let uploadInfoClone; + console.log('[Filer DnD] accept:', file.name, 'url:', dropzoneUrl); Cl.mediator.remove('filer-upload-in-progress', destroyDropzones); Cl.mediator.publish('filer-upload-in-progress'); @@ -148,6 +149,7 @@ document.addEventListener('DOMContentLoaded', () => { submitNum++; maxSubmitNum++; + console.log('[Filer DnD] file accepted, submitNum:', submitNum, 'maxSubmitNum:', maxSubmitNum); updateUploadNumber(); done(); } @@ -240,8 +242,9 @@ document.addEventListener('DOMContentLoaded', () => { } } }, - success: (file) => { + success: (file, response) => { submitNum--; + console.log('[Filer DnD] success:', file.name, 'submitNum:', submitNum, 'response:', response); updateUploadNumber(); const fileEl = getElementByFile(file, dropzoneUrl); if (fileEl) { @@ -249,7 +252,9 @@ document.addEventListener('DOMContentLoaded', () => { } }, queuecomplete: () => { + console.log('[Filer DnD] queuecomplete: submitNum:', submitNum, 'hasErrors:', hasErrors); if (submitNum !== 0) { + console.warn('[Filer DnD] queuecomplete: submitNum is not 0, skipping reload'); return; } @@ -266,6 +271,7 @@ document.addEventListener('DOMContentLoaded', () => { if (uploadNumber) { uploadNumber.classList.add(hiddenClass); } + console.log('[Filer DnD] reloading after errors (1s delay)'); setTimeout(() => { reloadOrdered(); }, 1000); @@ -273,15 +279,19 @@ document.addEventListener('DOMContentLoaded', () => { if (uploadSuccess) { uploadSuccess.classList.remove(hiddenClass); } + console.log('[Filer DnD] reloading now via reloadOrdered'); reloadOrdered(); } }, error: (file, error) => { + console.error('[Filer DnD] error:', file.name, 'error:', error, 'submitNum:', submitNum); if (error === 'duplicate') { // submitNum was never incremented for duplicates + console.log('[Filer DnD] duplicate file, ignoring'); return; } submitNum--; + console.log('[Filer DnD] after error decrement, submitNum:', submitNum); updateUploadNumber(); const fileEl = getElementByFile(file, dropzoneUrl); if (fileEl) { diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index 9a614eab2..ba08a6131 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},U=function(e){return[255&e,e>>8&255]},O=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,U,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,O,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,O,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,U=l.DataView,O=a.NATIVE_ARRAY_BUFFER_VIEWS,j=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(O||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!O},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};O?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new U(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,U={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},O=function(e){return U[e]},j=function(e){return encodeURIComponent(e).replace(q,O)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,U=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,O=/[\u0000\t\u000A\u000D #/:?@[\\]]/,j=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),U.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(O.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(j,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Ue.call(r),r.search=Oe.call(r),r.searchParams=je.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Ue=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Oe=function(){var e=S(this).query;return e?"?"+e:""},je=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},T=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),T(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=T(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=T(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:t=>{e--,C();const n=T(t,p);n&&n.remove()},queuecomplete:()=>{0===e&&(C(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),A()))},error:(t,n)=>{if("duplicate"===n)return;e--,C();const r=T(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),g=s.Int8Array,y=g&&g.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=g&&p(g),E=y&&p(y),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,F={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},T={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(F,t)||l(T,t)};for(r in F)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in F)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in F)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),F)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in F)if(l(F,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in F){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in F)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&g[e]||t)}catch(e){}}for(r in F)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(F,t)||l(T,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,g=n(3070).f,y=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,F=r[k],T=F&&F[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},O=function(e){return[255&e,e>>8&255]},U=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},D=function(e){return R(e,23,4)},P=function(e){return R(e,52,8)},N=function(e,t){g(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(T)!==I&&v(T,I);var Q=new F(new _(2)),X=T.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(T,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:y.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},F=function(e,t,n){c(this,F,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(F,"buffer"),N(F,"byteLength"),N(F,"byteOffset")),a(F[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,O,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,O,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,D,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,P,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(F,k),e.exports={ArrayBuffer:_,DataView:F}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:void 0,y=void 0!==g,b=c(h),w=0;if(y&&(g=r(g,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=y?g(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=y?o(d,g,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,g){for(var y,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=g||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(y=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return k;case 2:l.call(A,y)}else switch(e){case 4:return!1;case 7:l.call(A,y)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var g=/./[h],y=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=y[0],w=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[g++]=255&c,c/=256,s-=8);for(l=l<0;d[g++]=255&l,l/=256,f-=8);return d[--g]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,g=v.has,y=v.set;r=function(e,t){return t.facade=e,y.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return g.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,g=0;m>g;)p=v[g++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/g))throw RangeError(i);for(f+=(m-d)*g,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var y=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(y0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),g=n(648),y=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),F=C.get,T=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,O=l.DataView,U=a.NATIVE_ARRAY_BUFFER_VIEWS,j=a.TYPED_ARRAY_TAG,D=a.TypedArray,P=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return F(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=g(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&y(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(U||(A.f=X,L.f=V,Y(P,"buffer"),Y(P,"byteOffset"),Y(P,"byteLength"),Y(P,"length")),r({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,g=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=F(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=F(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};U?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(y(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,D),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=g):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(y(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(T(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new O(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,g=o(p);if(null!=g&&!s(g))for(f=(d=g.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",g=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),y=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!g||!y},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),g=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,g);for(r=new(void 0===n?Array:n)(h(g-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;pg-r+n;p--)delete m[p-1]}else if(n>r)for(p=g-r;p>y;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var g=i(e),y=String(this),b="function"==typeof r;b||(r=String(r));var w=g.global;if(w){var x=g.unicode;g.lastIndex=0}for(var E=[];;){var S=u(g,y);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(g.lastIndex=l(y,o(g.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=y.slice(L,_)+R,L=_+C.length)}return k+y.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),g=d.unicode,y=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",y),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),g=n(30),y=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),F=u.getterFor(A),T=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(T," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,O={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},U=function(e){return O[e]},j=function(e){return encodeURIComponent(e).replace(q,U)},D=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:P}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else D(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=g(t,{body:y(0,String(n)),headers:y(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),g=n(1637),y=n(9909),b=a.URL,w=g.URLSearchParams,x=g.getState,E=y.set,S=y.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",F=/[A-Za-z]/,T=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,O=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,U=/[\u0000\t\u000A\u000D #/:?@[\\]]/,j=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,D=/[\t\u000A\u000D]/g,P=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),O.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(U.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&F.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ge={},ye={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(j,"")),t=t.replace(D,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!F.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(T.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ge:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ge:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var g=0;g65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ge:if(e.scheme="file","/"==s||"\\"==s)c=ye;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ye:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=P(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Fe.call(r),r.protocol=Te.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Oe.call(r),r.search=Ue.call(r),r.searchParams=je.call(r),r.hash=De.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Fe=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Te=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Oe=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Ue=function(){var e=S(this).query;return e?"?"+e:""},je=function(){return S(this).searchParams},De=function(){var e=S(this).fragment;return e?"#"+e:""},Pe=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:Pe(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:Pe(Fe),protocol:Pe(Te,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:Pe(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=y.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=y.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===y.UPLOADING?y.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?y.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};y.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},y.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},y.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},y.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},y.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},y.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new y(this,e)})}),y.ADDED="added",y.QUEUED="queued",y.ACCEPTED=y.QUEUED,y.UPLOADING="uploading",y.PROCESSING=y.UPLOADING,y.CANCELED="canceled",y.ERROR="error",y.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),g=parseInt(n.dataset.maxFilesize||0,10);let y=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:g,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(y=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),y?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),y=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),g=document.querySelector(".js-filer-dropzone-upload-canceled"),y=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},F=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(console.log("[Filer DnD] accept:",n.name,"url:",p),Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),y&&y.classList.remove(x),F(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,console.log("[Filer DnD] file accepted, submitNum:",e,"maxSubmitNum:",t),C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=F(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=F(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,console.log("[Filer DnD] success:",t.name,"submitNum:",e,"response:",n),C();const r=F(t,p);r&&r.remove()},queuecomplete:()=>{console.log("[Filer DnD] queuecomplete: submitNum:",e,"hasErrors:",L),0===e?(C(),y&&y.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),console.log("[Filer DnD] reloading after errors (1s delay)"),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),console.log("[Filer DnD] reloading now via reloadOrdered"),A())):console.warn("[Filer DnD] queuecomplete: submitNum is not 0, skipping reload")},error:(t,n)=>{if(console.error("[Filer DnD] error:",t.name,"error:",n,"submitNum:",e),"duplicate"===n)return void console.log("[Filer DnD] duplicate file, ignoring");e--,console.log("[Filer DnD] after error decrement, submitNum:",e),C();const r=F(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),y&&y.addEventListener("click",e=>{e.preventDefault(),y.classList.add(x),g&&g.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",g=()=>{h{h=e.offsetWidth,g()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file From 5964cd52e48d2d99ad295a54961b4e99a2368a57 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 15:33:01 +0300 Subject: [PATCH 27/51] BEN-2954: test --- filer/admin/folderadmin.py | 30 +- .../static/filer/js/addons/table-dropzone.js | 11 + .../static/filer/js/dist/filer-base.bundle.js | 264 +++++++++++++++++- 3 files changed, 288 insertions(+), 17 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 422757cc3..916a55e49 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -703,7 +703,7 @@ def response_action(self, request, files_queryset, folders_queryset): action = action_form.cleaned_data['action'] select_across = action_form.cleaned_data['select_across'] func, name, description = self.get_actions(request)[action] - logger.debug("[Action] Dispatching action=%s, func=%s", action, func.__name__) + logger.warning("[Action] Dispatching action=%s, func=%s", action, func.__name__) # Get the list of selected PKs. If nothing's selected, we can't # perform an action on it, so bail. Except we want to perform @@ -731,10 +731,10 @@ def response_action(self, request, files_queryset, folders_queryset): files_queryset = files_queryset.filter(pk__in=selected_files) folders_queryset = folders_queryset.filter( pk__in=selected_folders) - logger.debug("[Action] selected_files=%s, selected_folders=%s", + logger.warning("[Action] selected_files=%s, selected_folders=%s", selected_files, selected_folders) - logger.debug("[Action] Calling %s with files_qs count=%d, folders_qs count=%d", + logger.warning("[Action] Calling %s with files_qs count=%d, folders_qs count=%d", name, files_queryset.count(), folders_queryset.count()) response = func(self, request, files_queryset, folders_queryset) @@ -1251,17 +1251,17 @@ def rename_files(self, request, files_queryset, folders_queryset): def extract_files(self, request, files_queryset, folders_queryset): if request.method != 'POST': - logger.debug("[Extract] Skipping: request.method=%s (not POST)", request.method) + logger.warning("[Extract] Skipping: request.method=%s (not POST)", request.method) return None from ..models import Archive success_format = "Successfully extracted archive {}." - logger.debug("[Extract] Starting extract_files action") - logger.debug("[Extract] files_queryset count=%d, pks=%s", + logger.warning("[Extract] Starting extract_files action") + logger.warning("[Extract] files_queryset count=%d, pks=%s", files_queryset.count(), list(files_queryset.values_list('pk', flat=True))) - logger.debug("[Extract] files in queryset: %s", + logger.warning("[Extract] files in queryset: %s", list(files_queryset.values_list('pk', 'original_filename', 'file', 'polymorphic_ctype_id'))) # Filter by zip file extension rather than polymorphic_ctype, @@ -1274,7 +1274,7 @@ def extract_files(self, request, files_queryset, folders_queryset): extension_filter |= Q(file__iendswith=ext) files_queryset = files_queryset.filter(extension_filter) - logger.debug("[Extract] After extension filter: count=%d, pks=%s", + logger.warning("[Extract] After extension filter: count=%d, pks=%s", files_queryset.count(), list(files_queryset.values_list('pk', 'original_filename', 'file'))) @@ -1297,9 +1297,9 @@ def extract_files(self, request, files_queryset, folders_queryset): def _as_archive(filer_file): """Convert a File instance to Archive so extract methods work.""" if isinstance(filer_file, Archive): - logger.debug("[Extract] File pk=%s is already an Archive instance", filer_file.pk) + logger.warning("[Extract] File pk=%s is already an Archive instance", filer_file.pk) return filer_file - logger.debug("[Extract] Converting File pk=%s (%s) to Archive instance " + logger.warning("[Extract] Converting File pk=%s (%s) to Archive instance " "(polymorphic_ctype=%s)", filer_file.pk, filer_file.original_filename, filer_file.polymorphic_ctype) @@ -1310,7 +1310,7 @@ def _as_archive(filer_file): def is_valid_archive(filer_file): is_valid = filer_file.is_valid() - logger.debug("[Extract] is_valid_archive pk=%s: %s", filer_file.pk, is_valid) + logger.warning("[Extract] is_valid_archive pk=%s: %s", filer_file.pk, is_valid) if not is_valid: error_format = "{} is not a valid zip file" message = error_format.format(filer_file.clean_actual_name) @@ -1319,7 +1319,7 @@ def is_valid_archive(filer_file): def has_collisions(filer_file): collisions = filer_file.collisions() - logger.debug("[Extract] has_collisions pk=%s: %s", filer_file.pk, collisions) + logger.warning("[Extract] has_collisions pk=%s: %s", filer_file.pk, collisions) if collisions: error_format = "Files/Folders from {archive} with names:" error_format += "{names} already exist." @@ -1335,13 +1335,13 @@ def has_collisions(filer_file): for f in files_queryset: f = _as_archive(f) if not is_valid_archive(f) or has_collisions(f): - logger.debug("[Extract] Skipping file pk=%s (invalid or collisions)", f.pk) + logger.warning("[Extract] Skipping file pk=%s (invalid or collisions)", f.pk) continue - logger.debug("[Extract] Extracting file pk=%s (%s)", f.pk, f.original_filename) + logger.warning("[Extract] Extracting file pk=%s (%s)", f.pk, f.original_filename) try: f.extract() message = success_format.format(f.actual_name) - logger.info("[Extract] Success: %s", message) + logger.warning("[Extract] Success: %s", message) self.message_user(request, _(message)) for err_msg in f.extract_errors: logger.warning("[Extract] Extract warning for %s: %s", f.actual_name, err_msg) diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index d2ffc7ba4..c031213b2 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -88,19 +88,27 @@ document.addEventListener('DOMContentLoaded', () => { body.dataset.maxFiles = dropzoneBase.dataset.maxFiles; body.dataset.maxFilesize = dropzoneBase.dataset.maxFiles; body.classList.add('js-filer-dropzone'); + console.log('[Filer DnD] dropzoneBase found, url:', baseUrl, 'folder:', baseFolderTitle); + } else { + console.log('[Filer DnD] No .js-filer-dropzone-base element found on page'); } Cl.mediator.subscribe('filer-upload-in-progress', destroyDropzones); dropzones = document.querySelectorAll(dropzoneSelector); + console.log('[Filer DnD] Found', dropzones.length, 'dropzone elements (.js-filer-dropzone)'); if (dropzones.length && Dropzone) { Dropzone.autoDiscover = false; dropzones.forEach((dropzoneElement) => { if (dropzoneElement.dropzone) { + console.log('[Filer DnD] Skipping element (already has dropzone):', dropzoneElement.tagName, dropzoneElement.className); return; } const dropzoneUrl = dropzoneElement.dataset.url; + console.log('[Filer DnD] Creating Dropzone instance for', dropzoneElement.tagName, + 'url:', dropzoneUrl, 'maxFiles:', dropzoneElement.dataset.maxFiles, + 'maxFilesize:', dropzoneElement.dataset.maxFilesize); const dropzoneInstance = new Dropzone(dropzoneElement, { url: dropzoneUrl, paramName: 'file', @@ -228,6 +236,7 @@ document.addEventListener('DOMContentLoaded', () => { } }, sending: (file) => { + console.log('[Filer DnD] sending:', file.name, 'to:', dropzoneUrl); const fileEl = getElementByFile(file, dropzoneUrl); if (fileEl) { fileEl.classList.remove(hiddenClass); @@ -315,5 +324,7 @@ document.addEventListener('DOMContentLoaded', () => { }); } }); + } else { + console.warn('[Filer DnD] No dropzone instances created. dropzones.length:', dropzones.length, 'Dropzone:', !!Dropzone); } }); diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index ba08a6131..f5ed60fd6 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,262 @@ -/*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),g=s.Int8Array,y=g&&g.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=g&&p(g),E=y&&p(y),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,F={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},T={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(F,t)||l(T,t)};for(r in F)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in F)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in F)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),F)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in F)if(l(F,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in F){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in F)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&g[e]||t)}catch(e){}}for(r in F)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(F,t)||l(T,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,g=n(3070).f,y=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,F=r[k],T=F&&F[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},O=function(e){return[255&e,e>>8&255]},U=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},D=function(e){return R(e,23,4)},P=function(e){return R(e,52,8)},N=function(e,t){g(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(T)!==I&&v(T,I);var Q=new F(new _(2)),X=T.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(T,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:y.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},F=function(e,t,n){c(this,F,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(F,"buffer"),N(F,"byteLength"),N(F,"byteOffset")),a(F[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return j($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,O,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,O,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,D,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,P,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(F,k),e.exports={ArrayBuffer:_,DataView:F}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:void 0,y=void 0!==g,b=c(h),w=0;if(y&&(g=r(g,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=y?g(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=y?o(d,g,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,g){for(var y,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=g||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(y=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return k;case 2:l.call(A,y)}else switch(e){case 4:return!1;case 7:l.call(A,y)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var g=/./[h],y=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=y[0],w=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[g++]=255&c,c/=256,s-=8);for(l=l<0;d[g++]=255&l,l/=256,f-=8);return d[--g]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,g=v.has,y=v.set;r=function(e,t){return t.facade=e,y.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return g.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,g=0;m>g;)p=v[g++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/g))throw RangeError(i);for(f+=(m-d)*g,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var y=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(y0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),g=n(648),y=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),F=C.get,T=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,O=l.DataView,U=a.NATIVE_ARRAY_BUFFER_VIEWS,j=a.TYPED_ARRAY_TAG,D=a.TypedArray,P=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return F(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=g(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&y(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(U||(A.f=X,L.f=V,Y(P,"buffer"),Y(P,"byteOffset"),Y(P,"byteLength"),Y(P,"length")),r({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,g=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=F(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=F(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};U?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(y(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,D),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=g):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(y(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(T(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new O(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,g=o(p);if(null!=g&&!s(g))for(f=(d=g.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",g=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),y=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!g||!y},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),g=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,g);for(r=new(void 0===n?Array:n)(h(g-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;pg-r+n;p--)delete m[p-1]}else if(n>r)for(p=g-r;p>y;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var g=i(e),y=String(this),b="function"==typeof r;b||(r=String(r));var w=g.global;if(w){var x=g.unicode;g.lastIndex=0}for(var E=[];;){var S=u(g,y);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(g.lastIndex=l(y,o(g.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=y.slice(L,_)+R,L=_+C.length)}return k+y.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),g=d.unicode,y=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",y),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),g=n(30),y=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),F=u.getterFor(A),T=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(T," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,O={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},U=function(e){return O[e]},j=function(e){return encodeURIComponent(e).replace(q,U)},D=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:P}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else D(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=g(t,{body:y(0,String(n)),headers:y(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),g=n(1637),y=n(9909),b=a.URL,w=g.URLSearchParams,x=g.getState,E=y.set,S=y.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",F=/[A-Za-z]/,T=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,O=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,U=/[\u0000\t\u000A\u000D #/:?@[\\]]/,j=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,D=/[\t\u000A\u000D]/g,P=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),O.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(U.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&F.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ge={},ye={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(j,"")),t=t.replace(D,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!F.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(T.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ge:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ge:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var g=0;g65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ge:if(e.scheme="file","/"==s||"\\"==s)c=ye;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ye:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=P(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Fe.call(r),r.protocol=Te.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=Oe.call(r),r.search=Ue.call(r),r.searchParams=je.call(r),r.hash=De.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Fe=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Te=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},Oe=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Ue=function(){var e=S(this).query;return e?"?"+e:""},je=function(){return S(this).searchParams},De=function(){var e=S(this).fragment;return e?"#"+e:""},Pe=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:Pe(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:Pe(Fe),protocol:Pe(Te,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:Pe(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=y.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=y.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===y.UPLOADING?y.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?y.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};y.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},y.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},y.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},y.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},y.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},y.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new y(this,e)})}),y.ADDED="added",y.QUEUED="queued",y.ACCEPTED=y.QUEUED,y.UPLOADING="uploading",y.PROCESSING=y.UPLOADING,y.CANCELED="canceled",y.ERROR="error",y.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),g=parseInt(n.dataset.maxFilesize||0,10);let y=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:g,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(y=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),y?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),y=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),g=document.querySelector(".js-filer-dropzone-upload-canceled"),y=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},F=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFiles,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(console.log("[Filer DnD] accept:",n.name,"url:",p),Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),y&&y.classList.remove(x),F(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,console.log("[Filer DnD] file accepted, submitNum:",e,"maxSubmitNum:",t),C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=F(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=F(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,console.log("[Filer DnD] success:",t.name,"submitNum:",e,"response:",n),C();const r=F(t,p);r&&r.remove()},queuecomplete:()=>{console.log("[Filer DnD] queuecomplete: submitNum:",e,"hasErrors:",L),0===e?(C(),y&&y.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),console.log("[Filer DnD] reloading after errors (1s delay)"),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),console.log("[Filer DnD] reloading now via reloadOrdered"),A())):console.warn("[Filer DnD] queuecomplete: submitNum is not 0, skipping reload")},error:(t,n)=>{if(console.error("[Filer DnD] error:",t.name,"error:",n,"submitNum:",e),"duplicate"===n)return void console.log("[Filer DnD] duplicate file, ignoring");e--,console.log("[Filer DnD] after error decrement, submitNum:",e),C();const r=F(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),y&&y.addEventListener("click",e=>{e.preventDefault(),y.classList.add(x),g&&g.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",g=()=>{h{h=e.offsetWidth,g()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./filer/static/filer/js/addons/copy-move-files.js" +/*!*********************************************************!*\ + !*** ./filer/static/filer/js/addons/copy-move-files.js ***! + \*********************************************************/ +() { + +"use strict"; +eval("{\n/* global Cl */\n\n/*\n This functionality is used in folder/choose_copy_destination.html template\n to disable submit if there is only one folder to copy\n*/\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const destination = document.getElementById('destination');\n if (!destination) {\n return;\n }\n\n const destinationOptions = destination.querySelectorAll('option');\n const destinationOptionLength = destinationOptions.length;\n const submit = document.querySelector('.js-submit-copy-move');\n const tooltip = document.querySelector('.js-disabled-btn-tooltip');\n\n if (destinationOptionLength === 1 && destinationOptions[0].disabled) {\n if (submit) {\n submit.style.display = 'none';\n }\n if (tooltip) {\n tooltip.style.display = 'inline-block';\n }\n }\n\n if (Cl.filerTooltip) {\n Cl.filerTooltip();\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/copy-move-files.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/dropdown-menu.js" +/*!*******************************************************!*\ + !*** ./filer/static/filer/js/addons/dropdown-menu.js ***! + \*******************************************************/ +() { + +"use strict"; +eval("{/* ========================================================================\n * Bootstrap: dropdown.js v3.3.6\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n(() => {\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n const backdropClass = 'filer-dropdown-backdrop';\n const toggleSelector = '[data-toggle=\"filer-dropdown\"]';\n\n class Dropdown {\n constructor(element) {\n this.element = element;\n element.addEventListener('click', () => this.toggle());\n }\n\n toggle() {\n const element = this.element;\n const parent = getParent(element);\n const isActive = parent.classList.contains('open');\n const relatedTarget = { relatedTarget: element };\n\n if (element.disabled || element.classList.contains('disabled')) {\n return false;\n }\n\n clearMenus();\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !parent.closest('.navbar-nav')) {\n // if mobile we use a backdrop because click events don't delegate\n const backdrop = document.createElement('div');\n backdrop.className = backdropClass;\n element.parentNode.insertBefore(backdrop, element.nextSibling);\n backdrop.addEventListener('click', clearMenus);\n }\n\n const showEvent = new CustomEvent('show.bs.filer-dropdown', {\n bubbles: true,\n cancelable: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(showEvent);\n\n if (showEvent.defaultPrevented) {\n return false;\n }\n\n element.focus();\n element.setAttribute('aria-expanded', 'true');\n parent.classList.add('open');\n\n const shownEvent = new CustomEvent('shown.bs.filer-dropdown', {\n bubbles: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(shownEvent);\n }\n\n return false;\n }\n\n keydown(e) {\n const element = this.element;\n const parent = getParent(element);\n const isActive = parent.classList.contains('open');\n const desc = ' li:not(.disabled):visible a';\n const items = Array.from(parent.querySelectorAll(`.filer-dropdown-menu${desc}`))\n .filter(item => item.offsetParent !== null); // visible check\n const index = items.indexOf(e.target);\n\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n if (element.disabled || element.classList.contains('disabled')) {\n return;\n }\n\n if ((!isActive && e.which !== 27) || (isActive && e.which === 27)) {\n if (e.which === 27) {\n parent.querySelector(toggleSelector)?.focus();\n }\n return element.click();\n }\n\n if (!items.length) {\n return;\n }\n\n let newIndex = index;\n if (e.which === 38 && index > 0) {\n newIndex--; // up\n }\n if (e.which === 40 && index < items.length - 1) {\n newIndex++; // down\n }\n if (newIndex === -1) {\n newIndex = 0;\n }\n\n items[newIndex]?.focus();\n }\n }\n\n function getParent(element) {\n let selector = element.getAttribute('data-target');\n let parent = selector ? document.querySelector(selector) : null;\n\n if (!selector) {\n selector = element.getAttribute('href');\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n parent = selector ? document.querySelector(selector) : null;\n }\n\n return parent && parent.parentNode ? parent : element.parentNode;\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) {\n return;\n }\n\n // Remove all backdrops\n document.querySelectorAll(`.${backdropClass}`).forEach(el => el.remove());\n\n document.querySelectorAll(toggleSelector).forEach((toggle) => {\n const parent = getParent(toggle);\n const relatedTarget = { relatedTarget: toggle };\n\n if (!parent.classList.contains('open')) {\n return;\n }\n\n if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && parent.contains(e.target)) {\n return;\n }\n\n const hideEvent = new CustomEvent('hide.bs.filer-dropdown', {\n bubbles: true,\n cancelable: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(hideEvent);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n toggle.setAttribute('aria-expanded', 'false');\n parent.classList.remove('open');\n\n const hiddenEvent = new CustomEvent('hidden.bs.filer-dropdown', {\n bubbles: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(hiddenEvent);\n });\n }\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n this.forEach((element) => {\n let data = element._filerDropdownInstance;\n\n if (!data) {\n data = new Dropdown(element);\n element._filerDropdownInstance = data;\n }\n if (typeof option === 'string') {\n data[option].call(element);\n }\n });\n return this;\n }\n\n // Extend NodeList and HTMLCollection with dropdown method\n if (!NodeList.prototype.dropdown) {\n NodeList.prototype.dropdown = function(option) {\n return Plugin.call(this, option);\n };\n }\n if (!HTMLCollection.prototype.dropdown) {\n HTMLCollection.prototype.dropdown = function(option) {\n return Plugin.call(this, option);\n };\n }\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n document.addEventListener('click', clearMenus);\n\n document.addEventListener('click', (e) => {\n if (e.target.closest('.filer-dropdown form')) {\n e.stopPropagation();\n }\n });\n\n document.addEventListener('click', (e) => {\n const toggle = e.target.closest(toggleSelector);\n if (toggle) {\n const instance = toggle._filerDropdownInstance || new Dropdown(toggle);\n if (!toggle._filerDropdownInstance) {\n toggle._filerDropdownInstance = instance;\n }\n instance.toggle(e);\n }\n });\n\n document.addEventListener('keydown', (e) => {\n const toggle = e.target.closest(toggleSelector);\n if (toggle) {\n const instance = toggle._filerDropdownInstance || new Dropdown(toggle);\n if (!toggle._filerDropdownInstance) {\n toggle._filerDropdownInstance = instance;\n }\n instance.keydown(e);\n }\n });\n\n document.addEventListener('keydown', (e) => {\n const menu = e.target.closest('.filer-dropdown-menu');\n if (menu) {\n const toggle = menu.parentNode.querySelector(toggleSelector);\n if (toggle) {\n const instance = toggle._filerDropdownInstance || new Dropdown(toggle);\n if (!toggle._filerDropdownInstance) {\n toggle._filerDropdownInstance = instance;\n }\n instance.keydown(e);\n }\n }\n });\n\n // Export for compatibility\n window.FilerDropdown = Dropdown;\n})();\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/dropdown-menu.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/dropzone.init.js" +/*!*******************************************************!*\ + !*** ./filer/static/filer/js/addons/dropzone.init.js ***! + \*******************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__);\n// #DROPZONE#\n// This script implements the dropzone settings\n\n\n\n\nif ((dropzone__WEBPACK_IMPORTED_MODULE_0___default())) {\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const previewImageSelector = '.js-img-preview';\n const dropzoneSelector = '.js-filer-dropzone';\n const dropzones = document.querySelectorAll(dropzoneSelector);\n const messageSelector = '.js-filer-dropzone-message';\n const lookupButtonSelector = '.js-related-lookup';\n const editButtonSelector = '.js-related-edit';\n const dropzoneTemplate = '.js-filer-dropzone-template';\n const progressSelector = '.js-filer-dropzone-progress';\n const previewImageWrapperSelector = '.js-img-wrapper';\n const filerClearerSelector = '.filerClearer';\n const fileChooseSelector = '.js-file-selector';\n const fileIdInputSelector = '.vForeignKeyRawIdAdminField';\n const dragHoverClass = 'dz-drag-hover';\n const hiddenClass = 'hidden';\n const mobileClass = 'filer-dropzone-mobile';\n const objectAttachedClass = 'js-object-attached';\n const minWidth = 500;\n\n const checkMinWidth = (element) => {\n const width = element.offsetWidth;\n if (width < minWidth) {\n element.classList.add(mobileClass);\n } else {\n element.classList.remove(mobileClass);\n }\n };\n\n const showError = (message) => {\n try {\n window.parent.CMS.API.Messages.open({\n message: message\n });\n } catch {\n if (window.filerShowError) {\n window.filerShowError(message);\n } else {\n alert(message);\n }\n }\n };\n\n const createDropzone = function (dropzone) {\n const dropzoneUrl = dropzone.dataset.url;\n const inputId = dropzone.querySelector(fileIdInputSelector);\n const isImage = inputId?.getAttribute('name') === 'image';\n const lookupButton = dropzone.querySelector(lookupButtonSelector);\n const editButton = dropzone.querySelector(editButtonSelector);\n const message = dropzone.querySelector(messageSelector);\n const clearButton = dropzone.querySelector(filerClearerSelector);\n const fileChoose = dropzone.querySelector(fileChooseSelector);\n\n if (dropzone.dropzone) {\n return;\n }\n\n const resizeHandler = () => {\n checkMinWidth(dropzone);\n };\n window.addEventListener('resize', resizeHandler);\n\n new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(dropzone, {\n url: dropzoneUrl,\n paramName: 'file',\n maxFiles: 1,\n maxFilesize: dropzone.dataset.maxFilesize,\n previewTemplate: document.querySelector(dropzoneTemplate)?.innerHTML || '
    ',\n clickable: false,\n addRemoveLinks: false,\n init: function () {\n checkMinWidth(dropzone);\n\n this.on('removedfile', () => {\n if (fileChoose) {\n fileChoose.style.display = '';\n }\n dropzone.classList.remove(objectAttachedClass);\n this.removeAllFiles();\n clearButton?.click();\n });\n\n const images = this.element.querySelectorAll('img');\n images.forEach((img) => {\n img.addEventListener('dragstart', (event) => {\n event.preventDefault();\n });\n });\n\n if (clearButton) {\n clearButton.addEventListener('click', () => {\n dropzone.classList.remove(objectAttachedClass);\n // const changeEvent = new Event('change', { bubbles: true });\n // inputId?.dispatchEvent(changeEvent);\n });\n }\n },\n maxfilesexceeded: function () {\n this.removeAllFiles(true);\n },\n drop: function () {\n this.removeAllFiles(true);\n clearButton?.click();\n const progressEl = dropzone.querySelector(progressSelector);\n if (progressEl) {\n progressEl.classList.remove(hiddenClass);\n }\n if (fileChoose) {\n fileChoose.style.display = 'block';\n }\n lookupButton?.classList.add('related-lookup-change');\n editButton?.classList.add('related-lookup-change');\n message?.classList.add(hiddenClass);\n dropzone.classList.remove(dragHoverClass);\n dropzone.classList.add(objectAttachedClass);\n },\n success: function (file, response) {\n const progressEl = dropzone.querySelector(progressSelector);\n if (progressEl) {\n progressEl.classList.add(hiddenClass);\n }\n\n if (file && file.status === 'success' && response) {\n if (response.file_id && inputId) {\n inputId.value = response.file_id;\n const changeEvent = new Event('change', { bubbles: true });\n inputId.dispatchEvent(changeEvent);\n }\n if (response.thumbnail_180 && isImage) {\n const previewImg = dropzone.querySelector(previewImageSelector);\n if (previewImg) {\n previewImg.style.backgroundImage = `url(${response.thumbnail_180})`;\n }\n const wrapper = dropzone.querySelector(previewImageWrapperSelector);\n if (wrapper) {\n wrapper.classList.remove(hiddenClass);\n }\n }\n } else {\n if (response && response.error) {\n showError(`${file.name}: ${response.error}`);\n }\n this.removeAllFiles(true);\n }\n\n const images = this.element.querySelectorAll('img');\n images.forEach((img) => {\n img.addEventListener('dragstart', (event) => {\n event.preventDefault();\n });\n });\n },\n error: function (file, msg, response) {\n if (response && response.error) {\n msg += ` ; ${response.error}`;\n }\n showError(`${file.name}: ${msg}`);\n this.removeAllFiles(true);\n },\n reset: function () {\n if (isImage) {\n const wrapper = dropzone.querySelector(previewImageWrapperSelector);\n if (wrapper) {\n wrapper.classList.add(hiddenClass);\n }\n const previewImg = dropzone.querySelector(previewImageSelector);\n if (previewImg) {\n previewImg.style.backgroundImage = 'none';\n }\n }\n dropzone.classList.remove(objectAttachedClass);\n if (inputId) {\n inputId.value = '';\n }\n lookupButton?.classList.remove('related-lookup-change');\n editButton?.classList.remove('related-lookup-change');\n message?.classList.remove(hiddenClass);\n if (inputId) {\n const changeEvent = new Event('change', { bubbles: true });\n inputId.dispatchEvent(changeEvent);\n }\n }\n });\n };\n\n if (dropzones.length && (dropzone__WEBPACK_IMPORTED_MODULE_0___default())) {\n if (!window.filerDropzoneInitialized) {\n window.filerDropzoneInitialized = true;\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n }\n dropzones.forEach(createDropzone);\n\n // Handle initialization of the dropzone on dynamic formsets (i.e. Django admin inlines)\n document.addEventListener('formset:added', (event) => {\n let dropzones;\n let rowIdx;\n let row;\n\n if (event.detail && event.detail.formsetName) {\n /*\n Django 4.1 changed the event type being fired when adding\n a new formset from a jQuery to a vanilla JavaScript event.\n https://docs.djangoproject.com/en/4.1/ref/contrib/admin/javascript/\n\n In this case we find the newly added row and initialize the\n dropzone on any dropzoneSelector on that row.\n */\n\n rowIdx = parseInt(\n document.getElementById(\n `id_${event.detail.formsetName}-TOTAL_FORMS`\n ).value, 10\n ) - 1;\n row = document.getElementById(`${event.detail.formsetName}-${rowIdx}`);\n dropzones = row?.querySelectorAll(dropzoneSelector) || [];\n } else {\n // Fallback for older jQuery event format\n row = event.target;\n dropzones = row?.querySelectorAll(dropzoneSelector) || [];\n }\n\n dropzones?.forEach(createDropzone);\n });\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/dropzone.init.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/filer_popup_response.js" +/*!**************************************************************!*\ + !*** ./filer/static/filer/js/addons/filer_popup_response.js ***! + \**************************************************************/ +() { + +eval("{/*global opener */\n(function () {\n 'use strict';\n const dataElement = document.getElementById('django-admin-popup-response-constants');\n let initData;\n\n if (dataElement) {\n initData = JSON.parse(dataElement.dataset.popupResponse);\n switch (initData.action) {\n case 'change':\n // Specific function for file editing popup opened from widget\n opener.dismissRelatedImageLookupPopup(window, initData.new_value, null, initData.obj, null);\n break;\n case 'delete':\n opener.dismissDeleteRelatedObjectPopup(window, initData.value);\n break;\n default:\n opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj);\n break;\n }\n }\n})();\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/filer_popup_response.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/focal-point.js" +/*!*****************************************************!*\ + !*** ./filer/static/filer/js/addons/focal-point.js ***! + \*****************************************************/ +(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* module decorator */ module = __webpack_require__.hmd(module);\n// #FOCAL POINT#\n// This script implements the image focal point setting\n\n\nwindow.Cl = window.Cl || {};\n\n(() => {\n class FocalPoint {\n constructor(options = {}) {\n this.options = {\n containerSelector: '.js-focal-point',\n imageSelector: '.js-focal-point-image',\n circleSelector: '.js-focal-point-circle',\n locationSelector: '.js-focal-point-location',\n draggableClass: 'draggable',\n hiddenClass: 'hidden',\n dataLocation: 'locationSelector',\n ...options\n };\n this.focalPointInstances = [];\n this._init = this._init.bind(this);\n }\n\n _init(container) {\n const focalPointInstance = new FocalPointConstructor(container, this.options);\n this.focalPointInstances.push(focalPointInstance);\n }\n\n initialize() {\n const containers = document.querySelectorAll(this.options.containerSelector);\n containers.forEach((container) => {\n this._init(container);\n });\n\n if (window.Cl.mediator) {\n window.Cl.mediator.subscribe('focal-point:init', this._init);\n }\n }\n\n destroy() {\n if (window.Cl.mediator) {\n window.Cl.mediator.remove('focal-point:init', this._init);\n }\n\n this.focalPointInstances.forEach((focalPointInstance) => {\n focalPointInstance.destroy();\n });\n\n this.focalPointInstances = [];\n }\n }\n\n class FocalPointConstructor {\n constructor(container, options = {}) {\n this.options = {\n imageSelector: '.js-focal-point-image',\n circleSelector: '.js-focal-point-circle',\n locationSelector: '.js-focal-point-location',\n draggableClass: 'draggable',\n hiddenClass: 'hidden',\n dataLocation: 'locationSelector',\n ...options\n };\n\n this.container = container;\n this.image = this.container.querySelector(this.options.imageSelector);\n this.circle = this.container.querySelector(this.options.circleSelector);\n this.ratio = parseFloat(this.image?.dataset.ratio || 1);\n this.location = this._getLocation();\n this.isDragging = false;\n this.dragStartX = 0;\n this.dragStartY = 0;\n this.circleStartX = 0;\n this.circleStartY = 0;\n\n this._onImageLoaded = this._onImageLoaded.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n\n if (this.image?.complete) {\n this._onImageLoaded();\n } else if (this.image) {\n this.image.addEventListener('load', this._onImageLoaded);\n }\n }\n\n _updateLocationValue(x, y) {\n const locationValue = `${Math.round(x * this.ratio)},${Math.round(y * this.ratio)}`;\n if (this.location) {\n this.location.value = locationValue;\n }\n }\n\n _getLocation() {\n const locationSelector = this.container.dataset[this.options.dataLocation];\n if (locationSelector) {\n const newLocation = document.querySelector(locationSelector);\n if (newLocation) {\n return newLocation;\n }\n }\n return this.container.querySelector(this.options.locationSelector);\n }\n\n _makeDraggable() {\n if (!this.circle) {\n return;\n }\n\n this.circle.classList.add(this.options.draggableClass);\n this.circle.addEventListener('mousedown', this._onMouseDown);\n this.circle.addEventListener('touchstart', this._onMouseDown, { passive: false });\n }\n\n _onMouseDown(event) {\n event.preventDefault();\n this.isDragging = true;\n\n const touch = event.type === 'touchstart' ? event.touches[0] : event;\n\n // Get container bounds\n const containerRect = this.container.getBoundingClientRect();\n\n // Calculate mouse position relative to container\n this.dragStartX = touch.clientX - containerRect.left;\n this.dragStartY = touch.clientY - containerRect.top;\n\n // Get current circle position (center)\n const circleRect = this.circle.getBoundingClientRect();\n this.circleStartX = circleRect.left - containerRect.left + circleRect.width / 2;\n this.circleStartY = circleRect.top - containerRect.top + circleRect.height / 2;\n\n document.addEventListener('mousemove', this._onMouseMove);\n document.addEventListener('mouseup', this._onMouseUp);\n document.addEventListener('touchmove', this._onMouseMove, { passive: false });\n document.addEventListener('touchend', this._onMouseUp);\n }\n\n _onMouseMove(event) {\n if (!this.isDragging) {\n return;\n }\n\n event.preventDefault();\n\n const touch = event.type === 'touchmove' ? event.touches[0] : event;\n\n // Get container bounds\n const containerRect = this.container.getBoundingClientRect();\n\n // Calculate current mouse position relative to container\n const currentX = touch.clientX - containerRect.left;\n const currentY = touch.clientY - containerRect.top;\n\n // Calculate how much the mouse moved\n const deltaX = currentX - this.dragStartX;\n const deltaY = currentY - this.dragStartY;\n\n // Calculate new center position\n let centerX = this.circleStartX + deltaX;\n let centerY = this.circleStartY + deltaY;\n\n // Constrain center to container bounds\n centerX = Math.max(0, Math.min(containerRect.width - 1, centerX));\n centerY = Math.max(0, Math.min(containerRect.height - 1, centerY));\n\n // Position circle by its top-left corner (center - radius)\n this.circle.style.left = `${centerX}px`;\n this.circle.style.top = `${centerY}px`;\n\n // Update location value with center coordinates\n this._updateLocationValue(centerX, centerY);\n }\n\n _onMouseUp() {\n this.isDragging = false;\n document.removeEventListener('mousemove', this._onMouseMove);\n document.removeEventListener('mouseup', this._onMouseUp);\n document.removeEventListener('touchmove', this._onMouseMove);\n document.removeEventListener('touchend', this._onMouseUp);\n }\n\n _onImageLoaded() {\n if (!this.image || this.image.naturalWidth === 0) {\n return;\n }\n\n this.circle?.classList.remove(this.options.hiddenClass);\n\n const locationValue = this.location?.value || '';\n const imageWidth = this.image.offsetWidth;\n const imageHeight = this.image.offsetHeight;\n\n let x, y;\n\n if (locationValue.length) {\n const coords = locationValue.split(',');\n x = Math.round(Number(coords[0]) / this.ratio);\n y = Math.round(Number(coords[1]) / this.ratio);\n } else {\n x = imageWidth / 2;\n y = imageHeight / 2;\n }\n\n if (isNaN(x) || isNaN(y)) {\n return;\n }\n\n // Position circle (accounting for circle size)\n if (this.circle) {\n this.circle.style.left = `${x}px`;\n this.circle.style.top = `${y}px`;\n }\n\n this._makeDraggable();\n this._updateLocationValue(x, y);\n }\n\n destroy() {\n if (this.circle?.classList.contains(this.options.draggableClass)) {\n this.circle.removeEventListener('mousedown', this._onMouseDown);\n this.circle.removeEventListener('touchstart', this._onMouseDown);\n }\n\n document.removeEventListener('mousemove', this._onMouseMove);\n document.removeEventListener('mouseup', this._onMouseUp);\n document.removeEventListener('touchmove', this._onMouseMove);\n document.removeEventListener('touchend', this._onMouseUp);\n\n if (this.image) {\n this.image.removeEventListener('load', this._onImageLoaded);\n }\n\n this.options = null;\n this.container = null;\n this.image = null;\n this.circle = null;\n this.location = null;\n this.ratio = null;\n }\n }\n\n window.Cl.FocalPoint = FocalPoint;\n window.Cl.FocalPointConstructor = FocalPointConstructor;\n\n // Export for ES6 module usage\n if ( true && module.exports) {\n module.exports = FocalPoint;\n }\n})();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (window.Cl.FocalPoint);\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/focal-point.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/popup_handling.js" +/*!********************************************************!*\ + !*** ./filer/static/filer/js/addons/popup_handling.js ***! + \********************************************************/ +() { + +"use strict"; +eval("{\n\nconst windowname_to_id = (text) => {\n text = text.replace(/__dot__/g, '.');\n text = text.replace(/__dash__/g, '-');\n const last = text.lastIndexOf('__');\n return last === -1 ? text : text.substring(0, last);\n};\n\nwindow.dismissPopupAndReload = (win) => {\n document.location.reload();\n win.close();\n};\n\nwindow.dismissRelatedImageLookupPopup = (\n win,\n chosenId,\n chosenThumbnailUrl,\n chosenDescriptionTxt,\n chosenAdminChangeUrl\n) => {\n const id = windowname_to_id(win.name);\n const lookup = document.getElementById(id);\n if (!lookup) {\n return;\n }\n const container = lookup.closest('.filerFile');\n if (!container) {\n return;\n }\n const edit = container.querySelector('.edit');\n const image = container.querySelector('.thumbnail_img');\n const descriptionText = container.querySelector('.description_text');\n const clearer = container.querySelector('.filerClearer');\n const dropzoneMessage = container.parentElement.querySelector('.dz-message');\n const element = container.querySelector('input');\n const oldId = element.value;\n\n element.value = chosenId;\n const dropzone = element.closest('.js-filer-dropzone');\n if (dropzone) {\n dropzone.classList.add('js-object-attached');\n }\n if (chosenThumbnailUrl && image) {\n image.src = chosenThumbnailUrl;\n image.classList.remove('hidden');\n image.removeAttribute('srcset');\n }\n if (descriptionText) {\n descriptionText.textContent = chosenDescriptionTxt;\n }\n if (clearer) {\n clearer.classList.remove('hidden');\n }\n lookup.classList.add('related-lookup-change');\n if (edit) {\n edit.classList.add('related-lookup-change');\n }\n if (chosenAdminChangeUrl && edit) {\n edit.setAttribute('href', `${chosenAdminChangeUrl}?_edit_from_widget=1`);\n }\n if (dropzoneMessage) {\n dropzoneMessage.classList.add('hidden');\n }\n\n if (oldId !== chosenId) {\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n win.close();\n};\nwindow.dismissRelatedFolderLookupPopup = (win, chosenId, chosenName) => {\n const id = windowname_to_id(win.name);\n const lookup = document.getElementById(id);\n if (!lookup) {\n return;\n }\n const container = lookup.closest('.filerFile');\n if (!container) {\n return;\n }\n const image = container.querySelector('.thumbnail_img');\n const clearButton = document.getElementById(`id_${id}_clear`);\n const input = document.getElementById(`id_${id}`);\n const folderName = container.querySelector('.description_text');\n const addFolderButton = document.getElementById(id);\n\n if (input) {\n input.value = chosenId;\n }\n if (image) {\n image.classList.remove('hidden');\n }\n if (folderName) {\n folderName.textContent = chosenName;\n }\n if (clearButton) {\n clearButton.classList.remove('hidden');\n }\n if (addFolderButton) {\n addFolderButton.classList.add('hidden');\n }\n win.close();\n};\n\n// Handle popup dismiss links (for folder/image selection in popups)\ndocument.addEventListener('DOMContentLoaded', () => {\n document.querySelectorAll('.js-dismiss-popup').forEach((link) => {\n link.addEventListener('click', function (e) {\n e.preventDefault();\n\n const fileId = this.dataset.fileId;\n const iconUrl = this.dataset.iconUrl;\n const label = this.dataset.label;\n\n if (this.classList.contains('js-dismiss-image')) {\n const changeUrl = this.dataset.changeUrl || '';\n window.opener.dismissRelatedImageLookupPopup(\n window,\n fileId,\n iconUrl,\n label,\n changeUrl\n );\n } else if (this.classList.contains('js-dismiss-folder')) {\n window.opener.dismissRelatedFolderLookupPopup(window, fileId, label);\n }\n });\n });\n\n // Auto-dismiss popup on page load (for dismiss_popup.html)\n const popupData = document.getElementById('popup-dismiss-data');\n if (popupData && window.opener) {\n const pk = popupData.dataset.pk;\n const label = popupData.dataset.label;\n window.opener.dismissRelatedPopup(window, pk, label);\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/popup_handling.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/table-dropzone.js" +/*!********************************************************!*\ + !*** ./filer/static/filer/js/addons/table-dropzone.js ***! + \********************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__);\n// #DROPZONE#\n// This script implements the dropzone settings\n\n\n\n\n\n/* globals Cl */\ndocument.addEventListener('DOMContentLoaded', () => {\n let submitNum = 0;\n let maxSubmitNum = 0;\n const dropzoneInstances = [];\n const dropzoneBase = document.querySelector('.js-filer-dropzone-base');\n const dropzoneSelector = '.js-filer-dropzone';\n let dropzones;\n const infoMessageClass = 'js-filer-dropzone-info-message';\n const infoMessage = document.querySelector(`.${infoMessageClass}`);\n const folderName = document.querySelector('.js-filer-dropzone-folder-name');\n const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container');\n const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info');\n const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome');\n const uploadNumber = document.querySelector('.js-filer-dropzone-upload-number');\n const uploadCount = document.querySelector('.js-filer-upload-count');\n const uploadText = document.querySelector('.js-filer-upload-text');\n const uploadFileNameSelector = '.js-filer-dropzone-file-name';\n const uploadProgressSelector = '.js-filer-dropzone-progress';\n const uploadSuccess = document.querySelector('.js-filer-dropzone-upload-success');\n const uploadCanceled = document.querySelector('.js-filer-dropzone-upload-canceled');\n const cancelUpload = document.querySelector('.js-filer-dropzone-cancel');\n const dragHoverClass = 'dz-drag-hover';\n const dataUploaderConnections = 'max-uploader-connections';\n const dragHoverBorder = document.querySelector('.drag-hover-border');\n const hiddenClass = 'hidden';\n let hideMessageTimeout;\n let hasErrors = false;\n let baseUrl;\n let baseFolderTitle;\n\n // utility to update query string (same as upload-button)\n const updateQuery = (uri, key, value) => {\n const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');\n const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n const hash = window.location.hash;\n uri = uri.replace(/#.*$/, '');\n if (uri.match(re)) {\n return uri.replace(re, `$1${key}=${value}$2`) + hash;\n } else {\n return uri + separator + key + '=' + value + hash;\n }\n };\n\n const reloadOrdered = () => {\n const uri = window.location.toString();\n window.location.replace(updateQuery(uri, 'order_by', '-modified_at'));\n };\n\n const updateUploadNumber = () => {\n if (uploadNumber) {\n uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`;\n }\n if (uploadText) {\n uploadText.classList.remove('hidden');\n }\n if (uploadCount) {\n uploadCount.classList.remove('hidden');\n }\n };\n\n const destroyDropzones = () => {\n dropzoneInstances.forEach((instance) => {\n instance.destroy();\n });\n };\n\n const getElementByFile = (file, url) => {\n return document.getElementById(\n `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}${url}`\n );\n };\n\n if (dropzoneBase) {\n baseUrl = dropzoneBase.dataset.url;\n baseFolderTitle = dropzoneBase.dataset.folderName;\n\n const body = document.body;\n body.dataset.url = baseUrl;\n body.dataset.folderName = baseFolderTitle;\n body.dataset.maxFiles = dropzoneBase.dataset.maxFiles;\n body.dataset.maxFilesize = dropzoneBase.dataset.maxFiles;\n body.classList.add('js-filer-dropzone');\n console.log('[Filer DnD] dropzoneBase found, url:', baseUrl, 'folder:', baseFolderTitle);\n } else {\n console.log('[Filer DnD] No .js-filer-dropzone-base element found on page');\n }\n\n Cl.mediator.subscribe('filer-upload-in-progress', destroyDropzones);\n\n dropzones = document.querySelectorAll(dropzoneSelector);\n console.log('[Filer DnD] Found', dropzones.length, 'dropzone elements (.js-filer-dropzone)');\n\n if (dropzones.length && (dropzone__WEBPACK_IMPORTED_MODULE_0___default())) {\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n dropzones.forEach((dropzoneElement) => {\n if (dropzoneElement.dropzone) {\n console.log('[Filer DnD] Skipping element (already has dropzone):', dropzoneElement.tagName, dropzoneElement.className);\n return;\n }\n const dropzoneUrl = dropzoneElement.dataset.url;\n console.log('[Filer DnD] Creating Dropzone instance for', dropzoneElement.tagName,\n 'url:', dropzoneUrl, 'maxFiles:', dropzoneElement.dataset.maxFiles,\n 'maxFilesize:', dropzoneElement.dataset.maxFilesize);\n const dropzoneInstance = new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(dropzoneElement, {\n url: dropzoneUrl,\n paramName: 'file',\n maxFiles: parseInt(dropzoneElement.dataset.maxFiles) || 100,\n maxFilesize: parseInt(dropzoneElement.dataset.maxFilesize), // no default\n previewTemplate: '
    ',\n clickable: false,\n addRemoveLinks: false,\n parallelUploads: dropzoneElement.dataset[dataUploaderConnections] || 3,\n accept: (file, done) => {\n let uploadInfoClone;\n console.log('[Filer DnD] accept:', file.name, 'url:', dropzoneUrl);\n\n Cl.mediator.remove('filer-upload-in-progress', destroyDropzones);\n Cl.mediator.publish('filer-upload-in-progress');\n\n clearTimeout(hideMessageTimeout);\n clearTimeout(hideMessageTimeout);\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (cancelUpload) {\n cancelUpload.classList.remove(hiddenClass);\n }\n\n if (getElementByFile(file, dropzoneUrl)) {\n done('duplicate');\n } else {\n uploadInfoClone = uploadInfo.cloneNode(true);\n\n const fileNameEl = uploadInfoClone.querySelector(uploadFileNameSelector);\n if (fileNameEl) {\n fileNameEl.textContent = file.name;\n }\n const progressEl = uploadInfoClone.querySelector(uploadProgressSelector);\n if (progressEl) {\n progressEl.style.width = '0';\n }\n uploadInfoClone.setAttribute(\n 'id',\n `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}${dropzoneUrl}`\n );\n if (uploadInfoContainer) {\n uploadInfoContainer.appendChild(uploadInfoClone);\n }\n\n submitNum++;\n maxSubmitNum++;\n console.log('[Filer DnD] file accepted, submitNum:', submitNum, 'maxSubmitNum:', maxSubmitNum);\n updateUploadNumber();\n done();\n }\n\n dropzones.forEach((dz) => dz.classList.remove('reset-hover'));\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzones.forEach((dz) => dz.classList.remove(dragHoverClass));\n },\n dragover: (dragEvent) => {\n const target = dragEvent.target.closest(dropzoneSelector);\n const folderTitle = target?.dataset.folderName;\n const dropzoneFolder = dropzoneElement.classList.contains('js-filer-dropzone-folder');\n const dropzoneBoundingRect = dropzoneElement.getBoundingClientRect();\n const borderStyle = dragHoverBorder ? window.getComputedStyle(dragHoverBorder) : null;\n const topBorderSize = borderStyle ? borderStyle.borderTopWidth : '0px';\n const leftBorderSize = borderStyle ? borderStyle.borderLeftWidth : '0px';\n const dropzonePosition = {\n top: `${dropzoneBoundingRect.top}px`,\n bottom: `${dropzoneBoundingRect.bottom}px`,\n left: `${dropzoneBoundingRect.left}px`,\n right: `${dropzoneBoundingRect.right}px`,\n width: `${dropzoneBoundingRect.width - parseInt(leftBorderSize, 10) * 2}px`,\n height: `${dropzoneBoundingRect.height - parseInt(topBorderSize, 10) * 2}px`,\n display: 'block'\n };\n if (dropzoneFolder && dragHoverBorder) {\n Object.assign(dragHoverBorder.style, dropzonePosition);\n }\n\n dropzones.forEach((dz) => dz.classList.add('reset-hover'));\n if (uploadSuccess) {\n uploadSuccess.classList.add(hiddenClass);\n }\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzoneElement.classList.add(dragHoverClass);\n dropzoneElement.classList.remove('reset-hover');\n\n if (folderName && folderTitle) {\n folderName.textContent = folderTitle;\n }\n },\n dragend: () => {\n clearTimeout(hideMessageTimeout);\n hideMessageTimeout = setTimeout(() => {\n if (infoMessage) {\n infoMessage.classList.add(hiddenClass);\n }\n }, 1000);\n\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzones.forEach((dz) => dz.classList.remove(dragHoverClass));\n if (dragHoverBorder) {\n Object.assign(dragHoverBorder.style, { top: '0', bottom: '0', width: '0', height: '0' });\n }\n },\n dragleave: () => {\n clearTimeout(hideMessageTimeout);\n hideMessageTimeout = setTimeout(() => {\n if (infoMessage) {\n infoMessage.classList.add(hiddenClass);\n }\n }, 1000);\n\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzones.forEach((dz) => dz.classList.remove(dragHoverClass));\n if (dragHoverBorder) {\n Object.assign(dragHoverBorder.style, { top: '0', bottom: '0', width: '0', height: '0' });\n }\n },\n sending: (file) => {\n console.log('[Filer DnD] sending:', file.name, 'to:', dropzoneUrl);\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n fileEl.classList.remove(hiddenClass);\n }\n },\n uploadprogress: (file, progress) => {\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n const progressEl = fileEl.querySelector(uploadProgressSelector);\n if (progressEl) {\n progressEl.style.width = `${progress}%`;\n }\n }\n },\n success: (file, response) => {\n submitNum--;\n console.log('[Filer DnD] success:', file.name, 'submitNum:', submitNum, 'response:', response);\n updateUploadNumber();\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n fileEl.remove();\n }\n },\n queuecomplete: () => {\n console.log('[Filer DnD] queuecomplete: submitNum:', submitNum, 'hasErrors:', hasErrors);\n if (submitNum !== 0) {\n console.warn('[Filer DnD] queuecomplete: submitNum is not 0, skipping reload');\n return;\n }\n\n updateUploadNumber();\n\n if (cancelUpload) {\n cancelUpload.classList.add(hiddenClass);\n }\n if (uploadInfo) {\n uploadInfo.classList.add(hiddenClass);\n }\n\n if (hasErrors) {\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n console.log('[Filer DnD] reloading after errors (1s delay)');\n setTimeout(() => {\n reloadOrdered();\n }, 1000);\n } else {\n if (uploadSuccess) {\n uploadSuccess.classList.remove(hiddenClass);\n }\n console.log('[Filer DnD] reloading now via reloadOrdered');\n reloadOrdered();\n }\n },\n error: (file, error) => {\n console.error('[Filer DnD] error:', file.name, 'error:', error, 'submitNum:', submitNum);\n if (error === 'duplicate') {\n // submitNum was never incremented for duplicates\n console.log('[Filer DnD] duplicate file, ignoring');\n return;\n }\n submitNum--;\n console.log('[Filer DnD] after error decrement, submitNum:', submitNum);\n updateUploadNumber();\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n fileEl.remove();\n }\n hasErrors = true;\n if (window.filerShowError) {\n window.filerShowError(`${file.name}: ${error.message || error}`);\n }\n }\n });\n dropzoneInstances.push(dropzoneInstance);\n if (cancelUpload) {\n cancelUpload.addEventListener('click', (clickEvent) => {\n clickEvent.preventDefault();\n cancelUpload.classList.add(hiddenClass);\n if (uploadCanceled) {\n uploadCanceled.classList.remove(hiddenClass);\n }\n dropzoneInstance.removeAllFiles(true);\n });\n }\n });\n } else {\n console.warn('[Filer DnD] No dropzone instances created. dropzones.length:', dropzones.length, 'Dropzone:', !!(dropzone__WEBPACK_IMPORTED_MODULE_0___default()));\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/table-dropzone.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/toggler.js" +/*!*************************************************!*\ + !*** ./filer/static/filer/js/addons/toggler.js ***! + \*************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// #TOGGLER#\n// This script implements the simple element toggle\n\n\nwindow.Cl = window.Cl || {};\n\nclass Toggler {\n constructor(options = {}) {\n this.options = {\n linksSelector: '.js-toggler-link',\n dataHeaderSelector: 'toggler-header-selector',\n dataContentSelector: 'toggler-content-selector',\n collapsedClass: 'js-collapsed',\n expandedClass: 'js-expanded',\n hiddenClass: 'hidden',\n ...options\n };\n\n this.togglerInstances = [];\n\n const links = document.querySelectorAll(this.options.linksSelector);\n links.forEach(link => {\n const togglerInstance = new TogglerConstructor(link, this.options);\n this.togglerInstances.push(togglerInstance);\n });\n }\n\n destroy() {\n this.links = null;\n this.togglerInstances.forEach(togglerInstance => togglerInstance.destroy());\n this.togglerInstances = [];\n }\n}\n\nclass TogglerConstructor {\n constructor(link, options = {}) {\n this.options = { ...options };\n this.link = link;\n this.headerSelector = this.link.dataset[this.options.dataHeaderSelector];\n this.contentSelector = this.link.dataset[this.options.dataContentSelector];\n this.header = document.querySelector(this.headerSelector);\n this.header = this.header || this.link;\n this.content = document.querySelector(this.contentSelector);\n\n if (!this.content) {\n return;\n }\n\n this._initLink();\n }\n\n _updateClasses() {\n if (this.content.classList.contains(this.options.hiddenClass)) {\n this.header.classList.remove(this.options.expandedClass);\n this.header.classList.add(this.options.collapsedClass);\n } else {\n this.header.classList.add(this.options.expandedClass);\n this.header.classList.remove(this.options.collapsedClass);\n }\n }\n\n _onTogglerClick(clickEvent) {\n this.content.classList.toggle(this.options.hiddenClass);\n this._updateClasses();\n clickEvent.preventDefault();\n }\n\n _initLink() {\n this._updateClasses();\n this.link.addEventListener('click', e => this._onTogglerClick(e));\n }\n\n destroy() {\n this.options = null;\n this.link = null;\n }\n}\n\nCl.Toggler = Toggler;\nCl.TogglerConstructor = TogglerConstructor;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Toggler);\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/toggler.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/tooltip.js" +/*!*************************************************!*\ + !*** ./filer/static/filer/js/addons/tooltip.js ***! + \*************************************************/ +() { + +"use strict"; +eval("{\nwindow.Cl = window.Cl || {};\n\nCl.filerTooltip = () => {\n const tooltipSelector = '.js-filer-tooltip';\n const tooltips = document.querySelectorAll(tooltipSelector);\n\n tooltips.forEach((element) => {\n element.addEventListener('mouseover', function () {\n const title = this.getAttribute('title');\n if (!title) {\n return;\n }\n\n this.dataset.filerTooltip = title;\n this.removeAttribute('title');\n\n const tooltip = document.createElement('p');\n tooltip.className = 'filer-tooltip';\n tooltip.textContent = title;\n\n const container = document.querySelector(tooltipSelector);\n if (container) {\n container.appendChild(tooltip);\n }\n });\n\n element.addEventListener('mouseout', function () {\n const title = this.dataset.filerTooltip;\n if (title) {\n this.setAttribute('title', title);\n }\n\n const existingTooltips = document.querySelectorAll('.filer-tooltip');\n existingTooltips.forEach((t) => {\n t.remove();\n });\n });\n });\n};\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/tooltip.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/upload-button.js" +/*!*******************************************************!*\ + !*** ./filer/static/filer/js/addons/upload-button.js ***! + \*******************************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__);\n// #UPLOAD BUTTON#\n// This script implements the upload button logic\n\n\n\n\n/* globals Cl */\n\ndocument.addEventListener('DOMContentLoaded', () => {\n let submitNum = 0;\n let maxSubmitNum = 1;\n const uploadButton = document.querySelector('.js-upload-button');\n if (!uploadButton) {\n return;\n }\n\n const uploadButtonDisabled = document.querySelector('.js-upload-button-disabled');\n const uploadUrl = uploadButton.dataset.url;\n\n if (!uploadUrl) {\n return;\n }\n\n const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome');\n const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container');\n const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info');\n const uploadNumber = document.querySelector('.js-filer-dropzone-upload-number');\n const uploadFileNameSelector = '.js-filer-dropzone-file-name';\n const uploadProgressSelector = '.js-filer-dropzone-progress';\n const uploadSuccess = document.querySelector('.js-filer-dropzone-upload-success');\n const uploadCanceled = document.querySelector('.js-filer-dropzone-upload-canceled');\n const uploadCancel = document.querySelector('.js-filer-dropzone-cancel');\n const infoMessage = document.querySelector('.js-filer-dropzone-info-message');\n const hiddenClass = 'hidden';\n const maxUploaderConnections = parseInt(uploadButton.dataset.maxUploaderConnections || 3, 10);\n const maxFilesize = parseInt(uploadButton.dataset.maxFilesize || 0, 10);\n let hasErrors = false;\n\n const updateUploadNumber = () => {\n if (uploadNumber) {\n uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`;\n }\n };\n\n const removeButton = () => {\n if (uploadButton) {\n uploadButton.remove();\n }\n };\n\n // utility\n const updateQuery = (uri, key, value) => {\n const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');\n const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n const hash = window.location.hash;\n uri = uri.replace(/#.*$/, '');\n if (uri.match(re)) {\n return uri.replace(re, `$1${key}=${value}$2`) + hash;\n } else {\n return uri + separator + key + '=' + value + hash;\n }\n };\n\n const reloadOrdered = () => {\n const uri = window.location.toString();\n window.location.replace(updateQuery(uri, 'order_by', '-modified_at'));\n };\n\n Cl.mediator.subscribe('filer-upload-in-progress', removeButton);\n\n // Prevent default navigation which can interfere with the file dialog\n uploadButton.addEventListener('click', (evt) => {\n evt.preventDefault();\n });\n\n // Initialize Dropzone on the upload button\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n\n let dropzone;\n try {\n dropzone = new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(uploadButton, {\n url: uploadUrl,\n paramName: 'file',\n maxFilesize: maxFilesize, // already in MB\n parallelUploads: maxUploaderConnections,\n clickable: uploadButton,\n previewTemplate: '
    ',\n addRemoveLinks: false,\n autoProcessQueue: true\n });\n } catch (e) {\n console.error('[Filer Upload] Failed to create Dropzone instance:', e);\n return;\n }\n\n dropzone.on('addedfile', (file) => {\n Cl.mediator.remove('filer-upload-in-progress', removeButton);\n Cl.mediator.publish('filer-upload-in-progress');\n submitNum++;\n\n maxSubmitNum = dropzone.files.length;\n\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (uploadSuccess) {\n uploadSuccess.classList.add(hiddenClass);\n }\n if (uploadInfoContainer) {\n uploadInfoContainer.classList.remove(hiddenClass);\n }\n if (uploadCancel) {\n uploadCancel.classList.remove(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.add(hiddenClass);\n }\n\n updateUploadNumber();\n });\n\n dropzone.on('uploadprogress', (file, progress) => {\n const percent = Math.round(progress);\n const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`;\n const fileItem = document.getElementById(fileId);\n let uploadInfoClone;\n\n if (fileItem) {\n const progressBar = fileItem.querySelector(uploadProgressSelector);\n if (progressBar) {\n progressBar.style.width = `${percent}%`;\n }\n } else if (uploadInfo) {\n uploadInfoClone = uploadInfo.cloneNode(true);\n\n const fileNameEl = uploadInfoClone.querySelector(uploadFileNameSelector);\n if (fileNameEl) {\n fileNameEl.textContent = file.name;\n }\n const progressEl = uploadInfoClone.querySelector(uploadProgressSelector);\n if (progressEl) {\n progressEl.style.width = `${percent}%`;\n }\n uploadInfoClone.classList.remove(hiddenClass);\n uploadInfoClone.setAttribute('id', fileId);\n if (uploadInfoContainer) {\n uploadInfoContainer.appendChild(uploadInfoClone);\n }\n }\n });\n\n dropzone.on('success', (file, response) => {\n const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`;\n const fileEl = document.getElementById(fileId);\n if (fileEl) {\n fileEl.remove();\n }\n\n if (response.error) {\n hasErrors = true;\n window.filerShowError(`${file.name}: ${response.error}`);\n }\n\n submitNum--;\n updateUploadNumber();\n\n if (submitNum === 0) {\n maxSubmitNum = 1;\n\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.add(hiddenClass);\n }\n if (uploadCancel) {\n uploadCancel.classList.add(hiddenClass);\n }\n if (uploadSuccess) {\n uploadSuccess.classList.remove(hiddenClass);\n }\n\n if (hasErrors) {\n setTimeout(reloadOrdered, 1000);\n } else {\n reloadOrdered();\n }\n }\n });\n\n dropzone.on('error', (file, errorMessage) => {\n const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`;\n const fileEl = document.getElementById(fileId);\n if (fileEl) {\n fileEl.remove();\n }\n\n hasErrors = true;\n window.filerShowError(`${file.name}: ${errorMessage}`);\n\n submitNum--;\n updateUploadNumber();\n\n if (submitNum === 0) {\n maxSubmitNum = 1;\n\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.add(hiddenClass);\n }\n if (uploadCancel) {\n uploadCancel.classList.add(hiddenClass);\n }\n if (uploadSuccess) {\n uploadSuccess.classList.remove(hiddenClass);\n }\n\n setTimeout(reloadOrdered, 1000);\n }\n });\n\n if (uploadCancel) {\n uploadCancel.addEventListener('click', (clickEvent) => {\n clickEvent.preventDefault();\n uploadCancel.classList.add(hiddenClass);\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n if (uploadInfoContainer) {\n uploadInfoContainer.classList.add(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.remove(hiddenClass);\n }\n\n setTimeout(() => {\n window.location.reload();\n }, 1000);\n });\n }\n\n if (uploadButtonDisabled && Cl.filerTooltip) {\n Cl.filerTooltip();\n }\n\n // Fire custom event after scripts have been executed\n document.dispatchEvent(new Event('filer-upload-scripts-executed'));\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/upload-button.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/addons/widget.js" +/*!************************************************!*\ + !*** ./filer/static/filer/js/addons/widget.js ***! + \************************************************/ +() { + +"use strict"; +eval("{\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const filer_clear = (ev) => {\n ev.preventDefault();\n\n const clearer = ev.currentTarget;\n const container = clearer.closest('.filerFile');\n if (!container) {\n return;\n }\n\n const input = container.querySelector('input');\n const thumbnail = container.querySelector('.thumbnail_img');\n const description = container.querySelector('.description_text');\n const addImageButton = container.querySelector('.lookup');\n const editImageButton = container.querySelector('.edit');\n const dropzoneMessage = container.parentElement.querySelector('.dz-message');\n const hiddenClass = 'hidden';\n\n clearer.classList.add(hiddenClass);\n if (input) {\n input.value = '';\n }\n if (thumbnail) {\n thumbnail.classList.add(hiddenClass);\n var thumbnailLink = thumbnail.parentElement;\n if (thumbnailLink.tagName === 'A') {\n thumbnailLink.removeAttribute('href');\n }\n }\n if (addImageButton) {\n addImageButton.classList.remove('related-lookup-change');\n }\n if (editImageButton) {\n editImageButton.classList.remove('related-lookup-change');\n }\n if (dropzoneMessage) {\n dropzoneMessage.classList.remove(hiddenClass);\n }\n if (description) {\n description.textContent = '';\n }\n };\n\n const foreignKeyFields = document.querySelectorAll('.filerFile .vForeignKeyRawIdAdminField');\n foreignKeyFields.forEach((field) => {\n field.setAttribute('type', 'hidden');\n });\n\n // Remove any existing handlers and add new ones\n const clearers = document.querySelectorAll('.filerFile .filerClearer');\n clearers.forEach((clearer) => {\n clearer.addEventListener('click', filer_clear);\n });\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/widget.js?\n}"); + +/***/ }, + +/***/ "./filer/static/filer/js/base.js" +/*!***************************************!*\ + !*** ./filer/static/filer/js/base.js ***! + \***************************************/ +(__unused_webpack_module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mediator-js/lib/mediator */ \"./node_modules/mediator-js/lib/mediator.js\");\n/* harmony import */ var mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _addons_focal_point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addons/focal-point */ \"./filer/static/filer/js/addons/focal-point.js\");\n/* harmony import */ var _addons_toggler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addons/toggler */ \"./filer/static/filer/js/addons/toggler.js\");\n/* harmony import */ var _addons_dropdown_menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./addons/dropdown-menu */ \"./filer/static/filer/js/addons/dropdown-menu.js\");\n/* harmony import */ var _addons_dropdown_menu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_addons_dropdown_menu__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _addons_upload_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addons/upload-button */ \"./filer/static/filer/js/addons/upload-button.js\");\n/* harmony import */ var _addons_dropzone_init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./addons/dropzone.init */ \"./filer/static/filer/js/addons/dropzone.init.js\");\n/* harmony import */ var _addons_table_dropzone__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./addons/table-dropzone */ \"./filer/static/filer/js/addons/table-dropzone.js\");\n/* harmony import */ var _addons_copy_move_files__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./addons/copy-move-files */ \"./filer/static/filer/js/addons/copy-move-files.js\");\n/* harmony import */ var _addons_copy_move_files__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_addons_copy_move_files__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _addons_tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./addons/tooltip */ \"./filer/static/filer/js/addons/tooltip.js\");\n/* harmony import */ var _addons_tooltip__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_addons_tooltip__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _addons_widget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./addons/widget */ \"./filer/static/filer/js/addons/widget.js\");\n/* harmony import */ var _addons_widget__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_addons_widget__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _addons_popup_handling__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./addons/popup_handling */ \"./filer/static/filer/js/addons/popup_handling.js\");\n/* harmony import */ var _addons_popup_handling__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_addons_popup_handling__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _addons_filer_popup_response__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./addons/filer_popup_response */ \"./filer/static/filer/js/addons/filer_popup_response.js\");\n/* harmony import */ var _addons_filer_popup_response__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_addons_filer_popup_response__WEBPACK_IMPORTED_MODULE_11__);\n// #####################################################################################################################\n// #BASE#\n// Basic logic django filer\n\n\n\n\n\n\n// Import self-initializing addons so they are included in the bundle\n\n\n\n\n\n\n\n\n\n\nwindow.Cl = window.Cl || {};\nCl.mediator = new (mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0___default())(); // mediator init\nCl.FocalPoint = _addons_focal_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nCl.Toggler = _addons_toggler__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n let showErrorTimeout;\n\n window.filerShowError = (message) => {\n const messages = document.querySelector('.messagelist');\n const header = document.querySelector('#header');\n const filerErrorClass = 'js-filer-error';\n const tpl = `
    • {msg}
    `;\n const msg = tpl.replace('{msg}', message);\n\n if (messages) {\n messages.outerHTML = msg;\n } else if (header) {\n header.insertAdjacentHTML('afterend', msg);\n }\n\n if (showErrorTimeout) {\n clearTimeout(showErrorTimeout);\n }\n\n showErrorTimeout = setTimeout(() => {\n const errorEl = document.querySelector(`.${filerErrorClass}`);\n if (errorEl) {\n errorEl.remove();\n }\n }, 5000);\n };\n\n const filterFiles = document.querySelector('.js-filter-files');\n if (filterFiles) {\n\n filterFiles.addEventListener('focus', (event) => {\n const container = event.target.closest('.navigator-top-nav');\n if (container) {\n container.classList.add('search-is-focused');\n }\n });\n\n filterFiles.addEventListener('blur', (event) => {\n const container = event.target.closest('.navigator-top-nav');\n if (container) {\n const dropdownTrigger = container.querySelector('.dropdown-container a');\n if (!dropdownTrigger || event.relatedTarget !== dropdownTrigger) {\n container.classList.remove('search-is-focused');\n }\n }\n });\n }\n\n // Search form submission logging\n const searchForm = document.querySelector('.js-filter-files-container');\n if (searchForm) {\n searchForm.addEventListener('submit', (event) => {\n // form submit handling\n });\n }\n\n // Focus on the search field on page load\n (() => {\n const filter = document.querySelector('.js-filter-files');\n const containerSelector = '.navigator-top-nav';\n const container = document.querySelector(containerSelector);\n const searchDropdown = container?.querySelector('.filter-search-wrapper .filer-dropdown-container');\n\n if (filter) {\n filter.addEventListener('keydown', function (event) {\n if (event.key === 'Enter') {\n // Enter key pressed\n }\n const navContainer = this.closest(containerSelector);\n if (navContainer) {\n navContainer.classList.add('search-is-focused');\n }\n });\n\n if (searchDropdown) {\n searchDropdown.addEventListener('show.bs.filer-dropdown', () => {\n if (container) {\n container.classList.add('search-is-focused');\n }\n });\n searchDropdown.addEventListener('hide.bs.filer-dropdown', () => {\n if (container) {\n container.classList.remove('search-is-focused');\n }\n });\n }\n }\n })();\n\n // show counter if file is selected\n (() => {\n const navigatorTable = document.querySelectorAll('.navigator-table tr, .navigator-list .list-item');\n const actionList = document.querySelector('.actions-wrapper');\n const actionSelect = document.querySelectorAll(\n '.action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a'\n );\n\n // timeout is needed to wait until table row has class selected.\n setTimeout(() => {\n // Set classes for checked items\n actionSelect.forEach((el) => {\n if (el.checked) {\n const listItem = el.closest('.list-item');\n if (listItem) {\n listItem.classList.add('selected');\n }\n }\n });\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (hasSelected && actionList) {\n actionList.classList.add('action-selected');\n }\n }, 100);\n\n actionSelect.forEach((el) => {\n el.addEventListener('change', function () {\n // Mark element selected (for table view this is done by Django admin js - we do it ourselves\n const listItem = this.closest('.list-item');\n if (listItem) {\n if (this.checked) {\n listItem.classList.add('selected');\n } else {\n listItem.classList.remove('selected');\n }\n }\n // setTimeout makes sure that change event fires before click event which is reliable to admin\n setTimeout(() => {\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (actionList) {\n if (hasSelected) {\n actionList.classList.add('action-selected');\n } else {\n actionList.classList.remove('action-selected');\n }\n }\n }, 0);\n });\n });\n })();\n\n (() => {\n const actionsMenu = document.querySelector('.js-actions-menu');\n if (!actionsMenu) {\n return;\n }\n\n const dropdown = actionsMenu.querySelector('.filer-dropdown-menu');\n const actionsSelect = document.querySelector('.actions select[name=\"action\"]');\n const actionsSelectOptions = actionsSelect?.querySelectorAll('option') || [];\n const actionsGo = document.querySelector('.actions button[type=\"submit\"]');\n const actionDelete = document.querySelector('.js-action-delete');\n const actionCopy = document.querySelector('.js-action-copy');\n const actionMove = document.querySelector('.js-action-move');\n const valueDelete = 'delete_files_or_folders';\n const valueCopy = 'copy_files_and_folders';\n const valueMove = 'move_files_and_folders';\n const navigatorTable = document.querySelectorAll('.navigator-table tr, .navigator-list .list-item');\n\n // triggers delete copy and move actions on separate buttons\n const actionsButton = (optionValue, actionButton) => {\n if (!actionButton) {\n return;\n }\n actionsSelectOptions.forEach((option) => {\n if (option.value === optionValue) {\n actionButton.style.display = '';\n actionButton.addEventListener('click', (e) => {\n e.preventDefault();\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (hasSelected && actionsSelect && actionsGo) {\n actionsSelect.value = optionValue;\n const targetOption = actionsSelect.querySelector(`option[value=\"${optionValue}\"]`);\n if (targetOption) {\n targetOption.selected = true;\n }\n actionsGo.click();\n }\n });\n }\n });\n };\n actionsButton(valueDelete, actionDelete);\n actionsButton(valueCopy, actionCopy);\n actionsButton(valueMove, actionMove);\n\n // mocking the action buttons to work in frontend UI\n actionsSelectOptions.forEach((option, index) => {\n if (index !== 0) {\n const li = document.createElement('li');\n const a = document.createElement('a');\n a.href = '#';\n a.textContent = option.textContent;\n\n if (option.value === valueDelete || option.value === valueCopy || option.value === valueMove) {\n a.classList.add('hidden');\n }\n\n li.appendChild(a);\n if (dropdown) {\n dropdown.appendChild(li);\n }\n }\n });\n if (dropdown) {\n\n dropdown.addEventListener('click', (clickEvent) => {\n if (clickEvent.target.tagName === 'A') {\n const li = clickEvent.target.closest('li');\n const targetIndex = Array.from(dropdown.querySelectorAll('li')).indexOf(li) + 1;\n\n clickEvent.preventDefault();\n\n if (actionsSelect && actionsGo) {\n const options = actionsSelect.querySelectorAll('option');\n if (options[targetIndex]) {\n actionsSelect.value = options[targetIndex].value;\n options[targetIndex].selected = true;\n }\n actionsGo.click();\n }\n }\n });\n }\n\n actionsMenu.addEventListener('click', (e) => {\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (!hasSelected) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n })();\n\n // breaks header if breadcrumbs name reaches a width of 80px\n (() => {\n const minBreadcrumbWidth = 80;\n const header = document.querySelector('.navigator-top-nav');\n\n if (!header) {\n return;\n }\n\n const breadcrumbContainer = document.querySelector('.breadcrumbs-container');\n if (!breadcrumbContainer) {\n return;\n }\n\n const breadcrumbFolder = breadcrumbContainer.querySelector('.navigator-breadcrumbs');\n const breadcrumbDropdown = breadcrumbContainer.querySelector('.filer-dropdown-container');\n const filterFilesContainer = document.querySelector('.filter-files-container');\n const actionsWrapper = document.querySelector('.actions-wrapper');\n const navigatorButtonWrapper = document.querySelector('.navigator-button-wrapper');\n\n const breadcrumbFolderWidth = breadcrumbFolder?.offsetWidth || 0;\n const breadcrumbDropdownWidth = breadcrumbDropdown?.offsetWidth || 0;\n const searchWidth = filterFilesContainer?.offsetWidth || 0;\n const actionsWidth = actionsWrapper?.offsetWidth || 0;\n const buttonsWidth = navigatorButtonWrapper?.offsetWidth || 0;\n\n const headerStyles = window.getComputedStyle(header);\n const headerPadding = parseInt(headerStyles.paddingLeft, 10) + parseInt(headerStyles.paddingRight, 10);\n\n let headerWidth = header.offsetWidth;\n const fullHeaderWidth = minBreadcrumbWidth + breadcrumbFolderWidth +\n breadcrumbDropdownWidth + searchWidth + actionsWidth + buttonsWidth + headerPadding;\n\n const breadcrumbSizeHandlerClassName = 'breadcrumb-min-width';\n\n const breadcrumbSizeHandler = () => {\n if (headerWidth < fullHeaderWidth) {\n header.classList.add(breadcrumbSizeHandlerClassName);\n } else {\n header.classList.remove(breadcrumbSizeHandlerClassName);\n }\n };\n\n breadcrumbSizeHandler();\n\n window.addEventListener('resize', () => {\n headerWidth = header.offsetWidth;\n breadcrumbSizeHandler();\n });\n })();\n // thumbnail folder admin view\n (() => {\n const actionEls = document.querySelectorAll('.navigator-list .list-item input.action-select');\n const foldersActionCheckboxes = '.navigator-list .navigator-folders-body .list-item input.action-select';\n const filesActionCheckboxes = '.navigator-list .navigator-files-body .list-item input.action-select';\n const allFilesToggle = document.querySelector('#files-action-toggle');\n const allFoldersToggle = document.querySelector('#folders-action-toggle');\n\n if (allFoldersToggle) {\n allFoldersToggle.addEventListener('click', function () {\n const checkboxes = document.querySelectorAll(foldersActionCheckboxes);\n if (this.checked) {\n checkboxes.forEach((cb) => {\n if (!cb.checked) {\n cb.click();\n }\n });\n } else {\n checkboxes.forEach((cb) => {\n if (cb.checked) {\n cb.click();\n }\n });\n }\n });\n }\n\n if (allFilesToggle) {\n allFilesToggle.addEventListener('click', function () {\n const checkboxes = document.querySelectorAll(filesActionCheckboxes);\n if (this.checked) {\n checkboxes.forEach((cb) => {\n if (!cb.checked) {\n cb.click();\n }\n });\n } else {\n checkboxes.forEach((cb) => {\n if (cb.checked) {\n cb.click();\n }\n });\n }\n });\n }\n\n actionEls.forEach((el) => {\n el.addEventListener('click', function () {\n const filesCheckboxes = document.querySelectorAll(filesActionCheckboxes);\n const foldersCheckboxes = document.querySelectorAll(foldersActionCheckboxes);\n\n if (!this.checked) {\n const hasUncheckedFiles = Array.from(filesCheckboxes).some((cb) => !cb.checked);\n const hasUncheckedFolders = Array.from(foldersCheckboxes).some((cb) => !cb.checked);\n\n if (hasUncheckedFiles && allFilesToggle) {\n allFilesToggle.checked = false;\n }\n if (hasUncheckedFolders && allFoldersToggle) {\n allFoldersToggle.checked = false;\n }\n } else {\n const allFilesChecked = Array.from(filesCheckboxes).every((cb) => cb.checked);\n const allFoldersChecked = Array.from(foldersCheckboxes).every((cb) => cb.checked);\n\n if (allFilesChecked && allFilesToggle) {\n allFilesToggle.checked = true;\n }\n if (allFoldersChecked && allFoldersToggle) {\n allFoldersToggle.checked = true;\n }\n }\n });\n });\n\n const clearLink = document.querySelector('.navigator .actions .clear a');\n if (clearLink) {\n clearLink.addEventListener('click', () => {\n if (allFoldersToggle) {\n allFoldersToggle.checked = false;\n }\n if (allFilesToggle) {\n allFilesToggle.checked = false;\n }\n });\n }\n })();\n\n const copyUrlButtons = document.querySelectorAll('.js-copy-url');\n copyUrlButtons.forEach((button) => {\n button.addEventListener('click', function (e) {\n const url = new URL(this.dataset.url, document.location.href);\n const msg = this.dataset.msg || 'URL copied to clipboard';\n const infobox = document.createElement('template');\n e.preventDefault();\n\n const existingTooltips = document.querySelectorAll('.info.filer-tooltip');\n existingTooltips.forEach((el) => {\n el.remove();\n });\n\n navigator.clipboard.writeText(url.href);\n infobox.innerHTML = `
    ${msg}
    `;\n this.classList.add('filer-tooltip-wrapper');\n this.appendChild(infobox.content.firstChild);\n\n const self = this;\n setTimeout(() => {\n const tooltip = self.querySelector('.info');\n if (tooltip) {\n tooltip.remove();\n }\n }, 1200);\n });\n });\n\n // Initialize FocalPoint\n const focalPoint = new _addons_focal_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n focalPoint.initialize();\n\n // Initialize Toggler (auto-initializes in constructor)\n new _addons_toggler__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/base.js?\n}"); + +/***/ }, + +/***/ "./node_modules/dropzone/dist/dropzone.js" +/*!************************************************!*\ + !*** ./node_modules/dropzone/dist/dropzone.js ***! + \************************************************/ +(module) { + +eval("{(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse // removed by dead control flow\n{ var i, a; }\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 3099:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 6077:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_703__) {\n\nvar isObject = __nested_webpack_require_703__(111);\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 1223:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1001__) {\n\nvar wellKnownSymbol = __nested_webpack_require_1001__(5112);\nvar create = __nested_webpack_require_1001__(30);\nvar definePropertyModule = __nested_webpack_require_1001__(3070);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ 1530:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1715__) {\n\n\"use strict\";\n\nvar charAt = __nested_webpack_require_1715__(8710).charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ 5787:\n/***/ (function(module) {\n\nmodule.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 9670:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2317__) {\n\nvar isObject = __nested_webpack_require_2317__(111);\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 4019:\n/***/ (function(module) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2726__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __nested_webpack_require_2726__(4019);\nvar DESCRIPTORS = __nested_webpack_require_2726__(9781);\nvar global = __nested_webpack_require_2726__(7854);\nvar isObject = __nested_webpack_require_2726__(111);\nvar has = __nested_webpack_require_2726__(6656);\nvar classof = __nested_webpack_require_2726__(648);\nvar createNonEnumerableProperty = __nested_webpack_require_2726__(8880);\nvar redefine = __nested_webpack_require_2726__(1320);\nvar defineProperty = __nested_webpack_require_2726__(3070).f;\nvar getPrototypeOf = __nested_webpack_require_2726__(9518);\nvar setPrototypeOf = __nested_webpack_require_2726__(7674);\nvar wellKnownSymbol = __nested_webpack_require_2726__(5112);\nvar uid = __nested_webpack_require_2726__(9711);\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 3331:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8934__) {\n\n\"use strict\";\n\nvar global = __nested_webpack_require_8934__(7854);\nvar DESCRIPTORS = __nested_webpack_require_8934__(9781);\nvar NATIVE_ARRAY_BUFFER = __nested_webpack_require_8934__(4019);\nvar createNonEnumerableProperty = __nested_webpack_require_8934__(8880);\nvar redefineAll = __nested_webpack_require_8934__(2248);\nvar fails = __nested_webpack_require_8934__(7293);\nvar anInstance = __nested_webpack_require_8934__(5787);\nvar toInteger = __nested_webpack_require_8934__(9958);\nvar toLength = __nested_webpack_require_8934__(7466);\nvar toIndex = __nested_webpack_require_8934__(7067);\nvar IEEE754 = __nested_webpack_require_8934__(1179);\nvar getPrototypeOf = __nested_webpack_require_8934__(9518);\nvar setPrototypeOf = __nested_webpack_require_8934__(7674);\nvar getOwnPropertyNames = __nested_webpack_require_8934__(8006).f;\nvar defineProperty = __nested_webpack_require_8934__(3070).f;\nvar arrayFill = __nested_webpack_require_8934__(1285);\nvar setToStringTag = __nested_webpack_require_8934__(8003);\nvar InternalStateModule = __nested_webpack_require_8934__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n\n/***/ }),\n\n/***/ 1048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_17881__) {\n\n\"use strict\";\n\nvar toObject = __nested_webpack_require_17881__(7908);\nvar toAbsoluteIndex = __nested_webpack_require_17881__(1400);\nvar toLength = __nested_webpack_require_17881__(7466);\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 1285:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_18911__) {\n\n\"use strict\";\n\nvar toObject = __nested_webpack_require_18911__(7908);\nvar toAbsoluteIndex = __nested_webpack_require_18911__(1400);\nvar toLength = __nested_webpack_require_18911__(7466);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 8533:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_19717__) {\n\n\"use strict\";\n\nvar $forEach = __nested_webpack_require_19717__(2092).forEach;\nvar arrayMethodIsStrict = __nested_webpack_require_19717__(9341);\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ 8457:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_20278__) {\n\n\"use strict\";\n\nvar bind = __nested_webpack_require_20278__(9974);\nvar toObject = __nested_webpack_require_20278__(7908);\nvar callWithSafeIterationClosing = __nested_webpack_require_20278__(3411);\nvar isArrayIteratorMethod = __nested_webpack_require_20278__(7659);\nvar toLength = __nested_webpack_require_20278__(7466);\nvar createProperty = __nested_webpack_require_20278__(6135);\nvar getIteratorMethod = __nested_webpack_require_20278__(1246);\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1318:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_22092__) {\n\nvar toIndexedObject = __nested_webpack_require_22092__(5656);\nvar toLength = __nested_webpack_require_22092__(7466);\nvar toAbsoluteIndex = __nested_webpack_require_22092__(1400);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 2092:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_23446__) {\n\nvar bind = __nested_webpack_require_23446__(9974);\nvar IndexedObject = __nested_webpack_require_23446__(8361);\nvar toObject = __nested_webpack_require_23446__(7908);\nvar toLength = __nested_webpack_require_23446__(7466);\nvar arraySpeciesCreate = __nested_webpack_require_23446__(5417);\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n\n\n/***/ }),\n\n/***/ 6583:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_26271__) {\n\n\"use strict\";\n\nvar toIndexedObject = __nested_webpack_require_26271__(5656);\nvar toInteger = __nested_webpack_require_26271__(9958);\nvar toLength = __nested_webpack_require_26271__(7466);\nvar arrayMethodIsStrict = __nested_webpack_require_26271__(9341);\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n\n\n/***/ }),\n\n/***/ 1194:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_27452__) {\n\nvar fails = __nested_webpack_require_27452__(7293);\nvar wellKnownSymbol = __nested_webpack_require_27452__(5112);\nvar V8_VERSION = __nested_webpack_require_27452__(7392);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n\n/***/ 9341:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_28188__) {\n\n\"use strict\";\n\nvar fails = __nested_webpack_require_28188__(7293);\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n\n\n/***/ }),\n\n/***/ 3671:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_28629__) {\n\nvar aFunction = __nested_webpack_require_28629__(3099);\nvar toObject = __nested_webpack_require_28629__(7908);\nvar IndexedObject = __nested_webpack_require_28629__(8361);\nvar toLength = __nested_webpack_require_28629__(7466);\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 5417:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_30017__) {\n\nvar isObject = __nested_webpack_require_30017__(111);\nvar isArray = __nested_webpack_require_30017__(3157);\nvar wellKnownSymbol = __nested_webpack_require_30017__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ 3411:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_30798__) {\n\nvar anObject = __nested_webpack_require_30798__(9670);\nvar iteratorClose = __nested_webpack_require_30798__(9212);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ 7072:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_31303__) {\n\nvar wellKnownSymbol = __nested_webpack_require_31303__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ 4326:\n/***/ (function(module) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ 648:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_32503__) {\n\nvar TO_STRING_TAG_SUPPORT = __nested_webpack_require_32503__(1694);\nvar classofRaw = __nested_webpack_require_32503__(4326);\nvar wellKnownSymbol = __nested_webpack_require_32503__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 9920:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_33565__) {\n\nvar has = __nested_webpack_require_33565__(6656);\nvar ownKeys = __nested_webpack_require_33565__(3887);\nvar getOwnPropertyDescriptorModule = __nested_webpack_require_33565__(1236);\nvar definePropertyModule = __nested_webpack_require_33565__(3070);\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ 8544:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_34217__) {\n\nvar fails = __nested_webpack_require_34217__(7293);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 4994:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_34520__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __nested_webpack_require_34520__(3383).IteratorPrototype;\nvar create = __nested_webpack_require_34520__(30);\nvar createPropertyDescriptor = __nested_webpack_require_34520__(9114);\nvar setToStringTag = __nested_webpack_require_34520__(8003);\nvar Iterators = __nested_webpack_require_34520__(7497);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ 8880:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_35290__) {\n\nvar DESCRIPTORS = __nested_webpack_require_35290__(9781);\nvar definePropertyModule = __nested_webpack_require_35290__(3070);\nvar createPropertyDescriptor = __nested_webpack_require_35290__(9114);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 9114:\n/***/ (function(module) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 6135:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_35996__) {\n\n\"use strict\";\n\nvar toPrimitive = __nested_webpack_require_35996__(7593);\nvar definePropertyModule = __nested_webpack_require_35996__(3070);\nvar createPropertyDescriptor = __nested_webpack_require_35996__(9114);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ 654:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_36503__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_36503__(2109);\nvar createIteratorConstructor = __nested_webpack_require_36503__(4994);\nvar getPrototypeOf = __nested_webpack_require_36503__(9518);\nvar setPrototypeOf = __nested_webpack_require_36503__(7674);\nvar setToStringTag = __nested_webpack_require_36503__(8003);\nvar createNonEnumerableProperty = __nested_webpack_require_36503__(8880);\nvar redefine = __nested_webpack_require_36503__(1320);\nvar wellKnownSymbol = __nested_webpack_require_36503__(5112);\nvar IS_PURE = __nested_webpack_require_36503__(1913);\nvar Iterators = __nested_webpack_require_36503__(7497);\nvar IteratorsCore = __nested_webpack_require_36503__(3383);\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ 9781:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_40475__) {\n\nvar fails = __nested_webpack_require_40475__(7293);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_40795__) {\n\nvar global = __nested_webpack_require_40795__(7854);\nvar isObject = __nested_webpack_require_40795__(111);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 8324:\n/***/ (function(module) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ 8113:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_42025__) {\n\nvar getBuiltIn = __nested_webpack_require_42025__(5005);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ 7392:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_42230__) {\n\nvar global = __nested_webpack_require_42230__(7854);\nvar userAgent = __nested_webpack_require_42230__(8113);\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ 748:\n/***/ (function(module) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 2109:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_43065__) {\n\nvar global = __nested_webpack_require_43065__(7854);\nvar getOwnPropertyDescriptor = __nested_webpack_require_43065__(1236).f;\nvar createNonEnumerableProperty = __nested_webpack_require_43065__(8880);\nvar redefine = __nested_webpack_require_43065__(1320);\nvar setGlobal = __nested_webpack_require_43065__(3505);\nvar copyConstructorProperties = __nested_webpack_require_43065__(9920);\nvar isForced = __nested_webpack_require_43065__(4705);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 7293:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 7007:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_45726__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__nested_webpack_require_45726__(4916);\nvar redefine = __nested_webpack_require_45726__(1320);\nvar fails = __nested_webpack_require_45726__(7293);\nvar wellKnownSymbol = __nested_webpack_require_45726__(5112);\nvar regexpExec = __nested_webpack_require_45726__(2261);\nvar createNonEnumerableProperty = __nested_webpack_require_45726__(8880);\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$
    ') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ 9974:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_50488__) {\n\nvar aFunction = __nested_webpack_require_50488__(3099);\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 5005:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_51177__) {\n\nvar path = __nested_webpack_require_51177__(857);\nvar global = __nested_webpack_require_51177__(7854);\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 1246:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_51701__) {\n\nvar classof = __nested_webpack_require_51701__(648);\nvar Iterators = __nested_webpack_require_51701__(7497);\nvar wellKnownSymbol = __nested_webpack_require_51701__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 8554:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_52112__) {\n\nvar anObject = __nested_webpack_require_52112__(9670);\nvar getIteratorMethod = __nested_webpack_require_52112__(1246);\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n\n\n/***/ }),\n\n/***/ 647:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_52531__) {\n\nvar toObject = __nested_webpack_require_52531__(7908);\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n\n\n/***/ }),\n\n/***/ 7854:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_53970__) {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n /* global globalThis -- safe */\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof __nested_webpack_require_53970__.g == 'object' && __nested_webpack_require_53970__.g) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 6656:\n/***/ (function(module) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ 3501:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 490:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_54852__) {\n\nvar getBuiltIn = __nested_webpack_require_54852__(5005);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 4664:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_55056__) {\n\nvar DESCRIPTORS = __nested_webpack_require_55056__(9781);\nvar fails = __nested_webpack_require_55056__(7293);\nvar createElement = __nested_webpack_require_55056__(317);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 1179:\n/***/ (function(module) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n/***/ }),\n\n/***/ 8361:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_58329__) {\n\nvar fails = __nested_webpack_require_58329__(7293);\nvar classof = __nested_webpack_require_58329__(4326);\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ 9587:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_58925__) {\n\nvar isObject = __nested_webpack_require_58925__(111);\nvar setPrototypeOf = __nested_webpack_require_58925__(7674);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 2788:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_59686__) {\n\nvar store = __nested_webpack_require_59686__(5465);\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 9909:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_60112__) {\n\nvar NATIVE_WEAK_MAP = __nested_webpack_require_60112__(8536);\nvar global = __nested_webpack_require_60112__(7854);\nvar isObject = __nested_webpack_require_60112__(111);\nvar createNonEnumerableProperty = __nested_webpack_require_60112__(8880);\nvar objectHas = __nested_webpack_require_60112__(6656);\nvar shared = __nested_webpack_require_60112__(5465);\nvar sharedKey = __nested_webpack_require_60112__(6200);\nvar hiddenKeys = __nested_webpack_require_60112__(3501);\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 7659:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_61804__) {\n\nvar wellKnownSymbol = __nested_webpack_require_61804__(5112);\nvar Iterators = __nested_webpack_require_61804__(7497);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 3157:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62240__) {\n\nvar classof = __nested_webpack_require_62240__(4326);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4705:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62548__) {\n\nvar fails = __nested_webpack_require_62548__(7293);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 111:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ 1913:\n/***/ (function(module) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 7850:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_63453__) {\n\nvar isObject = __nested_webpack_require_63453__(111);\nvar classof = __nested_webpack_require_63453__(4326);\nvar wellKnownSymbol = __nested_webpack_require_63453__(5112);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 9212:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_63953__) {\n\nvar anObject = __nested_webpack_require_63953__(9670);\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n\n\n/***/ }),\n\n/***/ 3383:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_64274__) {\n\n\"use strict\";\n\nvar fails = __nested_webpack_require_64274__(7293);\nvar getPrototypeOf = __nested_webpack_require_64274__(9518);\nvar createNonEnumerableProperty = __nested_webpack_require_64274__(8880);\nvar has = __nested_webpack_require_64274__(6656);\nvar wellKnownSymbol = __nested_webpack_require_64274__(5112);\nvar IS_PURE = __nested_webpack_require_64274__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7497:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 133:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_65970__) {\n\nvar fails = __nested_webpack_require_65970__(7293);\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n /* global Symbol -- required for testing */\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ 590:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_66314__) {\n\nvar fails = __nested_webpack_require_66314__(7293);\nvar wellKnownSymbol = __nested_webpack_require_66314__(5112);\nvar IS_PURE = __nested_webpack_require_66314__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 8536:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67534__) {\n\nvar global = __nested_webpack_require_67534__(7854);\nvar inspectSource = __nested_webpack_require_67534__(2788);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ 1574:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67846__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __nested_webpack_require_67846__(9781);\nvar fails = __nested_webpack_require_67846__(7293);\nvar objectKeys = __nested_webpack_require_67846__(1956);\nvar getOwnPropertySymbolsModule = __nested_webpack_require_67846__(5181);\nvar propertyIsEnumerableModule = __nested_webpack_require_67846__(5296);\nvar toObject = __nested_webpack_require_67846__(7908);\nvar IndexedObject = __nested_webpack_require_67846__(8361);\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n /* global Symbol -- required for testing */\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_69941__) {\n\nvar anObject = __nested_webpack_require_69941__(9670);\nvar defineProperties = __nested_webpack_require_69941__(6048);\nvar enumBugKeys = __nested_webpack_require_69941__(748);\nvar hiddenKeys = __nested_webpack_require_69941__(3501);\nvar html = __nested_webpack_require_69941__(490);\nvar documentCreateElement = __nested_webpack_require_69941__(317);\nvar sharedKey = __nested_webpack_require_69941__(6200);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 6048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_72835__) {\n\nvar DESCRIPTORS = __nested_webpack_require_72835__(9781);\nvar definePropertyModule = __nested_webpack_require_72835__(3070);\nvar anObject = __nested_webpack_require_72835__(9670);\nvar objectKeys = __nested_webpack_require_72835__(1956);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 3070:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_73525__) {\n\nvar DESCRIPTORS = __nested_webpack_require_73525__(9781);\nvar IE8_DOM_DEFINE = __nested_webpack_require_73525__(4664);\nvar anObject = __nested_webpack_require_73525__(9670);\nvar toPrimitive = __nested_webpack_require_73525__(7593);\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 1236:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_74380__) {\n\nvar DESCRIPTORS = __nested_webpack_require_74380__(9781);\nvar propertyIsEnumerableModule = __nested_webpack_require_74380__(5296);\nvar createPropertyDescriptor = __nested_webpack_require_74380__(9114);\nvar toIndexedObject = __nested_webpack_require_74380__(5656);\nvar toPrimitive = __nested_webpack_require_74380__(7593);\nvar has = __nested_webpack_require_74380__(6656);\nvar IE8_DOM_DEFINE = __nested_webpack_require_74380__(4664);\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 8006:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_75368__) {\n\nvar internalObjectKeys = __nested_webpack_require_75368__(6324);\nvar enumBugKeys = __nested_webpack_require_75368__(748);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 5181:\n/***/ (function(__unused_webpack_module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 9518:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_75966__) {\n\nvar has = __nested_webpack_require_75966__(6656);\nvar toObject = __nested_webpack_require_75966__(7908);\nvar sharedKey = __nested_webpack_require_75966__(6200);\nvar CORRECT_PROTOTYPE_GETTER = __nested_webpack_require_75966__(8544);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 6324:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_76729__) {\n\nvar has = __nested_webpack_require_76729__(6656);\nvar toIndexedObject = __nested_webpack_require_76729__(5656);\nvar indexOf = __nested_webpack_require_76729__(1318).indexOf;\nvar hiddenKeys = __nested_webpack_require_76729__(3501);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1956:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_77369__) {\n\nvar internalObjectKeys = __nested_webpack_require_77369__(6324);\nvar enumBugKeys = __nested_webpack_require_77369__(748);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 5296:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 7674:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_78394__) {\n\n/* eslint-disable no-proto -- safe */\nvar anObject = __nested_webpack_require_78394__(9670);\nvar aPossiblePrototype = __nested_webpack_require_78394__(6077);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 288:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_79325__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __nested_webpack_require_79325__(1694);\nvar classof = __nested_webpack_require_79325__(648);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ 3887:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_79769__) {\n\nvar getBuiltIn = __nested_webpack_require_79769__(5005);\nvar getOwnPropertyNamesModule = __nested_webpack_require_79769__(8006);\nvar getOwnPropertySymbolsModule = __nested_webpack_require_79769__(5181);\nvar anObject = __nested_webpack_require_79769__(9670);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80406__) {\n\nvar global = __nested_webpack_require_80406__(7854);\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ 2248:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80571__) {\n\nvar redefine = __nested_webpack_require_80571__(1320);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 1320:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80849__) {\n\nvar global = __nested_webpack_require_80849__(7854);\nvar createNonEnumerableProperty = __nested_webpack_require_80849__(8880);\nvar has = __nested_webpack_require_80849__(6656);\nvar setGlobal = __nested_webpack_require_80849__(3505);\nvar inspectSource = __nested_webpack_require_80849__(2788);\nvar InternalStateModule = __nested_webpack_require_80849__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ 7651:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_82466__) {\n\nvar classof = __nested_webpack_require_82466__(4326);\nvar regexpExec = __nested_webpack_require_82466__(2261);\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ 2261:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_83158__) {\n\n\"use strict\";\n\nvar regexpFlags = __nested_webpack_require_83158__(7066);\nvar stickyHelpers = __nested_webpack_require_83158__(2999);\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ 7066:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_86176__) {\n\n\"use strict\";\n\nvar anObject = __nested_webpack_require_86176__(9670);\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2999:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_86753__) {\n\n\"use strict\";\n\n\nvar fails = __nested_webpack_require_86753__(7293);\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ 4488:\n/***/ (function(module) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 3505:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_87737__) {\n\nvar global = __nested_webpack_require_87737__(7854);\nvar createNonEnumerableProperty = __nested_webpack_require_87737__(8880);\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 6340:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_88106__) {\n\n\"use strict\";\n\nvar getBuiltIn = __nested_webpack_require_88106__(5005);\nvar definePropertyModule = __nested_webpack_require_88106__(3070);\nvar wellKnownSymbol = __nested_webpack_require_88106__(5112);\nvar DESCRIPTORS = __nested_webpack_require_88106__(9781);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n/***/ }),\n\n/***/ 8003:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_88786__) {\n\nvar defineProperty = __nested_webpack_require_88786__(3070).f;\nvar has = __nested_webpack_require_88786__(6656);\nvar wellKnownSymbol = __nested_webpack_require_88786__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ 6200:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89271__) {\n\nvar shared = __nested_webpack_require_89271__(2309);\nvar uid = __nested_webpack_require_89271__(9711);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 5465:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89559__) {\n\nvar global = __nested_webpack_require_89559__(7854);\nvar setGlobal = __nested_webpack_require_89559__(3505);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ 2309:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89855__) {\n\nvar IS_PURE = __nested_webpack_require_89855__(1913);\nvar store = __nested_webpack_require_89855__(5465);\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.9.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 6707:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90288__) {\n\nvar anObject = __nested_webpack_require_90288__(9670);\nvar aFunction = __nested_webpack_require_90288__(3099);\nvar wellKnownSymbol = __nested_webpack_require_90288__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ 8710:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90863__) {\n\nvar toInteger = __nested_webpack_require_90863__(9958);\nvar requireObjectCoercible = __nested_webpack_require_90863__(4488);\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 3197:\n/***/ (function(module) {\n\n\"use strict\";\n\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n\n\n/***/ }),\n\n/***/ 6091:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97360__) {\n\nvar fails = __nested_webpack_require_97360__(7293);\nvar whitespaces = __nested_webpack_require_97360__(1361);\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n\n\n/***/ }),\n\n/***/ 3111:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97868__) {\n\nvar requireObjectCoercible = __nested_webpack_require_97868__(4488);\nvar whitespaces = __nested_webpack_require_97868__(1361);\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_98992__) {\n\nvar toInteger = __nested_webpack_require_98992__(9958);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 7067:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_99521__) {\n\nvar toInteger = __nested_webpack_require_99521__(9958);\nvar toLength = __nested_webpack_require_99521__(7466);\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 5656:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_99996__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __nested_webpack_require_99996__(8361);\nvar requireObjectCoercible = __nested_webpack_require_99996__(4488);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 9958:\n/***/ (function(module) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ 7466:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_100645__) {\n\nvar toInteger = __nested_webpack_require_100645__(9958);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 7908:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101032__) {\n\nvar requireObjectCoercible = __nested_webpack_require_101032__(4488);\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 4590:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101355__) {\n\nvar toPositiveInteger = __nested_webpack_require_101355__(3002);\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n\n\n/***/ }),\n\n/***/ 3002:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101660__) {\n\nvar toInteger = __nested_webpack_require_101660__(9958);\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 7593:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101959__) {\n\nvar isObject = __nested_webpack_require_101959__(111);\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 1694:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_102821__) {\n\nvar wellKnownSymbol = __nested_webpack_require_102821__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 9843:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_103114__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_103114__(2109);\nvar global = __nested_webpack_require_103114__(7854);\nvar DESCRIPTORS = __nested_webpack_require_103114__(9781);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __nested_webpack_require_103114__(3832);\nvar ArrayBufferViewCore = __nested_webpack_require_103114__(260);\nvar ArrayBufferModule = __nested_webpack_require_103114__(3331);\nvar anInstance = __nested_webpack_require_103114__(5787);\nvar createPropertyDescriptor = __nested_webpack_require_103114__(9114);\nvar createNonEnumerableProperty = __nested_webpack_require_103114__(8880);\nvar toLength = __nested_webpack_require_103114__(7466);\nvar toIndex = __nested_webpack_require_103114__(7067);\nvar toOffset = __nested_webpack_require_103114__(4590);\nvar toPrimitive = __nested_webpack_require_103114__(7593);\nvar has = __nested_webpack_require_103114__(6656);\nvar classof = __nested_webpack_require_103114__(648);\nvar isObject = __nested_webpack_require_103114__(111);\nvar create = __nested_webpack_require_103114__(30);\nvar setPrototypeOf = __nested_webpack_require_103114__(7674);\nvar getOwnPropertyNames = __nested_webpack_require_103114__(8006).f;\nvar typedArrayFrom = __nested_webpack_require_103114__(7321);\nvar forEach = __nested_webpack_require_103114__(2092).forEach;\nvar setSpecies = __nested_webpack_require_103114__(6340);\nvar definePropertyModule = __nested_webpack_require_103114__(3070);\nvar getOwnPropertyDescriptorModule = __nested_webpack_require_103114__(1236);\nvar InternalStateModule = __nested_webpack_require_103114__(9909);\nvar inheritIfRequired = __nested_webpack_require_103114__(9587);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ 3832:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_112503__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __nested_webpack_require_112503__(7854);\nvar fails = __nested_webpack_require_112503__(7293);\nvar checkCorrectnessOfIteration = __nested_webpack_require_112503__(7072);\nvar NATIVE_ARRAY_BUFFER_VIEWS = __nested_webpack_require_112503__(260).NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n\n/***/ 3074:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_113426__) {\n\nvar aTypedArrayConstructor = __nested_webpack_require_113426__(260).aTypedArrayConstructor;\nvar speciesConstructor = __nested_webpack_require_113426__(6707);\n\nmodule.exports = function (instance, list) {\n var C = speciesConstructor(instance, instance.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 7321:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_113940__) {\n\nvar toObject = __nested_webpack_require_113940__(7908);\nvar toLength = __nested_webpack_require_113940__(7466);\nvar getIteratorMethod = __nested_webpack_require_113940__(1246);\nvar isArrayIteratorMethod = __nested_webpack_require_113940__(7659);\nvar bind = __nested_webpack_require_113940__(9974);\nvar aTypedArrayConstructor = __nested_webpack_require_113940__(260).aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9711:\n/***/ (function(module) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ 3307:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_115419__) {\n\nvar NATIVE_SYMBOL = __nested_webpack_require_115419__(133);\n\nmodule.exports = NATIVE_SYMBOL\n /* global Symbol -- safe */\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 5112:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_115685__) {\n\nvar global = __nested_webpack_require_115685__(7854);\nvar shared = __nested_webpack_require_115685__(2309);\nvar has = __nested_webpack_require_115685__(6656);\nvar uid = __nested_webpack_require_115685__(9711);\nvar NATIVE_SYMBOL = __nested_webpack_require_115685__(133);\nvar USE_SYMBOL_AS_UID = __nested_webpack_require_115685__(3307);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 1361:\n/***/ (function(module) {\n\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 8264:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_116785__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_116785__(2109);\nvar global = __nested_webpack_require_116785__(7854);\nvar arrayBufferModule = __nested_webpack_require_116785__(3331);\nvar setSpecies = __nested_webpack_require_116785__(6340);\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n/***/ }),\n\n/***/ 2222:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_117427__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_117427__(2109);\nvar fails = __nested_webpack_require_117427__(7293);\nvar isArray = __nested_webpack_require_117427__(3157);\nvar isObject = __nested_webpack_require_117427__(111);\nvar toObject = __nested_webpack_require_117427__(7908);\nvar toLength = __nested_webpack_require_117427__(7466);\nvar createProperty = __nested_webpack_require_117427__(6135);\nvar arraySpeciesCreate = __nested_webpack_require_117427__(5417);\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_117427__(1194);\nvar wellKnownSymbol = __nested_webpack_require_117427__(5112);\nvar V8_VERSION = __nested_webpack_require_117427__(7392);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 7327:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_119834__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_119834__(2109);\nvar $filter = __nested_webpack_require_119834__(2092).filter;\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_119834__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 2772:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_120523__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_120523__(2109);\nvar $indexOf = __nested_webpack_require_120523__(1318).indexOf;\nvar arrayMethodIsStrict = __nested_webpack_require_120523__(9341);\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 6992:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_121364__) {\n\n\"use strict\";\n\nvar toIndexedObject = __nested_webpack_require_121364__(5656);\nvar addToUnscopables = __nested_webpack_require_121364__(1223);\nvar Iterators = __nested_webpack_require_121364__(7497);\nvar InternalStateModule = __nested_webpack_require_121364__(9909);\nvar defineIterator = __nested_webpack_require_121364__(654);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 1249:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_123565__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_123565__(2109);\nvar $map = __nested_webpack_require_123565__(2092).map;\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_123565__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 7042:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_124230__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_124230__(2109);\nvar isObject = __nested_webpack_require_124230__(111);\nvar isArray = __nested_webpack_require_124230__(3157);\nvar toAbsoluteIndex = __nested_webpack_require_124230__(1400);\nvar toLength = __nested_webpack_require_124230__(7466);\nvar toIndexedObject = __nested_webpack_require_124230__(5656);\nvar createProperty = __nested_webpack_require_124230__(6135);\nvar wellKnownSymbol = __nested_webpack_require_124230__(5112);\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_124230__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 561:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_126211__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_126211__(2109);\nvar toAbsoluteIndex = __nested_webpack_require_126211__(1400);\nvar toInteger = __nested_webpack_require_126211__(9958);\nvar toLength = __nested_webpack_require_126211__(7466);\nvar toObject = __nested_webpack_require_126211__(7908);\nvar arraySpeciesCreate = __nested_webpack_require_126211__(5417);\nvar createProperty = __nested_webpack_require_126211__(6135);\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_126211__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 8309:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_128857__) {\n\nvar DESCRIPTORS = __nested_webpack_require_128857__(9781);\nvar defineProperty = __nested_webpack_require_128857__(3070).f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 489:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_129614__) {\n\nvar $ = __nested_webpack_require_129614__(2109);\nvar fails = __nested_webpack_require_129614__(7293);\nvar toObject = __nested_webpack_require_129614__(7908);\nvar nativeGetPrototypeOf = __nested_webpack_require_129614__(9518);\nvar CORRECT_PROTOTYPE_GETTER = __nested_webpack_require_129614__(8544);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n/***/ }),\n\n/***/ 1539:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_130327__) {\n\nvar TO_STRING_TAG_SUPPORT = __nested_webpack_require_130327__(1694);\nvar redefine = __nested_webpack_require_130327__(1320);\nvar toString = __nested_webpack_require_130327__(288);\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_130780__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_130780__(2109);\nvar exec = __nested_webpack_require_130780__(2261);\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n\n\n/***/ }),\n\n/***/ 9714:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_131156__) {\n\n\"use strict\";\n\nvar redefine = __nested_webpack_require_131156__(1320);\nvar anObject = __nested_webpack_require_131156__(9670);\nvar fails = __nested_webpack_require_131156__(7293);\nvar flags = __nested_webpack_require_131156__(7066);\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 8783:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_132221__) {\n\n\"use strict\";\n\nvar charAt = __nested_webpack_require_132221__(8710).charAt;\nvar InternalStateModule = __nested_webpack_require_132221__(9909);\nvar defineIterator = __nested_webpack_require_132221__(654);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ 4723:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_133333__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __nested_webpack_require_133333__(7007);\nvar anObject = __nested_webpack_require_133333__(9670);\nvar toLength = __nested_webpack_require_133333__(7466);\nvar requireObjectCoercible = __nested_webpack_require_133333__(4488);\nvar advanceStringIndex = __nested_webpack_require_133333__(1530);\nvar regExpExec = __nested_webpack_require_133333__(7651);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 5306:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_134975__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __nested_webpack_require_134975__(7007);\nvar anObject = __nested_webpack_require_134975__(9670);\nvar toLength = __nested_webpack_require_134975__(7466);\nvar toInteger = __nested_webpack_require_134975__(9958);\nvar requireObjectCoercible = __nested_webpack_require_134975__(4488);\nvar advanceStringIndex = __nested_webpack_require_134975__(1530);\nvar getSubstitution = __nested_webpack_require_134975__(647);\nvar regExpExec = __nested_webpack_require_134975__(7651);\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 3123:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_139010__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __nested_webpack_require_139010__(7007);\nvar isRegExp = __nested_webpack_require_139010__(7850);\nvar anObject = __nested_webpack_require_139010__(9670);\nvar requireObjectCoercible = __nested_webpack_require_139010__(4488);\nvar speciesConstructor = __nested_webpack_require_139010__(6707);\nvar advanceStringIndex = __nested_webpack_require_139010__(1530);\nvar toLength = __nested_webpack_require_139010__(7466);\nvar callRegExpExec = __nested_webpack_require_139010__(7651);\nvar regexpExec = __nested_webpack_require_139010__(2261);\nvar fails = __nested_webpack_require_139010__(7293);\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ 3210:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_144619__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_144619__(2109);\nvar $trim = __nested_webpack_require_144619__(3111).trim;\nvar forcedStringTrimMethod = __nested_webpack_require_144619__(6091);\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n/***/ }),\n\n/***/ 2990:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_145111__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_145111__(260);\nvar $copyWithin = __nested_webpack_require_145111__(1048);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 8927:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_145777__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_145777__(260);\nvar $every = __nested_webpack_require_145777__(2092).every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3105:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_146412__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_146412__(260);\nvar $fill = __nested_webpack_require_146412__(1285);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 5035:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_147058__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_147058__(260);\nvar $filter = __nested_webpack_require_147058__(2092).filter;\nvar fromSpeciesAndList = __nested_webpack_require_147058__(3074);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n\n/***/ 7174:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_147797__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_147797__(260);\nvar $findIndex = __nested_webpack_require_147797__(2092).findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4345:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_148458__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_148458__(260);\nvar $find = __nested_webpack_require_148458__(2092).find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2846:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_149084__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_149084__(260);\nvar $forEach = __nested_webpack_require_149084__(2092).forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4731:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_149726__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_149726__(260);\nvar $includes = __nested_webpack_require_149726__(1318).includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 7209:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_150390__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_150390__(260);\nvar $indexOf = __nested_webpack_require_150390__(1318).indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_151047__) {\n\n\"use strict\";\n\nvar global = __nested_webpack_require_151047__(7854);\nvar ArrayBufferViewCore = __nested_webpack_require_151047__(260);\nvar ArrayIterators = __nested_webpack_require_151047__(6992);\nvar wellKnownSymbol = __nested_webpack_require_151047__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n\n\n/***/ }),\n\n/***/ 8867:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_152782__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_152782__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 7789:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_153395__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_153395__(260);\nvar $lastIndexOf = __nested_webpack_require_153395__(6583);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 3739:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_154090__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_154090__(260);\nvar $map = __nested_webpack_require_154090__(2092).map;\nvar speciesConstructor = __nested_webpack_require_154090__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_154941__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_154941__(260);\nvar $reduceRight = __nested_webpack_require_154941__(3671).right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 9368:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_155635__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_155635__(260);\nvar $reduce = __nested_webpack_require_155635__(3671).left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2056:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_156298__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_156298__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n\n\n/***/ }),\n\n/***/ 3462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_157051__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_157051__(260);\nvar toLength = __nested_webpack_require_157051__(7466);\nvar toOffset = __nested_webpack_require_157051__(4590);\nvar toObject = __nested_webpack_require_157051__(7908);\nvar fails = __nested_webpack_require_157051__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 678:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_158136__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_158136__(260);\nvar speciesConstructor = __nested_webpack_require_158136__(6707);\nvar fails = __nested_webpack_require_158136__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 7462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_159191__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_159191__(260);\nvar $some = __nested_webpack_require_159191__(2092).some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3824:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_159819__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_159819__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n\n\n/***/ }),\n\n/***/ 5021:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_160362__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_160362__(260);\nvar toLength = __nested_webpack_require_160362__(7466);\nvar toAbsoluteIndex = __nested_webpack_require_160362__(1400);\nvar speciesConstructor = __nested_webpack_require_160362__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n\n\n/***/ }),\n\n/***/ 2974:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_161310__) {\n\n\"use strict\";\n\nvar global = __nested_webpack_require_161310__(7854);\nvar ArrayBufferViewCore = __nested_webpack_require_161310__(260);\nvar fails = __nested_webpack_require_161310__(7293);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 5016:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_162445__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = __nested_webpack_require_162445__(260).exportTypedArrayMethod;\nvar fails = __nested_webpack_require_162445__(7293);\nvar global = __nested_webpack_require_162445__(7854);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n\n/***/ 2472:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_163286__) {\n\nvar createTypedArrayConstructor = __nested_webpack_require_163286__(9843);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 4747:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_163713__) {\n\nvar global = __nested_webpack_require_163713__(7854);\nvar DOMIterables = __nested_webpack_require_163713__(8324);\nvar forEach = __nested_webpack_require_163713__(8533);\nvar createNonEnumerableProperty = __nested_webpack_require_163713__(8880);\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n\n\n/***/ }),\n\n/***/ 3948:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_164461__) {\n\nvar global = __nested_webpack_require_164461__(7854);\nvar DOMIterables = __nested_webpack_require_164461__(8324);\nvar ArrayIteratorMethods = __nested_webpack_require_164461__(6992);\nvar createNonEnumerableProperty = __nested_webpack_require_164461__(8880);\nvar wellKnownSymbol = __nested_webpack_require_164461__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 1637:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_166049__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__nested_webpack_require_166049__(6992);\nvar $ = __nested_webpack_require_166049__(2109);\nvar getBuiltIn = __nested_webpack_require_166049__(5005);\nvar USE_NATIVE_URL = __nested_webpack_require_166049__(590);\nvar redefine = __nested_webpack_require_166049__(1320);\nvar redefineAll = __nested_webpack_require_166049__(2248);\nvar setToStringTag = __nested_webpack_require_166049__(8003);\nvar createIteratorConstructor = __nested_webpack_require_166049__(4994);\nvar InternalStateModule = __nested_webpack_require_166049__(9909);\nvar anInstance = __nested_webpack_require_166049__(5787);\nvar hasOwn = __nested_webpack_require_166049__(6656);\nvar bind = __nested_webpack_require_166049__(9974);\nvar classof = __nested_webpack_require_166049__(648);\nvar anObject = __nested_webpack_require_166049__(9670);\nvar isObject = __nested_webpack_require_166049__(111);\nvar create = __nested_webpack_require_166049__(30);\nvar createPropertyDescriptor = __nested_webpack_require_166049__(9114);\nvar getIterator = __nested_webpack_require_166049__(8554);\nvar getIteratorMethod = __nested_webpack_require_166049__(1246);\nvar wellKnownSymbol = __nested_webpack_require_166049__(5112);\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_177789__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__nested_webpack_require_177789__(8783);\nvar $ = __nested_webpack_require_177789__(2109);\nvar DESCRIPTORS = __nested_webpack_require_177789__(9781);\nvar USE_NATIVE_URL = __nested_webpack_require_177789__(590);\nvar global = __nested_webpack_require_177789__(7854);\nvar defineProperties = __nested_webpack_require_177789__(6048);\nvar redefine = __nested_webpack_require_177789__(1320);\nvar anInstance = __nested_webpack_require_177789__(5787);\nvar has = __nested_webpack_require_177789__(6656);\nvar assign = __nested_webpack_require_177789__(1574);\nvar arrayFrom = __nested_webpack_require_177789__(8457);\nvar codeAt = __nested_webpack_require_177789__(8710).codeAt;\nvar toASCII = __nested_webpack_require_177789__(3197);\nvar setToStringTag = __nested_webpack_require_177789__(8003);\nvar URLSearchParamsModule = __nested_webpack_require_177789__(1637);\nvar InternalStateModule = __nested_webpack_require_177789__(9909);\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_210484__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_210484__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__nested_webpack_require_210484__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__nested_webpack_require_210484__.o(definition, key) && !__nested_webpack_require_210484__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__nested_webpack_require_210484__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__nested_webpack_require_210484__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__nested_webpack_require_210484__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __nested_webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n!function() {\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_210484__.r(__nested_webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_210484__.d(__nested_webpack_exports__, {\n \"Dropzone\": function() { return /* reexport */ Dropzone; },\n \"default\": function() { return /* binding */ dropzone_dist; }\n});\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __nested_webpack_require_210484__(2222);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __nested_webpack_require_210484__(7327);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __nested_webpack_require_210484__(2772);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __nested_webpack_require_210484__(6992);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __nested_webpack_require_210484__(1249);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __nested_webpack_require_210484__(7042);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __nested_webpack_require_210484__(561);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.constructor.js\nvar es_array_buffer_constructor = __nested_webpack_require_210484__(8264);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __nested_webpack_require_210484__(8309);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-prototype-of.js\nvar es_object_get_prototype_of = __nested_webpack_require_210484__(489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __nested_webpack_require_210484__(1539);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __nested_webpack_require_210484__(4916);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __nested_webpack_require_210484__(9714);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __nested_webpack_require_210484__(8783);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __nested_webpack_require_210484__(4723);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __nested_webpack_require_210484__(5306);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __nested_webpack_require_210484__(3123);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __nested_webpack_require_210484__(3210);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.uint8-array.js\nvar es_typed_array_uint8_array = __nested_webpack_require_210484__(2472);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.copy-within.js\nvar es_typed_array_copy_within = __nested_webpack_require_210484__(2990);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.every.js\nvar es_typed_array_every = __nested_webpack_require_210484__(8927);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.fill.js\nvar es_typed_array_fill = __nested_webpack_require_210484__(3105);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.filter.js\nvar es_typed_array_filter = __nested_webpack_require_210484__(5035);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find.js\nvar es_typed_array_find = __nested_webpack_require_210484__(4345);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find-index.js\nvar es_typed_array_find_index = __nested_webpack_require_210484__(7174);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.for-each.js\nvar es_typed_array_for_each = __nested_webpack_require_210484__(2846);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.includes.js\nvar es_typed_array_includes = __nested_webpack_require_210484__(4731);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.index-of.js\nvar es_typed_array_index_of = __nested_webpack_require_210484__(7209);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.iterator.js\nvar es_typed_array_iterator = __nested_webpack_require_210484__(6319);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.join.js\nvar es_typed_array_join = __nested_webpack_require_210484__(8867);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.last-index-of.js\nvar es_typed_array_last_index_of = __nested_webpack_require_210484__(7789);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.map.js\nvar es_typed_array_map = __nested_webpack_require_210484__(3739);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce.js\nvar es_typed_array_reduce = __nested_webpack_require_210484__(9368);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce-right.js\nvar es_typed_array_reduce_right = __nested_webpack_require_210484__(4483);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reverse.js\nvar es_typed_array_reverse = __nested_webpack_require_210484__(2056);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.set.js\nvar es_typed_array_set = __nested_webpack_require_210484__(3462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.slice.js\nvar es_typed_array_slice = __nested_webpack_require_210484__(678);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.some.js\nvar es_typed_array_some = __nested_webpack_require_210484__(7462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.sort.js\nvar es_typed_array_sort = __nested_webpack_require_210484__(3824);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.subarray.js\nvar es_typed_array_subarray = __nested_webpack_require_210484__(5021);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-locale-string.js\nvar es_typed_array_to_locale_string = __nested_webpack_require_210484__(2974);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-string.js\nvar es_typed_array_to_string = __nested_webpack_require_210484__(5016);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __nested_webpack_require_210484__(4747);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __nested_webpack_require_210484__(3948);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.js\nvar web_url = __nested_webpack_require_210484__(285);\n;// CONCATENATED MODULE: ./src/emitter.js\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n }\n\n _createClass(Emitter, [{\n key: \"on\",\n value: // Add an event listener for given event\n function on(event, fn) {\n this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n\n this._callbacks[event].push(fn);\n\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n this._callbacks = this._callbacks || {};\n var callbacks = this._callbacks[event];\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (callbacks) {\n var _iterator = _createForOfIteratorHelper(callbacks, true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var callback = _step.value;\n callback.apply(this, args);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } // trigger a corresponding DOM event\n\n\n if (this.element) {\n this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n args: args\n }));\n }\n\n return this;\n }\n }, {\n key: \"makeEvent\",\n value: function makeEvent(eventName, detail) {\n var params = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n\n if (typeof window.CustomEvent === \"function\") {\n return new CustomEvent(eventName, params);\n } else {\n // IE 11 support\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n } // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n\n }, {\n key: \"off\",\n value: function off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n } // specific event\n\n\n var callbacks = this._callbacks[event];\n\n if (!callbacks) {\n return this;\n } // remove all handlers\n\n\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n } // remove specific handler\n\n\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n }]);\n\n return Emitter;\n}();\n\n\n;// CONCATENATED MODULE: ./src/preview-template.html\n// Module\nvar code = \"
    Check
    Error
    \";\n// Exports\n/* harmony default export */ var preview_template = (code);\n;// CONCATENATED MODULE: ./src/options.js\n\n\n\n\n\nfunction options_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = options_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction options_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return options_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return options_arrayLikeToArray(o, minLen); }\n\nfunction options_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\nvar defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form\n * doesn't have an `action` attribute). You can also\n * provide a function that will be called with `files` and\n * must return the url (since `v3.12.0`)\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n * If set to null or 0, no timeout is going to be set.\n */\n timeout: null,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2000000,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * The maximum filesize (in bytes) that is allowed to be uploaded.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: \"crop\",\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: \"contain\",\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n filesizeBase: 1000,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual\n * feedback.\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * Set this to `true` if you don't want previews to be shown.\n */\n disablePreviews: false,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: {\n tb: \"TB\",\n gb: \"GB\",\n mb: \"MB\",\n kb: \"KB\",\n b: \"b\"\n },\n\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init: function init() {},\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params: function params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n }\n },\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept: function accept(file, done) {\n return done();\n },\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function chunksUploaded(file, done) {\n done();\n },\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback: function fallback() {\n // This code should pass in IE7... :(\n var messageElement;\n this.element.className = \"\".concat(this.element.className, \" dz-browser-not-supported\");\n\n var _iterator = options_createForOfIteratorHelper(this.element.getElementsByTagName(\"div\"), true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (!messageElement) {\n messageElement = Dropzone.createElement('
    ');\n this.element.appendChild(messageElement);\n }\n\n var span = messageElement.getElementsByTagName(\"span\")[0];\n\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize: function resize(file, width, height, resizeMethod) {\n var info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified\n\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) {\n width = height * srcRatio;\n } else if (height == null) {\n height = width / srcRatio;\n } // Make sure images aren't upscaled\n\n\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n var trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === \"crop\") {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === \"contain\") {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(\"Unknown resizeMethod '\".concat(resizeMethod, \"'\"));\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n info.trgWidth = width;\n info.trgHeight = height;\n return info;\n },\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile: function transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n } else {\n return done(file);\n }\n },\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: preview_template,\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n // Those are self explanatory and simply concern the DragnDrop.\n drop: function drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: function dragstart(e) {},\n dragend: function dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: function paste(e) {},\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset: function reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n // Called when a file is added to the queue\n // Receives `file`\n addedfile: function addedfile(file) {\n var _this = this;\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n\n var _iterator2 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-name]\"), true),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n node.textContent = file.name;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n var _iterator3 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-size]\"), true),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n node = _step3.value;\n node.innerHTML = this.filesize(file.size);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\"
    \".concat(this.options.dictRemoveFile, \"\"));\n file.previewElement.appendChild(file._removeLink);\n }\n\n var removeFileEvent = function removeFileEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {\n return _this.removeFile(file);\n });\n } else {\n if (_this.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {\n return _this.removeFile(file);\n });\n } else {\n return _this.removeFile(file);\n }\n }\n };\n\n var _iterator4 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-remove]\"), true),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var removeLink = _step4.value;\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n },\n // Called whenever a file is removed.\n removedfile: function removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n\n return this._updateMaxFilesReachedClass();\n },\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail: function thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n\n var _iterator5 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), true),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var thumbnailElement = _step5.value;\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return setTimeout(function () {\n return file.previewElement.classList.add(\"dz-image-preview\");\n }, 1);\n }\n },\n // Called whenever an error occurs\n // Receives `file` and `message`\n error: function error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n\n if (typeof message !== \"string\" && message.error) {\n message = message.error;\n }\n\n var _iterator6 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), true),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var node = _step6.value;\n node.textContent = message;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n },\n errormultiple: function errormultiple() {},\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing: function processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n\n if (file._removeLink) {\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n }\n },\n processingmultiple: function processingmultiple() {},\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress: function uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n var _iterator7 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), true),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var node = _step7.value;\n node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = \"\".concat(progress, \"%\");\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n },\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress: function totaluploadprogress() {},\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending: function sending() {},\n sendingmultiple: function sendingmultiple() {},\n // When the complete upload is finished and successful\n // Receives `file`\n success: function success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n successmultiple: function successmultiple() {},\n // When the upload is canceled.\n canceled: function canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple: function canceledmultiple() {},\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete: function complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n completemultiple: function completemultiple() {},\n maxfilesexceeded: function maxfilesexceeded() {},\n maxfilesreached: function maxfilesreached() {},\n queuecomplete: function queuecomplete() {},\n addedfiles: function addedfiles() {}\n};\n/* harmony default export */ var src_options = (defaultOptions);\n;// CONCATENATED MODULE: ./src/dropzone.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction dropzone_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = dropzone_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction dropzone_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return dropzone_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dropzone_arrayLikeToArray(o, minLen); }\n\nfunction dropzone_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropzone_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\nvar Dropzone = /*#__PURE__*/function (_Emitter) {\n _inherits(Dropzone, _Emitter);\n\n var _super = _createSuper(Dropzone);\n\n function Dropzone(el, options) {\n var _this;\n\n dropzone_classCallCheck(this, Dropzone);\n\n _this = _super.call(this);\n var fallback, left;\n _this.element = el; // For backwards compatibility since the version was in the prototype previously\n\n _this.version = Dropzone.version;\n _this.clickableElements = [];\n _this.listeners = [];\n _this.files = []; // All files\n\n if (typeof _this.element === \"string\") {\n _this.element = document.querySelector(_this.element);\n } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n\n\n if (!_this.element || _this.element.nodeType == null) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (_this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n } // Now add this dropzone to the instances.\n\n\n Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.\n\n _this.element.dropzone = _assertThisInitialized(_this);\n var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n _this.options = Dropzone.extend({}, src_options, elementOptions, options != null ? options : {});\n _this.options.previewTemplate = _this.options.previewTemplate.replace(/\\n*/g, \"\"); // If the browser failed, just call the fallback and leave\n\n if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));\n } // @options.url = @element.getAttribute \"action\" unless @options.url?\n\n\n if (_this.options.url == null) {\n _this.options.url = _this.element.getAttribute(\"action\");\n }\n\n if (!_this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n\n if (_this.options.uploadMultiple && _this.options.chunking) {\n throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n } // Backwards compatibility\n\n\n if (_this.options.acceptedMimeTypes) {\n _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n delete _this.options.acceptedMimeTypes;\n } // Backwards compatibility\n\n\n if (_this.options.renameFilename != null) {\n _this.options.renameFile = function (file) {\n return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);\n };\n }\n\n if (typeof _this.options.method === \"string\") {\n _this.options.method = _this.options.method.toUpperCase();\n }\n\n if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n\n\n if (_this.options.previewsContainer !== false) {\n if (_this.options.previewsContainer) {\n _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n } else {\n _this.previewsContainer = _this.element;\n }\n }\n\n if (_this.options.clickable) {\n if (_this.options.clickable === true) {\n _this.clickableElements = [_this.element];\n } else {\n _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n }\n }\n\n _this.init();\n\n return _this;\n } // Returns all files that have been accepted\n\n\n dropzone_createClass(Dropzone, [{\n key: \"getAcceptedFiles\",\n value: function getAcceptedFiles() {\n return this.files.filter(function (file) {\n return file.accepted;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n\n }, {\n key: \"getRejectedFiles\",\n value: function getRejectedFiles() {\n return this.files.filter(function (file) {\n return !file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n }, {\n key: \"getFilesWithStatus\",\n value: function getFilesWithStatus(status) {\n return this.files.filter(function (file) {\n return file.status === status;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that are in the queue\n\n }, {\n key: \"getQueuedFiles\",\n value: function getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n }, {\n key: \"getUploadingFiles\",\n value: function getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n }, {\n key: \"getAddedFiles\",\n value: function getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n } // Files that are either queued or uploading\n\n }, {\n key: \"getActiveFiles\",\n value: function getActiveFiles() {\n return this.files.filter(function (file) {\n return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n }).map(function (file) {\n return file;\n });\n } // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n\n }, {\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(\"
    \")));\n }\n\n if (this.clickableElements.length) {\n var setupHiddenFileInput = function setupHiddenFileInput() {\n if (_this2.hiddenFileInput) {\n _this2.hiddenFileInput.parentNode.removeChild(_this2.hiddenFileInput);\n }\n\n _this2.hiddenFileInput = document.createElement(\"input\");\n\n _this2.hiddenFileInput.setAttribute(\"type\", \"file\");\n\n if (_this2.options.maxFiles === null || _this2.options.maxFiles > 1) {\n _this2.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n\n _this2.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (_this2.options.acceptedFiles !== null) {\n _this2.hiddenFileInput.setAttribute(\"accept\", _this2.options.acceptedFiles);\n }\n\n if (_this2.options.capture !== null) {\n _this2.hiddenFileInput.setAttribute(\"capture\", _this2.options.capture);\n } // Making sure that no one can \"tab\" into this field.\n\n\n _this2.hiddenFileInput.setAttribute(\"tabindex\", \"-1\"); // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n\n\n _this2.hiddenFileInput.style.visibility = \"hidden\";\n _this2.hiddenFileInput.style.position = \"absolute\";\n _this2.hiddenFileInput.style.top = \"0\";\n _this2.hiddenFileInput.style.left = \"0\";\n _this2.hiddenFileInput.style.height = \"0\";\n _this2.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(_this2.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(_this2.hiddenFileInput);\n\n _this2.hiddenFileInput.addEventListener(\"change\", function () {\n var files = _this2.hiddenFileInput.files;\n\n if (files.length) {\n var _iterator = dropzone_createForOfIteratorHelper(files, true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var file = _step.value;\n\n _this2.addFile(file);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n _this2.emit(\"addedfiles\", files);\n\n setupHiddenFileInput();\n });\n };\n\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n\n var _iterator2 = dropzone_createForOfIteratorHelper(this.events, true),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var eventName = _step2.value;\n this.on(eventName, this.options[eventName]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this.on(\"uploadprogress\", function () {\n return _this2.updateTotalUploadProgress();\n });\n this.on(\"removedfile\", function () {\n return _this2.updateTotalUploadProgress();\n });\n this.on(\"canceled\", function (file) {\n return _this2.emit(\"complete\", file);\n }); // Emit a `queuecomplete` event if all files finished uploading.\n\n this.on(\"complete\", function (file) {\n if (_this2.getAddedFiles().length === 0 && _this2.getUploadingFiles().length === 0 && _this2.getQueuedFiles().length === 0) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(function () {\n return _this2.emit(\"queuecomplete\");\n }, 0);\n }\n });\n\n var containsFiles = function containsFiles(e) {\n if (e.dataTransfer.types) {\n // Because e.dataTransfer.types is an Object in\n // IE, we need to iterate like this instead of\n // using e.dataTransfer.types.some()\n for (var i = 0; i < e.dataTransfer.types.length; i++) {\n if (e.dataTransfer.types[i] === \"Files\") return true;\n }\n }\n\n return false;\n };\n\n var noPropagation = function noPropagation(e) {\n // If there are no files, we don't want to stop\n // propagation so we don't interfere with other\n // drag and drop behaviour.\n if (!containsFiles(e)) return;\n e.stopPropagation();\n\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n }; // Create the listeners\n\n\n this.listeners = [{\n element: this.element,\n events: {\n dragstart: function dragstart(e) {\n return _this2.emit(\"dragstart\", e);\n },\n dragenter: function dragenter(e) {\n noPropagation(e);\n return _this2.emit(\"dragenter\", e);\n },\n dragover: function dragover(e) {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n var efct;\n\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n\n e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n noPropagation(e);\n return _this2.emit(\"dragover\", e);\n },\n dragleave: function dragleave(e) {\n return _this2.emit(\"dragleave\", e);\n },\n drop: function drop(e) {\n noPropagation(e);\n return _this2.drop(e);\n },\n dragend: function dragend(e) {\n return _this2.emit(\"dragend\", e);\n }\n } // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n\n }];\n this.clickableElements.forEach(function (clickableElement) {\n return _this2.listeners.push({\n element: clickableElement,\n events: {\n click: function click(evt) {\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== _this2.element || evt.target === _this2.element || Dropzone.elementInside(evt.target, _this2.element.querySelector(\".dz-message\"))) {\n _this2.hiddenFileInput.click(); // Forward the click\n\n }\n\n return true;\n }\n }\n });\n });\n this.enable();\n return this.options.init.call(this);\n } // Not fully tested yet\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.disable();\n this.removeAllFiles(true);\n\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n }, {\n key: \"updateTotalUploadProgress\",\n value: function updateTotalUploadProgress() {\n var totalUploadProgress;\n var totalBytesSent = 0;\n var totalBytes = 0;\n var activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n var _iterator3 = dropzone_createForOfIteratorHelper(this.getActiveFiles(), true),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var file = _step3.value;\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n } // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n\n }, {\n key: \"_getParamName\",\n value: function _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return \"\".concat(this.options.paramName).concat(this.options.uploadMultiple ? \"[\".concat(n, \"]\") : \"\");\n }\n } // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n\n }, {\n key: \"_renameFile\",\n value: function _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n\n return this.options.renameFile(file);\n } // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getFallbackForm\",\n value: function getFallbackForm() {\n var existingFallback, form;\n\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n\n var fieldsString = '
    ';\n\n if (this.options.dictFallbackText) {\n fieldsString += \"

    \".concat(this.options.dictFallbackText, \"

    \");\n }\n\n fieldsString += \"
    \");\n var fields = Dropzone.createElement(fieldsString);\n\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\"
    \"));\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n\n return form != null ? form : fields;\n } // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getExistingFallback\",\n value: function getExistingFallback() {\n var getFallback = function getFallback(elements) {\n var _iterator4 = dropzone_createForOfIteratorHelper(elements, true),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var el = _step4.value;\n\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n };\n\n for (var _i = 0, _arr = [\"div\", \"form\"]; _i < _arr.length; _i++) {\n var tagName = _arr[_i];\n var fallback;\n\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n } // Activates all listeners stored in @listeners\n\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Deactivates all listeners stored in @listeners\n\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Removes all event listeners and cancels all files in the queue or being processed.\n\n }, {\n key: \"disable\",\n value: function disable() {\n var _this3 = this;\n\n this.clickableElements.forEach(function (element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n this.disabled = true;\n return this.files.map(function (file) {\n return _this3.cancelUpload(file);\n });\n }\n }, {\n key: \"enable\",\n value: function enable() {\n delete this.disabled;\n this.clickableElements.forEach(function (element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n } // Returns a nicely formatted filesize\n\n }, {\n key: \"filesize\",\n value: function filesize(size) {\n var selectedSize = 0;\n var selectedUnit = \"b\";\n\n if (size > 0) {\n var units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return \"\".concat(selectedSize, \" \").concat(this.options.dictFileSizeUnits[selectedUnit]);\n } // Adds or removes the `dz-max-files-reached` class from the form.\n\n }, {\n key: \"_updateMaxFilesReachedClass\",\n value: function _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit(\"maxfilesreached\", this.files);\n }\n\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n }, {\n key: \"drop\",\n value: function drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n\n this.emit(\"drop\", e); // Convert the FileList to an Array\n // This is necessary for IE11\n\n var files = [];\n\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n } // Even if it's a folder, files.length will contain the folders.\n\n\n if (files.length) {\n var items = e.dataTransfer.items;\n\n if (items && items.length && items[0].webkitGetAsEntry != null) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n\n this.emit(\"addedfiles\", files);\n }\n }, {\n key: \"paste\",\n value: function paste(e) {\n if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n return x.items;\n }) == null) {\n return;\n }\n\n this.emit(\"paste\", e);\n var items = e.clipboardData.items;\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n }, {\n key: \"handleFiles\",\n value: function handleFiles(files) {\n var _iterator5 = dropzone_createForOfIteratorHelper(files, true),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var file = _step5.value;\n this.addFile(file);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n } // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n\n }, {\n key: \"_addFilesFromItems\",\n value: function _addFilesFromItems(items) {\n var _this4 = this;\n\n return function () {\n var result = [];\n\n var _iterator6 = dropzone_createForOfIteratorHelper(items, true),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var item = _step6.value;\n var entry;\n\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n result.push(_this4.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(_this4._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") {\n result.push(_this4.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return result;\n }();\n } // Goes through the directory, and adds each file it finds recursively\n\n }, {\n key: \"_addFilesFromDirectory\",\n value: function _addFilesFromDirectory(directory, path) {\n var _this5 = this;\n\n var dirReader = directory.createReader();\n\n var errorHandler = function errorHandler(error) {\n return __guardMethod__(console, \"log\", function (o) {\n return o.log(error);\n });\n };\n\n var readEntries = function readEntries() {\n return dirReader.readEntries(function (entries) {\n if (entries.length > 0) {\n var _iterator7 = dropzone_createForOfIteratorHelper(entries, true),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var entry = _step7.value;\n\n if (entry.isFile) {\n entry.file(function (file) {\n if (_this5.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") {\n return;\n }\n\n file.fullPath = \"\".concat(path, \"/\").concat(file.name);\n return _this5.addFile(file);\n });\n } else if (entry.isDirectory) {\n _this5._addFilesFromDirectory(entry, \"\".concat(path, \"/\").concat(entry.name));\n }\n } // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n readEntries();\n }\n\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n } // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n\n }, {\n key: \"accept\",\n value: function accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n done(this.options.dictInvalidFileType);\n } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n this.emit(\"maxfilesexceeded\", file);\n } else {\n this.options.accept.call(this, file, done);\n }\n }\n }, {\n key: \"addFile\",\n value: function addFile(file) {\n var _this6 = this;\n\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and\n // thus the chunks — might change if `options.transformFile` is set\n // and does something to the data.\n\n };\n this.files.push(file);\n file.status = Dropzone.ADDED;\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n this.accept(file, function (error) {\n if (error) {\n file.accepted = false;\n\n _this6._errorProcessing([file], error); // Will set the file.status\n\n } else {\n file.accepted = true;\n\n if (_this6.options.autoQueue) {\n _this6.enqueueFile(file);\n } // Will set .accepted = true\n\n }\n\n _this6._updateMaxFilesReachedClass();\n });\n } // Wrapper for enqueueFile\n\n }, {\n key: \"enqueueFiles\",\n value: function enqueueFiles(files) {\n var _iterator8 = dropzone_createForOfIteratorHelper(files, true),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var file = _step8.value;\n this.enqueueFile(file);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return null;\n }\n }, {\n key: \"enqueueFile\",\n value: function enqueueFile(file) {\n var _this7 = this;\n\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n\n if (this.options.autoProcessQueue) {\n return setTimeout(function () {\n return _this7.processQueue();\n }, 0); // Deferring the call\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }\n }, {\n key: \"_enqueueThumbnail\",\n value: function _enqueueThumbnail(file) {\n var _this8 = this;\n\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n this._thumbnailQueue.push(file);\n\n return setTimeout(function () {\n return _this8._processThumbnailQueue();\n }, 0); // Deferring the call\n }\n }\n }, {\n key: \"_processThumbnailQueue\",\n value: function _processThumbnailQueue() {\n var _this9 = this;\n\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n\n this._processingThumbnail = true;\n\n var file = this._thumbnailQueue.shift();\n\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n _this9.emit(\"thumbnail\", file, dataUrl);\n\n _this9._processingThumbnail = false;\n return _this9._processThumbnailQueue();\n });\n } // Can be called by the user to remove a file\n\n }, {\n key: \"removeFile\",\n value: function removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n\n this.files = without(this.files, file);\n this.emit(\"removedfile\", file);\n\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n } // Removes all files that aren't currently processed from the list\n\n }, {\n key: \"removeAllFiles\",\n value: function removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n\n var _iterator9 = dropzone_createForOfIteratorHelper(this.files.slice(), true),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var file = _step9.value;\n\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n return null;\n } // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n\n }, {\n key: \"resizeImage\",\n value: function resizeImage(file, width, height, resizeMethod, callback) {\n var _this10 = this;\n\n return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n var resizeMimeType = _this10.options.resizeMimeType;\n\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n\n var resizedDataURL = canvas.toDataURL(resizeMimeType, _this10.options.resizeQuality);\n\n if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n var _this11 = this;\n\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector\n\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n\n return;\n }\n\n _this11.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n fileReader.readAsDataURL(file);\n } // `mockFile` needs to have these attributes:\n //\n // { name: 'name', size: 12345, imageUrl: '' }\n //\n // `callback` will be invoked when the image has been downloaded and displayed.\n // `crossOrigin` will be added to the `img` tag when accessing the file.\n\n }, {\n key: \"displayExistingFile\",\n value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {\n var _this12 = this;\n\n var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n this.emit(\"addedfile\", mockFile);\n this.emit(\"complete\", mockFile);\n\n if (!resizeThumbnail) {\n this.emit(\"thumbnail\", mockFile, imageUrl);\n if (callback) callback();\n } else {\n var onDone = function onDone(thumbnail) {\n _this12.emit(\"thumbnail\", mockFile, thumbnail);\n\n if (callback) callback();\n };\n\n mockFile.dataURL = imageUrl;\n this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n }\n }\n }, {\n key: \"createThumbnailFromUrl\",\n value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n var _this13 = this;\n\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n var img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n } // fixOrientation is not needed anymore with browsers handling imageOrientation\n\n\n fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n\n img.onload = function () {\n var loadExif = function loadExif(callback) {\n return callback(1);\n };\n\n if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n loadExif = function loadExif(callback) {\n return EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, \"Orientation\"));\n });\n };\n }\n\n return loadExif(function (orientation) {\n file.width = img.width;\n file.height = img.height;\n\n var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n } // This is a bugfix for iOS' scaling bug.\n\n\n drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n var thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return img.src = file.dataURL;\n } // Goes through the queue and processes files if there aren't too many already.\n\n }, {\n key: \"processQueue\",\n value: function processQueue() {\n var parallelUploads = this.options.parallelUploads;\n var processingLength = this.getUploadingFiles().length;\n var i = processingLength; // There are already at least as many files uploading than should be\n\n if (processingLength >= parallelUploads) {\n return;\n }\n\n var queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n\n\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n } // Wrapper for `processFiles`\n\n }, {\n key: \"processFile\",\n value: function processFile(file) {\n return this.processFiles([file]);\n } // Loads the file, then calls finishedLoading()\n\n }, {\n key: \"processFiles\",\n value: function processFiles(files) {\n var _iterator10 = dropzone_createForOfIteratorHelper(files, true),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var file = _step10.value;\n file.processing = true; // Backwards compatibility\n\n file.status = Dropzone.UPLOADING;\n this.emit(\"processing\", file);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n }, {\n key: \"_getFilesWithXhr\",\n value: function _getFilesWithXhr(xhr) {\n var files;\n return files = this.files.filter(function (file) {\n return file.xhr === xhr;\n }).map(function (file) {\n return file;\n });\n } // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n\n }, {\n key: \"cancelUpload\",\n value: function cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n var groupedFiles = this._getFilesWithXhr(file.xhr);\n\n var _iterator11 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var groupedFile = _step11.value;\n groupedFile.status = Dropzone.CANCELED;\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n if (typeof file.xhr !== \"undefined\") {\n file.xhr.abort();\n }\n\n var _iterator12 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var _groupedFile = _step12.value;\n this.emit(\"canceled\", _groupedFile);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }, {\n key: \"resolveOption\",\n value: function resolveOption(option) {\n if (typeof option === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return option.apply(this, args);\n }\n\n return option;\n }\n }, {\n key: \"uploadFile\",\n value: function uploadFile(file) {\n return this.uploadFiles([file]);\n }\n }, {\n key: \"uploadFiles\",\n value: function uploadFiles(files) {\n var _this14 = this;\n\n this._transformFiles(files, function (transformedFiles) {\n if (_this14.options.chunking) {\n // Chunking is not allowed to be used with `uploadMultiple` so we know\n // that there is only __one__file.\n var transformedFile = transformedFiles[0];\n files[0].upload.chunked = _this14.options.chunking && (_this14.options.forceChunking || transformedFile.size > _this14.options.chunkSize);\n files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this14.options.chunkSize);\n }\n\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n var file = files[0];\n var _transformedFile = transformedFiles[0];\n var startedChunkCount = 0;\n file.upload.chunks = [];\n\n var handleNextChunk = function handleNextChunk() {\n var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.\n\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n } // This means, that all chunks have already been started.\n\n\n if (chunkIndex >= file.upload.totalChunkCount) return;\n startedChunkCount++;\n var start = chunkIndex * _this14.options.chunkSize;\n var end = Math.min(start + _this14.options.chunkSize, _transformedFile.size);\n var dataBlock = {\n name: _this14._getParamName(0),\n data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock,\n // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0 // The number of times this block has been retried.\n\n };\n\n _this14._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = function (chunk, response) {\n var allFinished = true;\n chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk\n\n chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n\n chunk.xhr = null;\n\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n _this14.options.chunksUploaded(file, function () {\n _this14._finished(files, response, null);\n });\n }\n };\n\n if (_this14.options.parallelChunkUploads) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n } else {\n handleNextChunk();\n }\n } else {\n var dataBlocks = [];\n\n for (var _i2 = 0; _i2 < files.length; _i2++) {\n dataBlocks[_i2] = {\n name: _this14._getParamName(_i2),\n data: transformedFiles[_i2],\n filename: files[_i2].upload.filename\n };\n }\n\n _this14._uploadData(files, dataBlocks);\n }\n });\n } /// Returns the right chunk for given file and xhr\n\n }, {\n key: \"_getChunk\",\n value: function _getChunk(file, xhr) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n return file.upload.chunks[i];\n }\n }\n } // This function actually uploads the file(s) to the server.\n // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n // files, or individual chunks for chunked upload).\n\n }, {\n key: \"_uploadData\",\n value: function _uploadData(files, dataBlocks) {\n var _this15 = this;\n\n var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.\n\n var _iterator13 = dropzone_createForOfIteratorHelper(files, true),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var file = _step13.value;\n file.xhr = xhr;\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n var method = this.resolveOption(this.options.method, files);\n var url = this.resolveOption(this.options.url, files);\n xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n\n var timeout = this.resolveOption(this.options.timeout, files);\n if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = function (e) {\n _this15._finishedUploading(files, xhr, e);\n };\n\n xhr.ontimeout = function () {\n _this15._handleUploadError(files, xhr, \"Request timedout after \".concat(_this15.options.timeout / 1000, \" seconds\"));\n };\n\n xhr.onerror = function () {\n _this15._handleUploadError(files, xhr);\n }; // Some browsers do not have the .upload property\n\n\n var progressObj = xhr.upload != null ? xhr.upload : xhr;\n\n progressObj.onprogress = function (e) {\n return _this15._updateFilesUploadProgress(files, xhr, e);\n };\n\n var headers = {\n Accept: \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n };\n\n if (this.options.headers) {\n Dropzone.extend(headers, this.options.headers);\n }\n\n for (var headerName in headers) {\n var headerValue = headers[headerName];\n\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n var formData = new FormData(); // Adding all @options parameters\n\n if (this.options.params) {\n var additionalParams = this.options.params;\n\n if (typeof additionalParams === \"function\") {\n additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n }\n\n for (var key in additionalParams) {\n var value = additionalParams[key];\n\n if (Array.isArray(value)) {\n // The additional parameter contains an array,\n // so lets iterate over it to attach each value\n // individually.\n for (var i = 0; i < value.length; i++) {\n formData.append(key, value[i]);\n }\n } else {\n formData.append(key, value);\n }\n }\n } // Let the user add additional data if necessary\n\n\n var _iterator14 = dropzone_createForOfIteratorHelper(files, true),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var _file = _step14.value;\n this.emit(\"sending\", _file, xhr, formData);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n this._addFormElementData(formData); // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n\n\n for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) {\n var dataBlock = dataBlocks[_i3];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n }, {\n key: \"_transformFiles\",\n value: function _transformFiles(files, done) {\n var _this16 = this;\n\n var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n\n var doneCounter = 0;\n\n var _loop = function _loop(i) {\n _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n transformedFiles[i] = transformedFile;\n\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n };\n\n for (var i = 0; i < files.length; i++) {\n _loop(i);\n }\n } // Takes care of adding other input elements of the form to the AJAX request\n\n }, {\n key: \"_addFormElementData\",\n value: function _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n var _iterator15 = dropzone_createForOfIteratorHelper(this.element.querySelectorAll(\"input, textarea, select, button\"), true),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var input = _step15.value;\n var inputName = input.getAttribute(\"name\");\n var inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.\n\n if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n var _iterator16 = dropzone_createForOfIteratorHelper(input.options, true),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var option = _step16.value;\n\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n }\n } // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n\n }, {\n key: \"_updateFilesUploadProgress\",\n value: function _updateFilesUploadProgress(files, xhr, e) {\n if (!files[0].upload.chunked) {\n // Handle file uploads without chunking\n var _iterator17 = dropzone_createForOfIteratorHelper(files, true),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var file = _step17.value;\n\n if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) {\n // If both, the `total` and `bytesSent` have already been set, and\n // they are equal (meaning progress is at 100%), we can skip this\n // file, since an upload progress shouldn't go down.\n continue;\n }\n\n if (e) {\n file.upload.progress = 100 * e.loaded / e.total;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n file.upload.progress = 100;\n file.upload.bytesSent = file.upload.total;\n }\n\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n } else {\n // Handle chunked file uploads\n // Chunked upload is not compatible with uploading multiple files in one\n // request, so we know there's only one file.\n var _file2 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk\n // progress.\n\n var chunk = this._getChunk(_file2, xhr);\n\n if (e) {\n chunk.progress = 100 * e.loaded / e.total;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n chunk.progress = 100;\n chunk.bytesSent = chunk.total;\n } // Now tally the *file* upload progress from its individual chunks\n\n\n _file2.upload.progress = 0;\n _file2.upload.total = 0;\n _file2.upload.bytesSent = 0;\n\n for (var i = 0; i < _file2.upload.totalChunkCount; i++) {\n if (_file2.upload.chunks[i] && typeof _file2.upload.chunks[i].progress !== \"undefined\") {\n _file2.upload.progress += _file2.upload.chunks[i].progress;\n _file2.upload.total += _file2.upload.chunks[i].total;\n _file2.upload.bytesSent += _file2.upload.chunks[i].bytesSent;\n }\n } // Since the process is a percentage, we need to divide by the amount of\n // chunks we've used.\n\n\n _file2.upload.progress = _file2.upload.progress / _file2.upload.totalChunkCount;\n this.emit(\"uploadprogress\", _file2, _file2.upload.progress, _file2.upload.bytesSent);\n }\n }\n }, {\n key: \"_finishedUploading\",\n value: function _finishedUploading(files, xhr, e) {\n var response;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n response = xhr.responseText;\n\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files, xhr);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);\n } else {\n this._finished(files, response, e);\n }\n }\n }\n }, {\n key: \"_handleUploadError\",\n value: function _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n var chunk = this._getChunk(files[0], xhr);\n\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n\n return;\n } else {\n console.warn(\"Retried this chunk too often. Giving up.\");\n }\n }\n\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }, {\n key: \"submitRequest\",\n value: function submitRequest(xhr, formData, files) {\n if (xhr.readyState != 1) {\n console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n return;\n }\n\n xhr.send(formData);\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_finished\",\n value: function _finished(files, responseText, e) {\n var _iterator18 = dropzone_createForOfIteratorHelper(files, true),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var file = _step18.value;\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_errorProcessing\",\n value: function _errorProcessing(files, message, xhr) {\n var _iterator19 = dropzone_createForOfIteratorHelper(files, true),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var file = _step19.value;\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }], [{\n key: \"initClass\",\n value: function initClass() {\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n /*\n This is a list of all available events you can register on a dropzone object.\n You can register an event handler like this:\n dropzone.on(\"dragEnter\", function() { });\n */\n\n this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n } // global utility\n\n }, {\n key: \"extend\",\n value: function extend(target) {\n for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n objects[_key2 - 1] = arguments[_key2];\n }\n\n for (var _i4 = 0, _objects = objects; _i4 < _objects.length; _i4++) {\n var object = _objects[_i4];\n\n for (var key in object) {\n var val = object[key];\n target[key] = val;\n }\n }\n\n return target;\n }\n }, {\n key: \"uuidv4\",\n value: function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c === \"x\" ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n }]);\n\n return Dropzone;\n}(Emitter);\n\n\nDropzone.initClass();\nDropzone.version = \"5.9.3\"; // This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n// Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n//
    \n\nDropzone.options = {}; // Returns the options for an element or undefined if none available.\n\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n}; // Holds a list of all dropzone instances\n\n\nDropzone.instances = []; // Returns the dropzone for given element if any\n\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n\n return element.dropzone;\n}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\n\n\nDropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them\n\nDropzone.discover = function () {\n var dropzones;\n\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = []; // IE :(\n\n var checkElements = function checkElements(elements) {\n return function () {\n var result = [];\n\n var _iterator20 = dropzone_createForOfIteratorHelper(elements, true),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var el = _step20.value;\n\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n\n return result;\n }();\n };\n\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return function () {\n var result = [];\n\n var _iterator21 = dropzone_createForOfIteratorHelper(dropzones, true),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var dropzone = _step21.value;\n\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n\n return result;\n }();\n}; // Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n\n\nDropzone.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i]; // Checks if the browser is supported\n\nDropzone.isBrowserSupported = function () {\n var capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n if (Dropzone.blacklistedBrowsers !== undefined) {\n // Since this has been renamed, this makes sure we don't break older\n // configuration.\n Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n } // The browser supports the API, but may be blocked.\n\n\n var _iterator22 = dropzone_createForOfIteratorHelper(Dropzone.blockedBrowsers, true),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var regex = _step22.value;\n\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(\",\")[1]); // separate out the mime component\n\n var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0]; // write the bytes of the string to an ArrayBuffer\n\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n } // write the ArrayBuffer to a blob\n\n\n return new Blob([ab], {\n type: mimeString\n });\n}; // Returns an array without the rejected item\n\n\nvar without = function without(list, rejectedItem) {\n return list.filter(function (item) {\n return item !== rejectedItem;\n }).map(function (item) {\n return item;\n });\n}; // abc-def_ghi -> abcDefGhi\n\n\nvar camelize = function camelize(str) {\n return str.replace(/[\\-_](\\w)/g, function (match) {\n return match.charAt(1).toUpperCase();\n });\n}; // Creates an element from string\n\n\nDropzone.createElement = function (string) {\n var div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n}; // Tests if given element is inside (or simply is) the container\n\n\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n\n\n while (element = element.parentNode) {\n if (element === container) {\n return true;\n }\n }\n\n return false;\n};\n\nDropzone.getElement = function (el, name) {\n var element;\n\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n\n if (element == null) {\n throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector or a plain HTML element.\"));\n }\n\n return element;\n};\n\nDropzone.getElements = function (els, name) {\n var el, elements;\n\n if (els instanceof Array) {\n elements = [];\n\n try {\n var _iterator23 = dropzone_createForOfIteratorHelper(els, true),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n el = _step23.value;\n elements.push(this.getElement(el, name));\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n\n var _iterator24 = dropzone_createForOfIteratorHelper(document.querySelectorAll(els), true),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n el = _step24.value;\n elements.push(el);\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if (elements == null || !elements.length) {\n throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\"));\n }\n\n return elements;\n}; // Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n\n\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n}; // Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n\n\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n\n\n acceptedFiles = acceptedFiles.split(\",\");\n var mimeType = file.type;\n var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n var _iterator25 = dropzone_createForOfIteratorHelper(acceptedFiles, true),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var validType = _step25.value;\n validType = validType.trim();\n\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n\n return false;\n}; // Augment jQuery\n\n\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n} // Dropzone file status codes\n\n\nDropzone.ADDED = \"added\";\nDropzone.QUEUED = \"queued\"; // For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n\nDropzone.ACCEPTED = Dropzone.QUEUED;\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\n\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n var iw = img.naturalWidth;\n var ih = img.naturalHeight;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n\n var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.\n\n\n var sy = 0;\n var ey = ih;\n var py = ih;\n\n while (py > sy) {\n var alpha = data[(py - 1) * 4 + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = ey + sy >> 1;\n }\n\n var ratio = py / ih;\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n}; // A replacement for context.drawImage\n// (args are for source and destination).\n\n\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n}; // Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\n\nvar ExifRestore = /*#__PURE__*/function () {\n function ExifRestore() {\n dropzone_classCallCheck(this, ExifRestore);\n }\n\n dropzone_createClass(ExifRestore, null, [{\n key: \"initClass\",\n value: function initClass() {\n this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n }\n }, {\n key: \"encode64\",\n value: function encode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n\n if (!(i < input.length)) {\n break;\n }\n }\n\n return output;\n }\n }, {\n key: \"restore\",\n value: function restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n return resizedFileBase64;\n }\n\n var rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return \"data:image/jpeg;base64,\".concat(this.encode64(image));\n }\n }, {\n key: \"exifManipulation\",\n value: function exifManipulation(resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments);\n var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n var aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n }, {\n key: \"getExifArray\",\n value: function getExifArray(segments) {\n var seg = undefined;\n var x = 0;\n\n while (x < segments.length) {\n seg = segments[x];\n\n if (seg[0] === 255 & seg[1] === 225) {\n return seg;\n }\n\n x++;\n }\n\n return [];\n }\n }, {\n key: \"insertExif\",\n value: function insertExif(resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n var buf = this.decode64(imageData);\n var separatePoint = buf.indexOf(255, 3);\n var mae = buf.slice(0, separatePoint);\n var ato = buf.slice(separatePoint);\n var array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n }, {\n key: \"slice2Segments\",\n value: function slice2Segments(rawImageArray) {\n var head = 0;\n var segments = [];\n\n while (true) {\n var length;\n\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n break;\n }\n\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n head += 2;\n } else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n\n if (head > rawImageArray.length) {\n break;\n }\n }\n\n return segments;\n }\n }, {\n key: \"decode64\",\n value: function decode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n\n if (base64test.exec(input)) {\n console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n\n if (!(i < input.length)) {\n break;\n }\n }\n\n return buf;\n }\n }]);\n\n return ExifRestore;\n}();\n\nExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n// @win window reference\n// @fn function reference\n\nvar contentLoaded = function contentLoaded(win, fn) {\n var done = false;\n var top = true;\n var doc = win.document;\n var root = doc.documentElement;\n var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n var pre = doc.addEventListener ? \"\" : \"on\";\n\n var init = function init(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function poll() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n\n if (top) {\n poll();\n }\n }\n\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n}; // As a single function to be able to write tests.\n\n\nDropzone._autoDiscoverFunction = function () {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n};\n\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\n\nfunction __guardMethod__(obj, methodName, transform) {\n if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}\n\n\n;// CONCATENATED MODULE: ./tool/dropzone.dist.js\n /// Make Dropzone a global variable.\n\nwindow.Dropzone = Dropzone;\n/* harmony default export */ var dropzone_dist = (Dropzone);\n\n}();\n/******/ \treturn __nested_webpack_exports__;\n/******/ })()\n;\n});\n\n//# sourceURL=webpack://django-filer/./node_modules/dropzone/dist/dropzone.js?\n}"); + +/***/ }, + +/***/ "./node_modules/mediator-js/lib/mediator.js" +/*!**************************************************!*\ + !*** ./node_modules/mediator-js/lib/mediator.js ***! + \**************************************************/ +(module, exports) { + +eval("{var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*jslint bitwise: true, nomen: true, plusplus: true, white: true */\n\n/*!\n* Mediator.js Library v0.11.0\n* https://github.com/ajacksified/Mediator.js\n*\n* Copyright 2018, Jack Lawson\n* MIT Licensed (http://www.opensource.org/licenses/mit-license.php)\n*\n* For more information: http://thejacklawson.com/2011/06/mediators-for-modularized-asynchronous-programming-in-javascript/index.html\n* Project on GitHub: https://github.com/ajacksified/Mediator.js\n*\n* Last update: 22 Mar 2018\n*/\n\n(function(global, factory) {\n 'use strict';\n\n if (true) {\n // AMD\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n global.Mediator = factory();\n return global.Mediator;\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else // removed by dead control flow\n{}\n}(this, function() {\n 'use strict';\n\n // We'll generate guids for class instances for easy referencing later on.\n // Subscriber instances will have an id that can be refernced for quick\n // lookups.\n\n function guidGenerator() {\n var S4 = function() {\n return (((1+Math.random())*0x10000)|0).toString(16).substring(1);\n };\n\n return (S4()+S4()+\"-\"+S4()+\"-\"+S4()+\"-\"+S4()+\"-\"+S4()+S4()+S4());\n }\n\n // Subscribers are instances of Mediator Channel registrations. We generate\n // an object instance so that it can be updated later on without having to\n // unregister and re-register. Subscribers are constructed with a function\n // to be called, options object, and context.\n\n function Subscriber(fn, options, context) {\n if (!(this instanceof Subscriber)) {\n return new Subscriber(fn, options, context);\n }\n\n this.id = guidGenerator();\n this.fn = fn;\n this.options = options;\n this.context = context;\n this.channel = null;\n }\n\n // Mediator.update on a subscriber instance can update its function,context,\n // or options object. It takes in an object and looks for fn, context, or\n // options keys.\n Subscriber.prototype.update = function(options) {\n if (options) {\n this.fn = options.fn || this.fn;\n this.context = options.context || this.context;\n this.options = options.options || this.options;\n if (this.channel && this.options && this.options.priority !== undefined) {\n this.channel.setPriority(this.id, this.options.priority);\n }\n }\n }\n\n // A Mediator channel holds a list of sub-channels and subscribers to be fired\n // when Mediator.publish is called on the Mediator instance. It also contains\n // some methods to manipulate its lists of data; only setPriority and\n // StopPropagation are meant to be used. The other methods should be accessed\n // through the Mediator instance.\n\n function Channel(namespace, parent) {\n if (!(this instanceof Channel)) {\n return new Channel(namespace);\n }\n\n this.namespace = namespace || \"\";\n this._subscribers = [];\n this._channels = {};\n this._parent = parent;\n this.stopped = false;\n }\n\n // Sort function for sorting the channels based on their priority. The sort will\n // place the channel with the highest priority in the first place of the array,\n // all other channels will be added in descending order. i.g. a channel with a\n // priority of 9 will be placed before a channel with a priority of 3\n Channel.prototype.channelPrioritySort = function(a, b) {\n if (a.options.priority > b.options.priority) {\n return -1;\n } else if (a.options.priority < b.options.priority) {\n return 1;\n }\n return 0;\n };\n\n Channel.prototype.addSubscriber = function(fn, options, context){\n // Make sure there is always an options object\n if (!options) {\n options = { priority: 0 };\n }\n\n // Cheap hack to either parse as an int or turn it into 0. Runs faster\n // in many browsers than parseInt with the benefit that it won't\n // return a NaN.\n options.priority = options.priority | 0;\n\n var subscriber = new Subscriber(fn, options, context);\n subscriber.channel = this;\n\n this._subscribers.push(subscriber);\n this._subscribers.sort(this.channelPrioritySort);\n\n return subscriber;\n }\n\n // The channel instance is passed as an argument to the mediator subscriber,\n // and further subscriber propagation can be called with\n // channel.StopPropagation().\n Channel.prototype.stopPropagation = function() {\n this.stopped = true;\n }\n\n Channel.prototype.getSubscriber = function(identifier) {\n var x = 0,\n y = this._subscribers.length;\n\n for(x, y; x < y; x++) {\n if (this._subscribers[x].id === identifier || this._subscribers[x].fn === identifier) {\n return this._subscribers[x];\n }\n }\n }\n\n // Channel.setPriority is useful in updating the order in which Subscribers\n // are called, and takes an identifier (subscriber id or named function) and\n // an array index. It will not search recursively through subchannels.\n\n Channel.prototype.setPriority = function(identifier, priority) {\n var x = 0,\n y = this._subscribers.length;\n\n for(; x= 0; x--) {\n if(this._subscribers[x].fn === identifier || this._subscribers[x].id === identifier){\n this._subscribers[x].channel = null;\n this._subscribers.splice(x,1);\n }\n }\n }\n\n // Check if we should attempt to automatically clean up the channel\n if (autoCleanup) {\n this.autoCleanChannel();\n }\n\n var x = this._subscribers.length - 1;\n\n // If we don't pass in an id, we're clearing all\n if (!identifier) {\n this._subscribers = [];\n return;\n }\n\n // Going backwards makes splicing a whole lot easier.\n for(x; x >= 0; x--) {\n if (this._subscribers[x].fn === identifier || this._subscribers[x].id === identifier) {\n this._subscribers[x].channel = null;\n this._subscribers.splice(x,1);\n }\n }\n }\n\n Channel.prototype.autoCleanChannel = function() {\n // First make sure there are no more subscribers, if there are we\n // can stop processing the channel any further\n if (this._subscribers.length !== 0) {\n return;\n }\n\n // Next we need to make sure there are no more sub-channels that\n // have this channel as its parent channel. We try to iterate over the\n // properties of _channels and as soon as we find a property we've\n // set we will stop processing the channel any further\n for (var key in this._channels) {\n if (this._channels.hasOwnProperty(key)) {\n return;\n }\n }\n\n // The last check before we can remove the channel is to see if it\n // has a parent. If there is no parent we don't want to remove this\n // channel\n if (this._parent != null) {\n // We need the ID by which this channel is known to its parent, it should\n // be the last part of the namespace. We need split the namespace up and\n // take its last element to pass along to the removeChannel method\n var path = this.namespace.split(':'),\n channelName = path[path.length - 1];\n // The parent of the current channel to remove this channel\n this._parent.removeChannel(channelName);\n }\n }\n\n Channel.prototype.removeChannel = function(channelName) {\n if (this.hasChannel(channelName)) {\n this._channels[channelName] = null;\n delete this._channels[channelName];\n // After removing a sub-channel we can check if that makes this channel\n // suitable for auto clean up\n this.autoCleanChannel();\n }\n };\n\n\n // This will publish arbitrary arguments to a subscriber and then to parent\n // channels.\n\n Channel.prototype.publish = function(data) {\n var x = 0,\n y = this._subscribers.length,\n shouldCall = false,\n subscriber, l,\n subsBefore,subsAfter;\n\n // Priority is preserved in the _subscribers index.\n for(x, y; x < y; x++) {\n // By default set the flag to false\n shouldCall = false;\n subscriber = this._subscribers[x];\n\n if (!this.stopped) {\n subsBefore = this._subscribers.length;\n if (subscriber.options !== undefined && typeof subscriber.options.predicate === \"function\") {\n if (subscriber.options.predicate.apply(subscriber.context, data)) {\n // The predicate matches, the callback function should be called\n shouldCall = true;\n }\n }else{\n // There is no predicate to match, the callback should always be called\n shouldCall = true;\n }\n }\n\n // Check if the callback should be called\n if (shouldCall) {\n // Check if the subscriber has options and if this include the calls options\n if (subscriber.options && subscriber.options.calls !== undefined) {\n // Decrease the number of calls left by one\n subscriber.options.calls--;\n // Once the number of calls left reaches zero or less we need to remove the subscriber\n if (subscriber.options.calls < 1) {\n this.removeSubscriber(subscriber.id);\n }\n }\n // Now we call the callback, if this in turns publishes to the same channel it will no longer\n // cause the callback to be called as we just removed it as a subscriber\n subscriber.fn.apply(subscriber.context, data);\n\n subsAfter = this._subscribers.length;\n y = subsAfter;\n if (subsAfter === subsBefore - 1) {\n x--;\n }\n }\n }\n\n if (this._parent) {\n this._parent.publish(data);\n }\n\n this.stopped = false;\n }\n\n function Mediator() {\n if (!(this instanceof Mediator)) {\n return new Mediator();\n }\n\n this._channels = new Channel('');\n }\n\n // A Mediator instance is the interface through which events are registered\n // and removed from publish channels.\n\n // Returns a channel instance based on namespace, for example\n // application:chat:message:received. If readOnly is true we\n // will refrain from creating non existing channels.\n Mediator.prototype.getChannel = function(namespace, readOnly) {\n var channel = this._channels,\n namespaceHierarchy = namespace.split(':'),\n x = 0,\n y = namespaceHierarchy.length;\n\n if (namespace === '') {\n return channel;\n }\n\n if (namespaceHierarchy.length > 0) {\n for(x, y; x < y; x++) {\n\n if (!channel.hasChannel(namespaceHierarchy[x])) {\n if (readOnly) {\n break;\n } else {\n channel.addChannel(namespaceHierarchy[x]);\n }\n }\n\n channel = channel.returnChannel(namespaceHierarchy[x]);\n }\n }\n\n return channel;\n }\n\n // Pass in a channel namespace, function to be called, options, and context\n // to call the function in to Subscribe. It will create a channel if one\n // does not exist. Options can include a predicate to determine if it\n // should be called (based on the data published to it) and a priority\n // index.\n\n Mediator.prototype.subscribe = function(channelName, fn, options, context) {\n var channel = this.getChannel(channelName || \"\", false);\n\n options = options || {};\n context = context || {};\n\n return channel.addSubscriber(fn, options, context);\n }\n\n // Pass in a channel namespace, function to be called, options, and context\n // to call the function in to Subscribe. It will create a channel if one\n // does not exist. Options can include a predicate to determine if it\n // should be called (based on the data published to it) and a priority\n // index.\n\n Mediator.prototype.once = function(channelName, fn, options, context) {\n options = options || {};\n options.calls = 1;\n\n return this.subscribe(channelName, fn, options, context);\n }\n\n // Returns a subscriber for a given subscriber id / named function and\n // channel namespace\n\n Mediator.prototype.getSubscriber = function(identifier, channelName) {\n var channel = this.getChannel(channelName || \"\", true);\n // We have to check if channel within the hierarchy exists and if it is\n // an exact match for the requested channel\n if (channel.namespace !== channelName) {\n return null;\n }\n\n return channel.getSubscriber(identifier);\n }\n\n // Remove a subscriber from a given channel namespace recursively based on\n // a passed-in subscriber id or named function.\n\n Mediator.prototype.remove = function(channelName, identifier, autoClean) {\n var channel = this.getChannel(channelName || \"\", true);\n\n if (channel.namespace !== channelName) {\n return false;\n }\n\n channel.removeSubscriber(identifier, autoClean);\n }\n\n\n // Publishes arbitrary data to a given channel namespace. Channels are\n // called recursively downwards; a post to application:chat will post to\n // application:chat:receive and application:chat:derp:test:beta:bananas.\n // Called using Mediator.publish(\"application:chat\", [ args ]);\n\n Mediator.prototype.publish = function(channelName) {\n var channel = this.getChannel(channelName || \"\", false);\n if (channel.namespace !== channelName) {\n return null;\n }\n\n var args = Array.prototype.slice.call(arguments, 1);\n\n args.push(channel);\n\n channel.publish(args);\n }\n\n // Alias some common names for easy interop\n Mediator.prototype.on = Mediator.prototype.subscribe;\n Mediator.prototype.bind = Mediator.prototype.subscribe;\n Mediator.prototype.emit = Mediator.prototype.publish;\n Mediator.prototype.trigger = Mediator.prototype.publish;\n Mediator.prototype.off = Mediator.prototype.remove;\n\n // Finally, expose it all.\n\n Mediator.Channel = Channel;\n Mediator.Subscriber = Subscriber;\n Mediator.version = \"0.10.1\";\n\n return Mediator;\n}));\n\n\n//# sourceURL=webpack://django-filer/./node_modules/mediator-js/lib/mediator.js?\n}"); + +/***/ } + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ if (!(moduleId in __webpack_modules__)) { +/******/ delete __webpack_module_cache__[moduleId]; +/******/ var e = new Error("Cannot find module '" + moduleId + "'"); +/******/ e.code = 'MODULE_NOT_FOUND'; +/******/ throw e; +/******/ } +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/harmony module decorator */ +/******/ (() => { +/******/ __webpack_require__.hmd = (module) => { +/******/ module = Object.create(module); +/******/ if (!module.children) module.children = []; +/******/ Object.defineProperty(module, 'exports', { +/******/ enumerable: true, +/******/ set: () => { +/******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id); +/******/ } +/******/ }); +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module can't be inlined because the eval devtool is used. +/******/ var __webpack_exports__ = __webpack_require__("./filer/static/filer/js/base.js"); +/******/ +/******/ })() +; \ No newline at end of file From 8ab90d46bf94f893e1be09732f60e4df87a1c04a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 15:46:57 +0300 Subject: [PATCH 28/51] BEN-2954: debug --- filer/admin/folderadmin.py | 57 +++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 916a55e49..2a792350c 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -703,7 +703,7 @@ def response_action(self, request, files_queryset, folders_queryset): action = action_form.cleaned_data['action'] select_across = action_form.cleaned_data['select_across'] func, name, description = self.get_actions(request)[action] - logger.warning("[Action] Dispatching action=%s, func=%s", action, func.__name__) + print("[Action] Dispatching action=%s, func=%s" % (action, func.__name__)) # Get the list of selected PKs. If nothing's selected, we can't # perform an action on it, so bail. Except we want to perform @@ -731,11 +731,10 @@ def response_action(self, request, files_queryset, folders_queryset): files_queryset = files_queryset.filter(pk__in=selected_files) folders_queryset = folders_queryset.filter( pk__in=selected_folders) - logger.warning("[Action] selected_files=%s, selected_folders=%s", - selected_files, selected_folders) + print("[Action] selected_files=%s, selected_folders=%s" % (selected_files, selected_folders)) - logger.warning("[Action] Calling %s with files_qs count=%d, folders_qs count=%d", - name, files_queryset.count(), folders_queryset.count()) + print("[Action] Calling %s with files_qs count=%d, folders_qs count=%d" % ( + name, files_queryset.count(), folders_queryset.count())) response = func(self, request, files_queryset, folders_queryset) # Actions may return an HttpResponse, which will be used as the @@ -1251,18 +1250,14 @@ def rename_files(self, request, files_queryset, folders_queryset): def extract_files(self, request, files_queryset, folders_queryset): if request.method != 'POST': - logger.warning("[Extract] Skipping: request.method=%s (not POST)", request.method) return None from ..models import Archive success_format = "Successfully extracted archive {}." - logger.warning("[Extract] Starting extract_files action") - logger.warning("[Extract] files_queryset count=%d, pks=%s", - files_queryset.count(), - list(files_queryset.values_list('pk', flat=True))) - logger.warning("[Extract] files in queryset: %s", - list(files_queryset.values_list('pk', 'original_filename', 'file', 'polymorphic_ctype_id'))) + # DEBUG: print to stdout (bypasses logging config) + file_data = list(files_queryset.values_list('pk', 'original_filename', 'file', 'polymorphic_ctype_id')) + print("[Extract] files_queryset count=%d, data=%s" % (files_queryset.count(), file_data)) # Filter by zip file extension rather than polymorphic_ctype, # because zip files may have been uploaded as plain File instances @@ -1274,35 +1269,35 @@ def extract_files(self, request, files_queryset, folders_queryset): extension_filter |= Q(file__iendswith=ext) files_queryset = files_queryset.filter(extension_filter) - logger.warning("[Extract] After extension filter: count=%d, pks=%s", - files_queryset.count(), - list(files_queryset.values_list('pk', 'original_filename', 'file'))) + filtered_data = list(files_queryset.values_list('pk', 'original_filename', 'file')) + print("[Extract] After extension filter: count=%d, data=%s" % (files_queryset.count(), filtered_data)) if not files_queryset.exists(): - logger.warning("[Extract] No archive files found after filtering. " - "Extension filter used: %s", zip_extensions) - self.message_user(request, _("No archive files were selected.")) + # Show the user exactly what files were selected and why they didn't match + debug_msg = ("No archive files were selected. " + "DEBUG: Selected files: %s. " + "Looking for extensions: %s" % (file_data, zip_extensions)) + print("[Extract] " + debug_msg) + self.message_user(request, debug_msg, level=messages.WARNING) return None # cannot extract in unfiled files folder if files_queryset.filter(folder__isnull=True).exists(): - logger.warning("[Extract] Cannot extract in unfiled files folder") + print("[Extract] Cannot extract in unfiled files folder") raise PermissionDenied if not has_multi_file_action_permission(request, files_queryset, Folder.objects.none()): - logger.warning("[Extract] Permission denied for multi file action") + print("[Extract] Permission denied for multi file action") raise PermissionDenied def _as_archive(filer_file): """Convert a File instance to Archive so extract methods work.""" if isinstance(filer_file, Archive): - logger.warning("[Extract] File pk=%s is already an Archive instance", filer_file.pk) + print("[Extract] File pk=%s is already an Archive" % filer_file.pk) return filer_file - logger.warning("[Extract] Converting File pk=%s (%s) to Archive instance " - "(polymorphic_ctype=%s)", - filer_file.pk, filer_file.original_filename, - filer_file.polymorphic_ctype) + print("[Extract] Converting File pk=%s (%s) to Archive (ctype=%s)" % ( + filer_file.pk, filer_file.original_filename, filer_file.polymorphic_ctype)) archive = Archive() archive.__dict__.update(filer_file.__dict__) archive.extract_errors = [] @@ -1310,7 +1305,7 @@ def _as_archive(filer_file): def is_valid_archive(filer_file): is_valid = filer_file.is_valid() - logger.warning("[Extract] is_valid_archive pk=%s: %s", filer_file.pk, is_valid) + print("[Extract] is_valid pk=%s: %s" % (filer_file.pk, is_valid)) if not is_valid: error_format = "{} is not a valid zip file" message = error_format.format(filer_file.clean_actual_name) @@ -1319,7 +1314,7 @@ def is_valid_archive(filer_file): def has_collisions(filer_file): collisions = filer_file.collisions() - logger.warning("[Extract] has_collisions pk=%s: %s", filer_file.pk, collisions) + print("[Extract] collisions pk=%s: %s" % (filer_file.pk, collisions)) if collisions: error_format = "Files/Folders from {archive} with names:" error_format += "{names} already exist." @@ -1335,16 +1330,16 @@ def has_collisions(filer_file): for f in files_queryset: f = _as_archive(f) if not is_valid_archive(f) or has_collisions(f): - logger.warning("[Extract] Skipping file pk=%s (invalid or collisions)", f.pk) + print("[Extract] Skipping pk=%s (invalid or collisions)" % f.pk) continue - logger.warning("[Extract] Extracting file pk=%s (%s)", f.pk, f.original_filename) + print("[Extract] Extracting pk=%s (%s)" % (f.pk, f.original_filename)) try: f.extract() message = success_format.format(f.actual_name) - logger.warning("[Extract] Success: %s", message) + print("[Extract] Success: %s" % message) self.message_user(request, _(message)) for err_msg in f.extract_errors: - logger.warning("[Extract] Extract warning for %s: %s", f.actual_name, err_msg) + print("[Extract] Warning: %s: %s" % (f.actual_name, err_msg)) messages.warning( request, _("%s: %s" % (f.actual_name, err_msg)) From 13ec1b95aabe394c3d358e4390e0f6cddb4bb961 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 15:51:28 +0300 Subject: [PATCH 29/51] BEN-2954: test --- filer/static/filer/js/addons/dropzone.init.js | 2 +- .../static/filer/js/addons/table-dropzone.js | 2 +- .../static/filer/js/dist/filer-base.bundle.js | 264 +----------------- 3 files changed, 4 insertions(+), 264 deletions(-) diff --git a/filer/static/filer/js/addons/dropzone.init.js b/filer/static/filer/js/addons/dropzone.init.js index 6c35f9768..e2f19e0e7 100644 --- a/filer/static/filer/js/addons/dropzone.init.js +++ b/filer/static/filer/js/addons/dropzone.init.js @@ -10,7 +10,7 @@ if (Dropzone) { document.addEventListener('DOMContentLoaded', () => { const previewImageSelector = '.js-img-preview'; - const dropzoneSelector = '.js-filer-dropzone'; + const dropzoneSelector = '.js-filer-dropzone:not(.js-filer-dropzone-base):not(.js-filer-dropzone-folder):not(.js-filer-dropzone-info-message)'; const dropzones = document.querySelectorAll(dropzoneSelector); const messageSelector = '.js-filer-dropzone-message'; const lookupButtonSelector = '.js-related-lookup'; diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index c031213b2..2a6633370 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -86,7 +86,7 @@ document.addEventListener('DOMContentLoaded', () => { body.dataset.url = baseUrl; body.dataset.folderName = baseFolderTitle; body.dataset.maxFiles = dropzoneBase.dataset.maxFiles; - body.dataset.maxFilesize = dropzoneBase.dataset.maxFiles; + body.dataset.maxFilesize = dropzoneBase.dataset.maxFilesize; body.classList.add('js-filer-dropzone'); console.log('[Filer DnD] dropzoneBase found, url:', baseUrl, 'folder:', baseFolderTitle); } else { diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index f5ed60fd6..ff1695c57 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,262 +1,2 @@ -/* - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). - */ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./filer/static/filer/js/addons/copy-move-files.js" -/*!*********************************************************!*\ - !*** ./filer/static/filer/js/addons/copy-move-files.js ***! - \*********************************************************/ -() { - -"use strict"; -eval("{\n/* global Cl */\n\n/*\n This functionality is used in folder/choose_copy_destination.html template\n to disable submit if there is only one folder to copy\n*/\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const destination = document.getElementById('destination');\n if (!destination) {\n return;\n }\n\n const destinationOptions = destination.querySelectorAll('option');\n const destinationOptionLength = destinationOptions.length;\n const submit = document.querySelector('.js-submit-copy-move');\n const tooltip = document.querySelector('.js-disabled-btn-tooltip');\n\n if (destinationOptionLength === 1 && destinationOptions[0].disabled) {\n if (submit) {\n submit.style.display = 'none';\n }\n if (tooltip) {\n tooltip.style.display = 'inline-block';\n }\n }\n\n if (Cl.filerTooltip) {\n Cl.filerTooltip();\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/copy-move-files.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/dropdown-menu.js" -/*!*******************************************************!*\ - !*** ./filer/static/filer/js/addons/dropdown-menu.js ***! - \*******************************************************/ -() { - -"use strict"; -eval("{/* ========================================================================\n * Bootstrap: dropdown.js v3.3.6\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n(() => {\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n const backdropClass = 'filer-dropdown-backdrop';\n const toggleSelector = '[data-toggle=\"filer-dropdown\"]';\n\n class Dropdown {\n constructor(element) {\n this.element = element;\n element.addEventListener('click', () => this.toggle());\n }\n\n toggle() {\n const element = this.element;\n const parent = getParent(element);\n const isActive = parent.classList.contains('open');\n const relatedTarget = { relatedTarget: element };\n\n if (element.disabled || element.classList.contains('disabled')) {\n return false;\n }\n\n clearMenus();\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !parent.closest('.navbar-nav')) {\n // if mobile we use a backdrop because click events don't delegate\n const backdrop = document.createElement('div');\n backdrop.className = backdropClass;\n element.parentNode.insertBefore(backdrop, element.nextSibling);\n backdrop.addEventListener('click', clearMenus);\n }\n\n const showEvent = new CustomEvent('show.bs.filer-dropdown', {\n bubbles: true,\n cancelable: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(showEvent);\n\n if (showEvent.defaultPrevented) {\n return false;\n }\n\n element.focus();\n element.setAttribute('aria-expanded', 'true');\n parent.classList.add('open');\n\n const shownEvent = new CustomEvent('shown.bs.filer-dropdown', {\n bubbles: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(shownEvent);\n }\n\n return false;\n }\n\n keydown(e) {\n const element = this.element;\n const parent = getParent(element);\n const isActive = parent.classList.contains('open');\n const desc = ' li:not(.disabled):visible a';\n const items = Array.from(parent.querySelectorAll(`.filer-dropdown-menu${desc}`))\n .filter(item => item.offsetParent !== null); // visible check\n const index = items.indexOf(e.target);\n\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) {\n return;\n }\n\n e.preventDefault();\n e.stopPropagation();\n\n if (element.disabled || element.classList.contains('disabled')) {\n return;\n }\n\n if ((!isActive && e.which !== 27) || (isActive && e.which === 27)) {\n if (e.which === 27) {\n parent.querySelector(toggleSelector)?.focus();\n }\n return element.click();\n }\n\n if (!items.length) {\n return;\n }\n\n let newIndex = index;\n if (e.which === 38 && index > 0) {\n newIndex--; // up\n }\n if (e.which === 40 && index < items.length - 1) {\n newIndex++; // down\n }\n if (newIndex === -1) {\n newIndex = 0;\n }\n\n items[newIndex]?.focus();\n }\n }\n\n function getParent(element) {\n let selector = element.getAttribute('data-target');\n let parent = selector ? document.querySelector(selector) : null;\n\n if (!selector) {\n selector = element.getAttribute('href');\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n parent = selector ? document.querySelector(selector) : null;\n }\n\n return parent && parent.parentNode ? parent : element.parentNode;\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) {\n return;\n }\n\n // Remove all backdrops\n document.querySelectorAll(`.${backdropClass}`).forEach(el => el.remove());\n\n document.querySelectorAll(toggleSelector).forEach((toggle) => {\n const parent = getParent(toggle);\n const relatedTarget = { relatedTarget: toggle };\n\n if (!parent.classList.contains('open')) {\n return;\n }\n\n if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && parent.contains(e.target)) {\n return;\n }\n\n const hideEvent = new CustomEvent('hide.bs.filer-dropdown', {\n bubbles: true,\n cancelable: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(hideEvent);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n toggle.setAttribute('aria-expanded', 'false');\n parent.classList.remove('open');\n\n const hiddenEvent = new CustomEvent('hidden.bs.filer-dropdown', {\n bubbles: true,\n detail: relatedTarget\n });\n parent.dispatchEvent(hiddenEvent);\n });\n }\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n this.forEach((element) => {\n let data = element._filerDropdownInstance;\n\n if (!data) {\n data = new Dropdown(element);\n element._filerDropdownInstance = data;\n }\n if (typeof option === 'string') {\n data[option].call(element);\n }\n });\n return this;\n }\n\n // Extend NodeList and HTMLCollection with dropdown method\n if (!NodeList.prototype.dropdown) {\n NodeList.prototype.dropdown = function(option) {\n return Plugin.call(this, option);\n };\n }\n if (!HTMLCollection.prototype.dropdown) {\n HTMLCollection.prototype.dropdown = function(option) {\n return Plugin.call(this, option);\n };\n }\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n document.addEventListener('click', clearMenus);\n\n document.addEventListener('click', (e) => {\n if (e.target.closest('.filer-dropdown form')) {\n e.stopPropagation();\n }\n });\n\n document.addEventListener('click', (e) => {\n const toggle = e.target.closest(toggleSelector);\n if (toggle) {\n const instance = toggle._filerDropdownInstance || new Dropdown(toggle);\n if (!toggle._filerDropdownInstance) {\n toggle._filerDropdownInstance = instance;\n }\n instance.toggle(e);\n }\n });\n\n document.addEventListener('keydown', (e) => {\n const toggle = e.target.closest(toggleSelector);\n if (toggle) {\n const instance = toggle._filerDropdownInstance || new Dropdown(toggle);\n if (!toggle._filerDropdownInstance) {\n toggle._filerDropdownInstance = instance;\n }\n instance.keydown(e);\n }\n });\n\n document.addEventListener('keydown', (e) => {\n const menu = e.target.closest('.filer-dropdown-menu');\n if (menu) {\n const toggle = menu.parentNode.querySelector(toggleSelector);\n if (toggle) {\n const instance = toggle._filerDropdownInstance || new Dropdown(toggle);\n if (!toggle._filerDropdownInstance) {\n toggle._filerDropdownInstance = instance;\n }\n instance.keydown(e);\n }\n }\n });\n\n // Export for compatibility\n window.FilerDropdown = Dropdown;\n})();\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/dropdown-menu.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/dropzone.init.js" -/*!*******************************************************!*\ - !*** ./filer/static/filer/js/addons/dropzone.init.js ***! - \*******************************************************/ -(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__);\n// #DROPZONE#\n// This script implements the dropzone settings\n\n\n\n\nif ((dropzone__WEBPACK_IMPORTED_MODULE_0___default())) {\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const previewImageSelector = '.js-img-preview';\n const dropzoneSelector = '.js-filer-dropzone';\n const dropzones = document.querySelectorAll(dropzoneSelector);\n const messageSelector = '.js-filer-dropzone-message';\n const lookupButtonSelector = '.js-related-lookup';\n const editButtonSelector = '.js-related-edit';\n const dropzoneTemplate = '.js-filer-dropzone-template';\n const progressSelector = '.js-filer-dropzone-progress';\n const previewImageWrapperSelector = '.js-img-wrapper';\n const filerClearerSelector = '.filerClearer';\n const fileChooseSelector = '.js-file-selector';\n const fileIdInputSelector = '.vForeignKeyRawIdAdminField';\n const dragHoverClass = 'dz-drag-hover';\n const hiddenClass = 'hidden';\n const mobileClass = 'filer-dropzone-mobile';\n const objectAttachedClass = 'js-object-attached';\n const minWidth = 500;\n\n const checkMinWidth = (element) => {\n const width = element.offsetWidth;\n if (width < minWidth) {\n element.classList.add(mobileClass);\n } else {\n element.classList.remove(mobileClass);\n }\n };\n\n const showError = (message) => {\n try {\n window.parent.CMS.API.Messages.open({\n message: message\n });\n } catch {\n if (window.filerShowError) {\n window.filerShowError(message);\n } else {\n alert(message);\n }\n }\n };\n\n const createDropzone = function (dropzone) {\n const dropzoneUrl = dropzone.dataset.url;\n const inputId = dropzone.querySelector(fileIdInputSelector);\n const isImage = inputId?.getAttribute('name') === 'image';\n const lookupButton = dropzone.querySelector(lookupButtonSelector);\n const editButton = dropzone.querySelector(editButtonSelector);\n const message = dropzone.querySelector(messageSelector);\n const clearButton = dropzone.querySelector(filerClearerSelector);\n const fileChoose = dropzone.querySelector(fileChooseSelector);\n\n if (dropzone.dropzone) {\n return;\n }\n\n const resizeHandler = () => {\n checkMinWidth(dropzone);\n };\n window.addEventListener('resize', resizeHandler);\n\n new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(dropzone, {\n url: dropzoneUrl,\n paramName: 'file',\n maxFiles: 1,\n maxFilesize: dropzone.dataset.maxFilesize,\n previewTemplate: document.querySelector(dropzoneTemplate)?.innerHTML || '
    ',\n clickable: false,\n addRemoveLinks: false,\n init: function () {\n checkMinWidth(dropzone);\n\n this.on('removedfile', () => {\n if (fileChoose) {\n fileChoose.style.display = '';\n }\n dropzone.classList.remove(objectAttachedClass);\n this.removeAllFiles();\n clearButton?.click();\n });\n\n const images = this.element.querySelectorAll('img');\n images.forEach((img) => {\n img.addEventListener('dragstart', (event) => {\n event.preventDefault();\n });\n });\n\n if (clearButton) {\n clearButton.addEventListener('click', () => {\n dropzone.classList.remove(objectAttachedClass);\n // const changeEvent = new Event('change', { bubbles: true });\n // inputId?.dispatchEvent(changeEvent);\n });\n }\n },\n maxfilesexceeded: function () {\n this.removeAllFiles(true);\n },\n drop: function () {\n this.removeAllFiles(true);\n clearButton?.click();\n const progressEl = dropzone.querySelector(progressSelector);\n if (progressEl) {\n progressEl.classList.remove(hiddenClass);\n }\n if (fileChoose) {\n fileChoose.style.display = 'block';\n }\n lookupButton?.classList.add('related-lookup-change');\n editButton?.classList.add('related-lookup-change');\n message?.classList.add(hiddenClass);\n dropzone.classList.remove(dragHoverClass);\n dropzone.classList.add(objectAttachedClass);\n },\n success: function (file, response) {\n const progressEl = dropzone.querySelector(progressSelector);\n if (progressEl) {\n progressEl.classList.add(hiddenClass);\n }\n\n if (file && file.status === 'success' && response) {\n if (response.file_id && inputId) {\n inputId.value = response.file_id;\n const changeEvent = new Event('change', { bubbles: true });\n inputId.dispatchEvent(changeEvent);\n }\n if (response.thumbnail_180 && isImage) {\n const previewImg = dropzone.querySelector(previewImageSelector);\n if (previewImg) {\n previewImg.style.backgroundImage = `url(${response.thumbnail_180})`;\n }\n const wrapper = dropzone.querySelector(previewImageWrapperSelector);\n if (wrapper) {\n wrapper.classList.remove(hiddenClass);\n }\n }\n } else {\n if (response && response.error) {\n showError(`${file.name}: ${response.error}`);\n }\n this.removeAllFiles(true);\n }\n\n const images = this.element.querySelectorAll('img');\n images.forEach((img) => {\n img.addEventListener('dragstart', (event) => {\n event.preventDefault();\n });\n });\n },\n error: function (file, msg, response) {\n if (response && response.error) {\n msg += ` ; ${response.error}`;\n }\n showError(`${file.name}: ${msg}`);\n this.removeAllFiles(true);\n },\n reset: function () {\n if (isImage) {\n const wrapper = dropzone.querySelector(previewImageWrapperSelector);\n if (wrapper) {\n wrapper.classList.add(hiddenClass);\n }\n const previewImg = dropzone.querySelector(previewImageSelector);\n if (previewImg) {\n previewImg.style.backgroundImage = 'none';\n }\n }\n dropzone.classList.remove(objectAttachedClass);\n if (inputId) {\n inputId.value = '';\n }\n lookupButton?.classList.remove('related-lookup-change');\n editButton?.classList.remove('related-lookup-change');\n message?.classList.remove(hiddenClass);\n if (inputId) {\n const changeEvent = new Event('change', { bubbles: true });\n inputId.dispatchEvent(changeEvent);\n }\n }\n });\n };\n\n if (dropzones.length && (dropzone__WEBPACK_IMPORTED_MODULE_0___default())) {\n if (!window.filerDropzoneInitialized) {\n window.filerDropzoneInitialized = true;\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n }\n dropzones.forEach(createDropzone);\n\n // Handle initialization of the dropzone on dynamic formsets (i.e. Django admin inlines)\n document.addEventListener('formset:added', (event) => {\n let dropzones;\n let rowIdx;\n let row;\n\n if (event.detail && event.detail.formsetName) {\n /*\n Django 4.1 changed the event type being fired when adding\n a new formset from a jQuery to a vanilla JavaScript event.\n https://docs.djangoproject.com/en/4.1/ref/contrib/admin/javascript/\n\n In this case we find the newly added row and initialize the\n dropzone on any dropzoneSelector on that row.\n */\n\n rowIdx = parseInt(\n document.getElementById(\n `id_${event.detail.formsetName}-TOTAL_FORMS`\n ).value, 10\n ) - 1;\n row = document.getElementById(`${event.detail.formsetName}-${rowIdx}`);\n dropzones = row?.querySelectorAll(dropzoneSelector) || [];\n } else {\n // Fallback for older jQuery event format\n row = event.target;\n dropzones = row?.querySelectorAll(dropzoneSelector) || [];\n }\n\n dropzones?.forEach(createDropzone);\n });\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/dropzone.init.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/filer_popup_response.js" -/*!**************************************************************!*\ - !*** ./filer/static/filer/js/addons/filer_popup_response.js ***! - \**************************************************************/ -() { - -eval("{/*global opener */\n(function () {\n 'use strict';\n const dataElement = document.getElementById('django-admin-popup-response-constants');\n let initData;\n\n if (dataElement) {\n initData = JSON.parse(dataElement.dataset.popupResponse);\n switch (initData.action) {\n case 'change':\n // Specific function for file editing popup opened from widget\n opener.dismissRelatedImageLookupPopup(window, initData.new_value, null, initData.obj, null);\n break;\n case 'delete':\n opener.dismissDeleteRelatedObjectPopup(window, initData.value);\n break;\n default:\n opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj);\n break;\n }\n }\n})();\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/filer_popup_response.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/focal-point.js" -/*!*****************************************************!*\ - !*** ./filer/static/filer/js/addons/focal-point.js ***! - \*****************************************************/ -(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* module decorator */ module = __webpack_require__.hmd(module);\n// #FOCAL POINT#\n// This script implements the image focal point setting\n\n\nwindow.Cl = window.Cl || {};\n\n(() => {\n class FocalPoint {\n constructor(options = {}) {\n this.options = {\n containerSelector: '.js-focal-point',\n imageSelector: '.js-focal-point-image',\n circleSelector: '.js-focal-point-circle',\n locationSelector: '.js-focal-point-location',\n draggableClass: 'draggable',\n hiddenClass: 'hidden',\n dataLocation: 'locationSelector',\n ...options\n };\n this.focalPointInstances = [];\n this._init = this._init.bind(this);\n }\n\n _init(container) {\n const focalPointInstance = new FocalPointConstructor(container, this.options);\n this.focalPointInstances.push(focalPointInstance);\n }\n\n initialize() {\n const containers = document.querySelectorAll(this.options.containerSelector);\n containers.forEach((container) => {\n this._init(container);\n });\n\n if (window.Cl.mediator) {\n window.Cl.mediator.subscribe('focal-point:init', this._init);\n }\n }\n\n destroy() {\n if (window.Cl.mediator) {\n window.Cl.mediator.remove('focal-point:init', this._init);\n }\n\n this.focalPointInstances.forEach((focalPointInstance) => {\n focalPointInstance.destroy();\n });\n\n this.focalPointInstances = [];\n }\n }\n\n class FocalPointConstructor {\n constructor(container, options = {}) {\n this.options = {\n imageSelector: '.js-focal-point-image',\n circleSelector: '.js-focal-point-circle',\n locationSelector: '.js-focal-point-location',\n draggableClass: 'draggable',\n hiddenClass: 'hidden',\n dataLocation: 'locationSelector',\n ...options\n };\n\n this.container = container;\n this.image = this.container.querySelector(this.options.imageSelector);\n this.circle = this.container.querySelector(this.options.circleSelector);\n this.ratio = parseFloat(this.image?.dataset.ratio || 1);\n this.location = this._getLocation();\n this.isDragging = false;\n this.dragStartX = 0;\n this.dragStartY = 0;\n this.circleStartX = 0;\n this.circleStartY = 0;\n\n this._onImageLoaded = this._onImageLoaded.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n\n if (this.image?.complete) {\n this._onImageLoaded();\n } else if (this.image) {\n this.image.addEventListener('load', this._onImageLoaded);\n }\n }\n\n _updateLocationValue(x, y) {\n const locationValue = `${Math.round(x * this.ratio)},${Math.round(y * this.ratio)}`;\n if (this.location) {\n this.location.value = locationValue;\n }\n }\n\n _getLocation() {\n const locationSelector = this.container.dataset[this.options.dataLocation];\n if (locationSelector) {\n const newLocation = document.querySelector(locationSelector);\n if (newLocation) {\n return newLocation;\n }\n }\n return this.container.querySelector(this.options.locationSelector);\n }\n\n _makeDraggable() {\n if (!this.circle) {\n return;\n }\n\n this.circle.classList.add(this.options.draggableClass);\n this.circle.addEventListener('mousedown', this._onMouseDown);\n this.circle.addEventListener('touchstart', this._onMouseDown, { passive: false });\n }\n\n _onMouseDown(event) {\n event.preventDefault();\n this.isDragging = true;\n\n const touch = event.type === 'touchstart' ? event.touches[0] : event;\n\n // Get container bounds\n const containerRect = this.container.getBoundingClientRect();\n\n // Calculate mouse position relative to container\n this.dragStartX = touch.clientX - containerRect.left;\n this.dragStartY = touch.clientY - containerRect.top;\n\n // Get current circle position (center)\n const circleRect = this.circle.getBoundingClientRect();\n this.circleStartX = circleRect.left - containerRect.left + circleRect.width / 2;\n this.circleStartY = circleRect.top - containerRect.top + circleRect.height / 2;\n\n document.addEventListener('mousemove', this._onMouseMove);\n document.addEventListener('mouseup', this._onMouseUp);\n document.addEventListener('touchmove', this._onMouseMove, { passive: false });\n document.addEventListener('touchend', this._onMouseUp);\n }\n\n _onMouseMove(event) {\n if (!this.isDragging) {\n return;\n }\n\n event.preventDefault();\n\n const touch = event.type === 'touchmove' ? event.touches[0] : event;\n\n // Get container bounds\n const containerRect = this.container.getBoundingClientRect();\n\n // Calculate current mouse position relative to container\n const currentX = touch.clientX - containerRect.left;\n const currentY = touch.clientY - containerRect.top;\n\n // Calculate how much the mouse moved\n const deltaX = currentX - this.dragStartX;\n const deltaY = currentY - this.dragStartY;\n\n // Calculate new center position\n let centerX = this.circleStartX + deltaX;\n let centerY = this.circleStartY + deltaY;\n\n // Constrain center to container bounds\n centerX = Math.max(0, Math.min(containerRect.width - 1, centerX));\n centerY = Math.max(0, Math.min(containerRect.height - 1, centerY));\n\n // Position circle by its top-left corner (center - radius)\n this.circle.style.left = `${centerX}px`;\n this.circle.style.top = `${centerY}px`;\n\n // Update location value with center coordinates\n this._updateLocationValue(centerX, centerY);\n }\n\n _onMouseUp() {\n this.isDragging = false;\n document.removeEventListener('mousemove', this._onMouseMove);\n document.removeEventListener('mouseup', this._onMouseUp);\n document.removeEventListener('touchmove', this._onMouseMove);\n document.removeEventListener('touchend', this._onMouseUp);\n }\n\n _onImageLoaded() {\n if (!this.image || this.image.naturalWidth === 0) {\n return;\n }\n\n this.circle?.classList.remove(this.options.hiddenClass);\n\n const locationValue = this.location?.value || '';\n const imageWidth = this.image.offsetWidth;\n const imageHeight = this.image.offsetHeight;\n\n let x, y;\n\n if (locationValue.length) {\n const coords = locationValue.split(',');\n x = Math.round(Number(coords[0]) / this.ratio);\n y = Math.round(Number(coords[1]) / this.ratio);\n } else {\n x = imageWidth / 2;\n y = imageHeight / 2;\n }\n\n if (isNaN(x) || isNaN(y)) {\n return;\n }\n\n // Position circle (accounting for circle size)\n if (this.circle) {\n this.circle.style.left = `${x}px`;\n this.circle.style.top = `${y}px`;\n }\n\n this._makeDraggable();\n this._updateLocationValue(x, y);\n }\n\n destroy() {\n if (this.circle?.classList.contains(this.options.draggableClass)) {\n this.circle.removeEventListener('mousedown', this._onMouseDown);\n this.circle.removeEventListener('touchstart', this._onMouseDown);\n }\n\n document.removeEventListener('mousemove', this._onMouseMove);\n document.removeEventListener('mouseup', this._onMouseUp);\n document.removeEventListener('touchmove', this._onMouseMove);\n document.removeEventListener('touchend', this._onMouseUp);\n\n if (this.image) {\n this.image.removeEventListener('load', this._onImageLoaded);\n }\n\n this.options = null;\n this.container = null;\n this.image = null;\n this.circle = null;\n this.location = null;\n this.ratio = null;\n }\n }\n\n window.Cl.FocalPoint = FocalPoint;\n window.Cl.FocalPointConstructor = FocalPointConstructor;\n\n // Export for ES6 module usage\n if ( true && module.exports) {\n module.exports = FocalPoint;\n }\n})();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (window.Cl.FocalPoint);\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/focal-point.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/popup_handling.js" -/*!********************************************************!*\ - !*** ./filer/static/filer/js/addons/popup_handling.js ***! - \********************************************************/ -() { - -"use strict"; -eval("{\n\nconst windowname_to_id = (text) => {\n text = text.replace(/__dot__/g, '.');\n text = text.replace(/__dash__/g, '-');\n const last = text.lastIndexOf('__');\n return last === -1 ? text : text.substring(0, last);\n};\n\nwindow.dismissPopupAndReload = (win) => {\n document.location.reload();\n win.close();\n};\n\nwindow.dismissRelatedImageLookupPopup = (\n win,\n chosenId,\n chosenThumbnailUrl,\n chosenDescriptionTxt,\n chosenAdminChangeUrl\n) => {\n const id = windowname_to_id(win.name);\n const lookup = document.getElementById(id);\n if (!lookup) {\n return;\n }\n const container = lookup.closest('.filerFile');\n if (!container) {\n return;\n }\n const edit = container.querySelector('.edit');\n const image = container.querySelector('.thumbnail_img');\n const descriptionText = container.querySelector('.description_text');\n const clearer = container.querySelector('.filerClearer');\n const dropzoneMessage = container.parentElement.querySelector('.dz-message');\n const element = container.querySelector('input');\n const oldId = element.value;\n\n element.value = chosenId;\n const dropzone = element.closest('.js-filer-dropzone');\n if (dropzone) {\n dropzone.classList.add('js-object-attached');\n }\n if (chosenThumbnailUrl && image) {\n image.src = chosenThumbnailUrl;\n image.classList.remove('hidden');\n image.removeAttribute('srcset');\n }\n if (descriptionText) {\n descriptionText.textContent = chosenDescriptionTxt;\n }\n if (clearer) {\n clearer.classList.remove('hidden');\n }\n lookup.classList.add('related-lookup-change');\n if (edit) {\n edit.classList.add('related-lookup-change');\n }\n if (chosenAdminChangeUrl && edit) {\n edit.setAttribute('href', `${chosenAdminChangeUrl}?_edit_from_widget=1`);\n }\n if (dropzoneMessage) {\n dropzoneMessage.classList.add('hidden');\n }\n\n if (oldId !== chosenId) {\n element.dispatchEvent(new Event('change', { bubbles: true }));\n }\n win.close();\n};\nwindow.dismissRelatedFolderLookupPopup = (win, chosenId, chosenName) => {\n const id = windowname_to_id(win.name);\n const lookup = document.getElementById(id);\n if (!lookup) {\n return;\n }\n const container = lookup.closest('.filerFile');\n if (!container) {\n return;\n }\n const image = container.querySelector('.thumbnail_img');\n const clearButton = document.getElementById(`id_${id}_clear`);\n const input = document.getElementById(`id_${id}`);\n const folderName = container.querySelector('.description_text');\n const addFolderButton = document.getElementById(id);\n\n if (input) {\n input.value = chosenId;\n }\n if (image) {\n image.classList.remove('hidden');\n }\n if (folderName) {\n folderName.textContent = chosenName;\n }\n if (clearButton) {\n clearButton.classList.remove('hidden');\n }\n if (addFolderButton) {\n addFolderButton.classList.add('hidden');\n }\n win.close();\n};\n\n// Handle popup dismiss links (for folder/image selection in popups)\ndocument.addEventListener('DOMContentLoaded', () => {\n document.querySelectorAll('.js-dismiss-popup').forEach((link) => {\n link.addEventListener('click', function (e) {\n e.preventDefault();\n\n const fileId = this.dataset.fileId;\n const iconUrl = this.dataset.iconUrl;\n const label = this.dataset.label;\n\n if (this.classList.contains('js-dismiss-image')) {\n const changeUrl = this.dataset.changeUrl || '';\n window.opener.dismissRelatedImageLookupPopup(\n window,\n fileId,\n iconUrl,\n label,\n changeUrl\n );\n } else if (this.classList.contains('js-dismiss-folder')) {\n window.opener.dismissRelatedFolderLookupPopup(window, fileId, label);\n }\n });\n });\n\n // Auto-dismiss popup on page load (for dismiss_popup.html)\n const popupData = document.getElementById('popup-dismiss-data');\n if (popupData && window.opener) {\n const pk = popupData.dataset.pk;\n const label = popupData.dataset.label;\n window.opener.dismissRelatedPopup(window, pk, label);\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/popup_handling.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/table-dropzone.js" -/*!********************************************************!*\ - !*** ./filer/static/filer/js/addons/table-dropzone.js ***! - \********************************************************/ -(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__);\n// #DROPZONE#\n// This script implements the dropzone settings\n\n\n\n\n\n/* globals Cl */\ndocument.addEventListener('DOMContentLoaded', () => {\n let submitNum = 0;\n let maxSubmitNum = 0;\n const dropzoneInstances = [];\n const dropzoneBase = document.querySelector('.js-filer-dropzone-base');\n const dropzoneSelector = '.js-filer-dropzone';\n let dropzones;\n const infoMessageClass = 'js-filer-dropzone-info-message';\n const infoMessage = document.querySelector(`.${infoMessageClass}`);\n const folderName = document.querySelector('.js-filer-dropzone-folder-name');\n const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container');\n const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info');\n const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome');\n const uploadNumber = document.querySelector('.js-filer-dropzone-upload-number');\n const uploadCount = document.querySelector('.js-filer-upload-count');\n const uploadText = document.querySelector('.js-filer-upload-text');\n const uploadFileNameSelector = '.js-filer-dropzone-file-name';\n const uploadProgressSelector = '.js-filer-dropzone-progress';\n const uploadSuccess = document.querySelector('.js-filer-dropzone-upload-success');\n const uploadCanceled = document.querySelector('.js-filer-dropzone-upload-canceled');\n const cancelUpload = document.querySelector('.js-filer-dropzone-cancel');\n const dragHoverClass = 'dz-drag-hover';\n const dataUploaderConnections = 'max-uploader-connections';\n const dragHoverBorder = document.querySelector('.drag-hover-border');\n const hiddenClass = 'hidden';\n let hideMessageTimeout;\n let hasErrors = false;\n let baseUrl;\n let baseFolderTitle;\n\n // utility to update query string (same as upload-button)\n const updateQuery = (uri, key, value) => {\n const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');\n const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n const hash = window.location.hash;\n uri = uri.replace(/#.*$/, '');\n if (uri.match(re)) {\n return uri.replace(re, `$1${key}=${value}$2`) + hash;\n } else {\n return uri + separator + key + '=' + value + hash;\n }\n };\n\n const reloadOrdered = () => {\n const uri = window.location.toString();\n window.location.replace(updateQuery(uri, 'order_by', '-modified_at'));\n };\n\n const updateUploadNumber = () => {\n if (uploadNumber) {\n uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`;\n }\n if (uploadText) {\n uploadText.classList.remove('hidden');\n }\n if (uploadCount) {\n uploadCount.classList.remove('hidden');\n }\n };\n\n const destroyDropzones = () => {\n dropzoneInstances.forEach((instance) => {\n instance.destroy();\n });\n };\n\n const getElementByFile = (file, url) => {\n return document.getElementById(\n `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}${url}`\n );\n };\n\n if (dropzoneBase) {\n baseUrl = dropzoneBase.dataset.url;\n baseFolderTitle = dropzoneBase.dataset.folderName;\n\n const body = document.body;\n body.dataset.url = baseUrl;\n body.dataset.folderName = baseFolderTitle;\n body.dataset.maxFiles = dropzoneBase.dataset.maxFiles;\n body.dataset.maxFilesize = dropzoneBase.dataset.maxFiles;\n body.classList.add('js-filer-dropzone');\n console.log('[Filer DnD] dropzoneBase found, url:', baseUrl, 'folder:', baseFolderTitle);\n } else {\n console.log('[Filer DnD] No .js-filer-dropzone-base element found on page');\n }\n\n Cl.mediator.subscribe('filer-upload-in-progress', destroyDropzones);\n\n dropzones = document.querySelectorAll(dropzoneSelector);\n console.log('[Filer DnD] Found', dropzones.length, 'dropzone elements (.js-filer-dropzone)');\n\n if (dropzones.length && (dropzone__WEBPACK_IMPORTED_MODULE_0___default())) {\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n dropzones.forEach((dropzoneElement) => {\n if (dropzoneElement.dropzone) {\n console.log('[Filer DnD] Skipping element (already has dropzone):', dropzoneElement.tagName, dropzoneElement.className);\n return;\n }\n const dropzoneUrl = dropzoneElement.dataset.url;\n console.log('[Filer DnD] Creating Dropzone instance for', dropzoneElement.tagName,\n 'url:', dropzoneUrl, 'maxFiles:', dropzoneElement.dataset.maxFiles,\n 'maxFilesize:', dropzoneElement.dataset.maxFilesize);\n const dropzoneInstance = new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(dropzoneElement, {\n url: dropzoneUrl,\n paramName: 'file',\n maxFiles: parseInt(dropzoneElement.dataset.maxFiles) || 100,\n maxFilesize: parseInt(dropzoneElement.dataset.maxFilesize), // no default\n previewTemplate: '
    ',\n clickable: false,\n addRemoveLinks: false,\n parallelUploads: dropzoneElement.dataset[dataUploaderConnections] || 3,\n accept: (file, done) => {\n let uploadInfoClone;\n console.log('[Filer DnD] accept:', file.name, 'url:', dropzoneUrl);\n\n Cl.mediator.remove('filer-upload-in-progress', destroyDropzones);\n Cl.mediator.publish('filer-upload-in-progress');\n\n clearTimeout(hideMessageTimeout);\n clearTimeout(hideMessageTimeout);\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (cancelUpload) {\n cancelUpload.classList.remove(hiddenClass);\n }\n\n if (getElementByFile(file, dropzoneUrl)) {\n done('duplicate');\n } else {\n uploadInfoClone = uploadInfo.cloneNode(true);\n\n const fileNameEl = uploadInfoClone.querySelector(uploadFileNameSelector);\n if (fileNameEl) {\n fileNameEl.textContent = file.name;\n }\n const progressEl = uploadInfoClone.querySelector(uploadProgressSelector);\n if (progressEl) {\n progressEl.style.width = '0';\n }\n uploadInfoClone.setAttribute(\n 'id',\n `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}${dropzoneUrl}`\n );\n if (uploadInfoContainer) {\n uploadInfoContainer.appendChild(uploadInfoClone);\n }\n\n submitNum++;\n maxSubmitNum++;\n console.log('[Filer DnD] file accepted, submitNum:', submitNum, 'maxSubmitNum:', maxSubmitNum);\n updateUploadNumber();\n done();\n }\n\n dropzones.forEach((dz) => dz.classList.remove('reset-hover'));\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzones.forEach((dz) => dz.classList.remove(dragHoverClass));\n },\n dragover: (dragEvent) => {\n const target = dragEvent.target.closest(dropzoneSelector);\n const folderTitle = target?.dataset.folderName;\n const dropzoneFolder = dropzoneElement.classList.contains('js-filer-dropzone-folder');\n const dropzoneBoundingRect = dropzoneElement.getBoundingClientRect();\n const borderStyle = dragHoverBorder ? window.getComputedStyle(dragHoverBorder) : null;\n const topBorderSize = borderStyle ? borderStyle.borderTopWidth : '0px';\n const leftBorderSize = borderStyle ? borderStyle.borderLeftWidth : '0px';\n const dropzonePosition = {\n top: `${dropzoneBoundingRect.top}px`,\n bottom: `${dropzoneBoundingRect.bottom}px`,\n left: `${dropzoneBoundingRect.left}px`,\n right: `${dropzoneBoundingRect.right}px`,\n width: `${dropzoneBoundingRect.width - parseInt(leftBorderSize, 10) * 2}px`,\n height: `${dropzoneBoundingRect.height - parseInt(topBorderSize, 10) * 2}px`,\n display: 'block'\n };\n if (dropzoneFolder && dragHoverBorder) {\n Object.assign(dragHoverBorder.style, dropzonePosition);\n }\n\n dropzones.forEach((dz) => dz.classList.add('reset-hover'));\n if (uploadSuccess) {\n uploadSuccess.classList.add(hiddenClass);\n }\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzoneElement.classList.add(dragHoverClass);\n dropzoneElement.classList.remove('reset-hover');\n\n if (folderName && folderTitle) {\n folderName.textContent = folderTitle;\n }\n },\n dragend: () => {\n clearTimeout(hideMessageTimeout);\n hideMessageTimeout = setTimeout(() => {\n if (infoMessage) {\n infoMessage.classList.add(hiddenClass);\n }\n }, 1000);\n\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzones.forEach((dz) => dz.classList.remove(dragHoverClass));\n if (dragHoverBorder) {\n Object.assign(dragHoverBorder.style, { top: '0', bottom: '0', width: '0', height: '0' });\n }\n },\n dragleave: () => {\n clearTimeout(hideMessageTimeout);\n hideMessageTimeout = setTimeout(() => {\n if (infoMessage) {\n infoMessage.classList.add(hiddenClass);\n }\n }, 1000);\n\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n dropzones.forEach((dz) => dz.classList.remove(dragHoverClass));\n if (dragHoverBorder) {\n Object.assign(dragHoverBorder.style, { top: '0', bottom: '0', width: '0', height: '0' });\n }\n },\n sending: (file) => {\n console.log('[Filer DnD] sending:', file.name, 'to:', dropzoneUrl);\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n fileEl.classList.remove(hiddenClass);\n }\n },\n uploadprogress: (file, progress) => {\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n const progressEl = fileEl.querySelector(uploadProgressSelector);\n if (progressEl) {\n progressEl.style.width = `${progress}%`;\n }\n }\n },\n success: (file, response) => {\n submitNum--;\n console.log('[Filer DnD] success:', file.name, 'submitNum:', submitNum, 'response:', response);\n updateUploadNumber();\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n fileEl.remove();\n }\n },\n queuecomplete: () => {\n console.log('[Filer DnD] queuecomplete: submitNum:', submitNum, 'hasErrors:', hasErrors);\n if (submitNum !== 0) {\n console.warn('[Filer DnD] queuecomplete: submitNum is not 0, skipping reload');\n return;\n }\n\n updateUploadNumber();\n\n if (cancelUpload) {\n cancelUpload.classList.add(hiddenClass);\n }\n if (uploadInfo) {\n uploadInfo.classList.add(hiddenClass);\n }\n\n if (hasErrors) {\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n console.log('[Filer DnD] reloading after errors (1s delay)');\n setTimeout(() => {\n reloadOrdered();\n }, 1000);\n } else {\n if (uploadSuccess) {\n uploadSuccess.classList.remove(hiddenClass);\n }\n console.log('[Filer DnD] reloading now via reloadOrdered');\n reloadOrdered();\n }\n },\n error: (file, error) => {\n console.error('[Filer DnD] error:', file.name, 'error:', error, 'submitNum:', submitNum);\n if (error === 'duplicate') {\n // submitNum was never incremented for duplicates\n console.log('[Filer DnD] duplicate file, ignoring');\n return;\n }\n submitNum--;\n console.log('[Filer DnD] after error decrement, submitNum:', submitNum);\n updateUploadNumber();\n const fileEl = getElementByFile(file, dropzoneUrl);\n if (fileEl) {\n fileEl.remove();\n }\n hasErrors = true;\n if (window.filerShowError) {\n window.filerShowError(`${file.name}: ${error.message || error}`);\n }\n }\n });\n dropzoneInstances.push(dropzoneInstance);\n if (cancelUpload) {\n cancelUpload.addEventListener('click', (clickEvent) => {\n clickEvent.preventDefault();\n cancelUpload.classList.add(hiddenClass);\n if (uploadCanceled) {\n uploadCanceled.classList.remove(hiddenClass);\n }\n dropzoneInstance.removeAllFiles(true);\n });\n }\n });\n } else {\n console.warn('[Filer DnD] No dropzone instances created. dropzones.length:', dropzones.length, 'Dropzone:', !!(dropzone__WEBPACK_IMPORTED_MODULE_0___default()));\n }\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/table-dropzone.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/toggler.js" -/*!*************************************************!*\ - !*** ./filer/static/filer/js/addons/toggler.js ***! - \*************************************************/ -(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// #TOGGLER#\n// This script implements the simple element toggle\n\n\nwindow.Cl = window.Cl || {};\n\nclass Toggler {\n constructor(options = {}) {\n this.options = {\n linksSelector: '.js-toggler-link',\n dataHeaderSelector: 'toggler-header-selector',\n dataContentSelector: 'toggler-content-selector',\n collapsedClass: 'js-collapsed',\n expandedClass: 'js-expanded',\n hiddenClass: 'hidden',\n ...options\n };\n\n this.togglerInstances = [];\n\n const links = document.querySelectorAll(this.options.linksSelector);\n links.forEach(link => {\n const togglerInstance = new TogglerConstructor(link, this.options);\n this.togglerInstances.push(togglerInstance);\n });\n }\n\n destroy() {\n this.links = null;\n this.togglerInstances.forEach(togglerInstance => togglerInstance.destroy());\n this.togglerInstances = [];\n }\n}\n\nclass TogglerConstructor {\n constructor(link, options = {}) {\n this.options = { ...options };\n this.link = link;\n this.headerSelector = this.link.dataset[this.options.dataHeaderSelector];\n this.contentSelector = this.link.dataset[this.options.dataContentSelector];\n this.header = document.querySelector(this.headerSelector);\n this.header = this.header || this.link;\n this.content = document.querySelector(this.contentSelector);\n\n if (!this.content) {\n return;\n }\n\n this._initLink();\n }\n\n _updateClasses() {\n if (this.content.classList.contains(this.options.hiddenClass)) {\n this.header.classList.remove(this.options.expandedClass);\n this.header.classList.add(this.options.collapsedClass);\n } else {\n this.header.classList.add(this.options.expandedClass);\n this.header.classList.remove(this.options.collapsedClass);\n }\n }\n\n _onTogglerClick(clickEvent) {\n this.content.classList.toggle(this.options.hiddenClass);\n this._updateClasses();\n clickEvent.preventDefault();\n }\n\n _initLink() {\n this._updateClasses();\n this.link.addEventListener('click', e => this._onTogglerClick(e));\n }\n\n destroy() {\n this.options = null;\n this.link = null;\n }\n}\n\nCl.Toggler = Toggler;\nCl.TogglerConstructor = TogglerConstructor;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Toggler);\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/toggler.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/tooltip.js" -/*!*************************************************!*\ - !*** ./filer/static/filer/js/addons/tooltip.js ***! - \*************************************************/ -() { - -"use strict"; -eval("{\nwindow.Cl = window.Cl || {};\n\nCl.filerTooltip = () => {\n const tooltipSelector = '.js-filer-tooltip';\n const tooltips = document.querySelectorAll(tooltipSelector);\n\n tooltips.forEach((element) => {\n element.addEventListener('mouseover', function () {\n const title = this.getAttribute('title');\n if (!title) {\n return;\n }\n\n this.dataset.filerTooltip = title;\n this.removeAttribute('title');\n\n const tooltip = document.createElement('p');\n tooltip.className = 'filer-tooltip';\n tooltip.textContent = title;\n\n const container = document.querySelector(tooltipSelector);\n if (container) {\n container.appendChild(tooltip);\n }\n });\n\n element.addEventListener('mouseout', function () {\n const title = this.dataset.filerTooltip;\n if (title) {\n this.setAttribute('title', title);\n }\n\n const existingTooltips = document.querySelectorAll('.filer-tooltip');\n existingTooltips.forEach((t) => {\n t.remove();\n });\n });\n });\n};\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/tooltip.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/upload-button.js" -/*!*******************************************************!*\ - !*** ./filer/static/filer/js/addons/upload-button.js ***! - \*******************************************************/ -(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_0__);\n// #UPLOAD BUTTON#\n// This script implements the upload button logic\n\n\n\n\n/* globals Cl */\n\ndocument.addEventListener('DOMContentLoaded', () => {\n let submitNum = 0;\n let maxSubmitNum = 1;\n const uploadButton = document.querySelector('.js-upload-button');\n if (!uploadButton) {\n return;\n }\n\n const uploadButtonDisabled = document.querySelector('.js-upload-button-disabled');\n const uploadUrl = uploadButton.dataset.url;\n\n if (!uploadUrl) {\n return;\n }\n\n const uploadWelcome = document.querySelector('.js-filer-dropzone-upload-welcome');\n const uploadInfoContainer = document.querySelector('.js-filer-dropzone-upload-info-container');\n const uploadInfo = document.querySelector('.js-filer-dropzone-upload-info');\n const uploadNumber = document.querySelector('.js-filer-dropzone-upload-number');\n const uploadFileNameSelector = '.js-filer-dropzone-file-name';\n const uploadProgressSelector = '.js-filer-dropzone-progress';\n const uploadSuccess = document.querySelector('.js-filer-dropzone-upload-success');\n const uploadCanceled = document.querySelector('.js-filer-dropzone-upload-canceled');\n const uploadCancel = document.querySelector('.js-filer-dropzone-cancel');\n const infoMessage = document.querySelector('.js-filer-dropzone-info-message');\n const hiddenClass = 'hidden';\n const maxUploaderConnections = parseInt(uploadButton.dataset.maxUploaderConnections || 3, 10);\n const maxFilesize = parseInt(uploadButton.dataset.maxFilesize || 0, 10);\n let hasErrors = false;\n\n const updateUploadNumber = () => {\n if (uploadNumber) {\n uploadNumber.textContent = `${maxSubmitNum - submitNum}/${maxSubmitNum}`;\n }\n };\n\n const removeButton = () => {\n if (uploadButton) {\n uploadButton.remove();\n }\n };\n\n // utility\n const updateQuery = (uri, key, value) => {\n const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');\n const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n const hash = window.location.hash;\n uri = uri.replace(/#.*$/, '');\n if (uri.match(re)) {\n return uri.replace(re, `$1${key}=${value}$2`) + hash;\n } else {\n return uri + separator + key + '=' + value + hash;\n }\n };\n\n const reloadOrdered = () => {\n const uri = window.location.toString();\n window.location.replace(updateQuery(uri, 'order_by', '-modified_at'));\n };\n\n Cl.mediator.subscribe('filer-upload-in-progress', removeButton);\n\n // Prevent default navigation which can interfere with the file dialog\n uploadButton.addEventListener('click', (evt) => {\n evt.preventDefault();\n });\n\n // Initialize Dropzone on the upload button\n (dropzone__WEBPACK_IMPORTED_MODULE_0___default().autoDiscover) = false;\n\n let dropzone;\n try {\n dropzone = new (dropzone__WEBPACK_IMPORTED_MODULE_0___default())(uploadButton, {\n url: uploadUrl,\n paramName: 'file',\n maxFilesize: maxFilesize, // already in MB\n parallelUploads: maxUploaderConnections,\n clickable: uploadButton,\n previewTemplate: '
    ',\n addRemoveLinks: false,\n autoProcessQueue: true\n });\n } catch (e) {\n console.error('[Filer Upload] Failed to create Dropzone instance:', e);\n return;\n }\n\n dropzone.on('addedfile', (file) => {\n Cl.mediator.remove('filer-upload-in-progress', removeButton);\n Cl.mediator.publish('filer-upload-in-progress');\n submitNum++;\n\n maxSubmitNum = dropzone.files.length;\n\n if (infoMessage) {\n infoMessage.classList.remove(hiddenClass);\n }\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (uploadSuccess) {\n uploadSuccess.classList.add(hiddenClass);\n }\n if (uploadInfoContainer) {\n uploadInfoContainer.classList.remove(hiddenClass);\n }\n if (uploadCancel) {\n uploadCancel.classList.remove(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.add(hiddenClass);\n }\n\n updateUploadNumber();\n });\n\n dropzone.on('uploadprogress', (file, progress) => {\n const percent = Math.round(progress);\n const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`;\n const fileItem = document.getElementById(fileId);\n let uploadInfoClone;\n\n if (fileItem) {\n const progressBar = fileItem.querySelector(uploadProgressSelector);\n if (progressBar) {\n progressBar.style.width = `${percent}%`;\n }\n } else if (uploadInfo) {\n uploadInfoClone = uploadInfo.cloneNode(true);\n\n const fileNameEl = uploadInfoClone.querySelector(uploadFileNameSelector);\n if (fileNameEl) {\n fileNameEl.textContent = file.name;\n }\n const progressEl = uploadInfoClone.querySelector(uploadProgressSelector);\n if (progressEl) {\n progressEl.style.width = `${percent}%`;\n }\n uploadInfoClone.classList.remove(hiddenClass);\n uploadInfoClone.setAttribute('id', fileId);\n if (uploadInfoContainer) {\n uploadInfoContainer.appendChild(uploadInfoClone);\n }\n }\n });\n\n dropzone.on('success', (file, response) => {\n const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`;\n const fileEl = document.getElementById(fileId);\n if (fileEl) {\n fileEl.remove();\n }\n\n if (response.error) {\n hasErrors = true;\n window.filerShowError(`${file.name}: ${response.error}`);\n }\n\n submitNum--;\n updateUploadNumber();\n\n if (submitNum === 0) {\n maxSubmitNum = 1;\n\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.add(hiddenClass);\n }\n if (uploadCancel) {\n uploadCancel.classList.add(hiddenClass);\n }\n if (uploadSuccess) {\n uploadSuccess.classList.remove(hiddenClass);\n }\n\n if (hasErrors) {\n setTimeout(reloadOrdered, 1000);\n } else {\n reloadOrdered();\n }\n }\n });\n\n dropzone.on('error', (file, errorMessage) => {\n const fileId = `file-${encodeURIComponent(file.name)}${file.size}${file.lastModified}`;\n const fileEl = document.getElementById(fileId);\n if (fileEl) {\n fileEl.remove();\n }\n\n hasErrors = true;\n window.filerShowError(`${file.name}: ${errorMessage}`);\n\n submitNum--;\n updateUploadNumber();\n\n if (submitNum === 0) {\n maxSubmitNum = 1;\n\n if (uploadWelcome) {\n uploadWelcome.classList.add(hiddenClass);\n }\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.add(hiddenClass);\n }\n if (uploadCancel) {\n uploadCancel.classList.add(hiddenClass);\n }\n if (uploadSuccess) {\n uploadSuccess.classList.remove(hiddenClass);\n }\n\n setTimeout(reloadOrdered, 1000);\n }\n });\n\n if (uploadCancel) {\n uploadCancel.addEventListener('click', (clickEvent) => {\n clickEvent.preventDefault();\n uploadCancel.classList.add(hiddenClass);\n if (uploadNumber) {\n uploadNumber.classList.add(hiddenClass);\n }\n if (uploadInfoContainer) {\n uploadInfoContainer.classList.add(hiddenClass);\n }\n if (uploadCanceled) {\n uploadCanceled.classList.remove(hiddenClass);\n }\n\n setTimeout(() => {\n window.location.reload();\n }, 1000);\n });\n }\n\n if (uploadButtonDisabled && Cl.filerTooltip) {\n Cl.filerTooltip();\n }\n\n // Fire custom event after scripts have been executed\n document.dispatchEvent(new Event('filer-upload-scripts-executed'));\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/upload-button.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/addons/widget.js" -/*!************************************************!*\ - !*** ./filer/static/filer/js/addons/widget.js ***! - \************************************************/ -() { - -"use strict"; -eval("{\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const filer_clear = (ev) => {\n ev.preventDefault();\n\n const clearer = ev.currentTarget;\n const container = clearer.closest('.filerFile');\n if (!container) {\n return;\n }\n\n const input = container.querySelector('input');\n const thumbnail = container.querySelector('.thumbnail_img');\n const description = container.querySelector('.description_text');\n const addImageButton = container.querySelector('.lookup');\n const editImageButton = container.querySelector('.edit');\n const dropzoneMessage = container.parentElement.querySelector('.dz-message');\n const hiddenClass = 'hidden';\n\n clearer.classList.add(hiddenClass);\n if (input) {\n input.value = '';\n }\n if (thumbnail) {\n thumbnail.classList.add(hiddenClass);\n var thumbnailLink = thumbnail.parentElement;\n if (thumbnailLink.tagName === 'A') {\n thumbnailLink.removeAttribute('href');\n }\n }\n if (addImageButton) {\n addImageButton.classList.remove('related-lookup-change');\n }\n if (editImageButton) {\n editImageButton.classList.remove('related-lookup-change');\n }\n if (dropzoneMessage) {\n dropzoneMessage.classList.remove(hiddenClass);\n }\n if (description) {\n description.textContent = '';\n }\n };\n\n const foreignKeyFields = document.querySelectorAll('.filerFile .vForeignKeyRawIdAdminField');\n foreignKeyFields.forEach((field) => {\n field.setAttribute('type', 'hidden');\n });\n\n // Remove any existing handlers and add new ones\n const clearers = document.querySelectorAll('.filerFile .filerClearer');\n clearers.forEach((clearer) => {\n clearer.addEventListener('click', filer_clear);\n });\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/addons/widget.js?\n}"); - -/***/ }, - -/***/ "./filer/static/filer/js/base.js" -/*!***************************************!*\ - !*** ./filer/static/filer/js/base.js ***! - \***************************************/ -(__unused_webpack_module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mediator-js/lib/mediator */ \"./node_modules/mediator-js/lib/mediator.js\");\n/* harmony import */ var mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _addons_focal_point__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addons/focal-point */ \"./filer/static/filer/js/addons/focal-point.js\");\n/* harmony import */ var _addons_toggler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addons/toggler */ \"./filer/static/filer/js/addons/toggler.js\");\n/* harmony import */ var _addons_dropdown_menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./addons/dropdown-menu */ \"./filer/static/filer/js/addons/dropdown-menu.js\");\n/* harmony import */ var _addons_dropdown_menu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_addons_dropdown_menu__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _addons_upload_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addons/upload-button */ \"./filer/static/filer/js/addons/upload-button.js\");\n/* harmony import */ var _addons_dropzone_init__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./addons/dropzone.init */ \"./filer/static/filer/js/addons/dropzone.init.js\");\n/* harmony import */ var _addons_table_dropzone__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./addons/table-dropzone */ \"./filer/static/filer/js/addons/table-dropzone.js\");\n/* harmony import */ var _addons_copy_move_files__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./addons/copy-move-files */ \"./filer/static/filer/js/addons/copy-move-files.js\");\n/* harmony import */ var _addons_copy_move_files__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_addons_copy_move_files__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _addons_tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./addons/tooltip */ \"./filer/static/filer/js/addons/tooltip.js\");\n/* harmony import */ var _addons_tooltip__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_addons_tooltip__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _addons_widget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./addons/widget */ \"./filer/static/filer/js/addons/widget.js\");\n/* harmony import */ var _addons_widget__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_addons_widget__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _addons_popup_handling__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./addons/popup_handling */ \"./filer/static/filer/js/addons/popup_handling.js\");\n/* harmony import */ var _addons_popup_handling__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_addons_popup_handling__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _addons_filer_popup_response__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./addons/filer_popup_response */ \"./filer/static/filer/js/addons/filer_popup_response.js\");\n/* harmony import */ var _addons_filer_popup_response__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_addons_filer_popup_response__WEBPACK_IMPORTED_MODULE_11__);\n// #####################################################################################################################\n// #BASE#\n// Basic logic django filer\n\n\n\n\n\n\n// Import self-initializing addons so they are included in the bundle\n\n\n\n\n\n\n\n\n\n\nwindow.Cl = window.Cl || {};\nCl.mediator = new (mediator_js_lib_mediator__WEBPACK_IMPORTED_MODULE_0___default())(); // mediator init\nCl.FocalPoint = _addons_focal_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nCl.Toggler = _addons_toggler__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n let showErrorTimeout;\n\n window.filerShowError = (message) => {\n const messages = document.querySelector('.messagelist');\n const header = document.querySelector('#header');\n const filerErrorClass = 'js-filer-error';\n const tpl = `
    • {msg}
    `;\n const msg = tpl.replace('{msg}', message);\n\n if (messages) {\n messages.outerHTML = msg;\n } else if (header) {\n header.insertAdjacentHTML('afterend', msg);\n }\n\n if (showErrorTimeout) {\n clearTimeout(showErrorTimeout);\n }\n\n showErrorTimeout = setTimeout(() => {\n const errorEl = document.querySelector(`.${filerErrorClass}`);\n if (errorEl) {\n errorEl.remove();\n }\n }, 5000);\n };\n\n const filterFiles = document.querySelector('.js-filter-files');\n if (filterFiles) {\n\n filterFiles.addEventListener('focus', (event) => {\n const container = event.target.closest('.navigator-top-nav');\n if (container) {\n container.classList.add('search-is-focused');\n }\n });\n\n filterFiles.addEventListener('blur', (event) => {\n const container = event.target.closest('.navigator-top-nav');\n if (container) {\n const dropdownTrigger = container.querySelector('.dropdown-container a');\n if (!dropdownTrigger || event.relatedTarget !== dropdownTrigger) {\n container.classList.remove('search-is-focused');\n }\n }\n });\n }\n\n // Search form submission logging\n const searchForm = document.querySelector('.js-filter-files-container');\n if (searchForm) {\n searchForm.addEventListener('submit', (event) => {\n // form submit handling\n });\n }\n\n // Focus on the search field on page load\n (() => {\n const filter = document.querySelector('.js-filter-files');\n const containerSelector = '.navigator-top-nav';\n const container = document.querySelector(containerSelector);\n const searchDropdown = container?.querySelector('.filter-search-wrapper .filer-dropdown-container');\n\n if (filter) {\n filter.addEventListener('keydown', function (event) {\n if (event.key === 'Enter') {\n // Enter key pressed\n }\n const navContainer = this.closest(containerSelector);\n if (navContainer) {\n navContainer.classList.add('search-is-focused');\n }\n });\n\n if (searchDropdown) {\n searchDropdown.addEventListener('show.bs.filer-dropdown', () => {\n if (container) {\n container.classList.add('search-is-focused');\n }\n });\n searchDropdown.addEventListener('hide.bs.filer-dropdown', () => {\n if (container) {\n container.classList.remove('search-is-focused');\n }\n });\n }\n }\n })();\n\n // show counter if file is selected\n (() => {\n const navigatorTable = document.querySelectorAll('.navigator-table tr, .navigator-list .list-item');\n const actionList = document.querySelector('.actions-wrapper');\n const actionSelect = document.querySelectorAll(\n '.action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a'\n );\n\n // timeout is needed to wait until table row has class selected.\n setTimeout(() => {\n // Set classes for checked items\n actionSelect.forEach((el) => {\n if (el.checked) {\n const listItem = el.closest('.list-item');\n if (listItem) {\n listItem.classList.add('selected');\n }\n }\n });\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (hasSelected && actionList) {\n actionList.classList.add('action-selected');\n }\n }, 100);\n\n actionSelect.forEach((el) => {\n el.addEventListener('change', function () {\n // Mark element selected (for table view this is done by Django admin js - we do it ourselves\n const listItem = this.closest('.list-item');\n if (listItem) {\n if (this.checked) {\n listItem.classList.add('selected');\n } else {\n listItem.classList.remove('selected');\n }\n }\n // setTimeout makes sure that change event fires before click event which is reliable to admin\n setTimeout(() => {\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (actionList) {\n if (hasSelected) {\n actionList.classList.add('action-selected');\n } else {\n actionList.classList.remove('action-selected');\n }\n }\n }, 0);\n });\n });\n })();\n\n (() => {\n const actionsMenu = document.querySelector('.js-actions-menu');\n if (!actionsMenu) {\n return;\n }\n\n const dropdown = actionsMenu.querySelector('.filer-dropdown-menu');\n const actionsSelect = document.querySelector('.actions select[name=\"action\"]');\n const actionsSelectOptions = actionsSelect?.querySelectorAll('option') || [];\n const actionsGo = document.querySelector('.actions button[type=\"submit\"]');\n const actionDelete = document.querySelector('.js-action-delete');\n const actionCopy = document.querySelector('.js-action-copy');\n const actionMove = document.querySelector('.js-action-move');\n const valueDelete = 'delete_files_or_folders';\n const valueCopy = 'copy_files_and_folders';\n const valueMove = 'move_files_and_folders';\n const navigatorTable = document.querySelectorAll('.navigator-table tr, .navigator-list .list-item');\n\n // triggers delete copy and move actions on separate buttons\n const actionsButton = (optionValue, actionButton) => {\n if (!actionButton) {\n return;\n }\n actionsSelectOptions.forEach((option) => {\n if (option.value === optionValue) {\n actionButton.style.display = '';\n actionButton.addEventListener('click', (e) => {\n e.preventDefault();\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (hasSelected && actionsSelect && actionsGo) {\n actionsSelect.value = optionValue;\n const targetOption = actionsSelect.querySelector(`option[value=\"${optionValue}\"]`);\n if (targetOption) {\n targetOption.selected = true;\n }\n actionsGo.click();\n }\n });\n }\n });\n };\n actionsButton(valueDelete, actionDelete);\n actionsButton(valueCopy, actionCopy);\n actionsButton(valueMove, actionMove);\n\n // mocking the action buttons to work in frontend UI\n actionsSelectOptions.forEach((option, index) => {\n if (index !== 0) {\n const li = document.createElement('li');\n const a = document.createElement('a');\n a.href = '#';\n a.textContent = option.textContent;\n\n if (option.value === valueDelete || option.value === valueCopy || option.value === valueMove) {\n a.classList.add('hidden');\n }\n\n li.appendChild(a);\n if (dropdown) {\n dropdown.appendChild(li);\n }\n }\n });\n if (dropdown) {\n\n dropdown.addEventListener('click', (clickEvent) => {\n if (clickEvent.target.tagName === 'A') {\n const li = clickEvent.target.closest('li');\n const targetIndex = Array.from(dropdown.querySelectorAll('li')).indexOf(li) + 1;\n\n clickEvent.preventDefault();\n\n if (actionsSelect && actionsGo) {\n const options = actionsSelect.querySelectorAll('option');\n if (options[targetIndex]) {\n actionsSelect.value = options[targetIndex].value;\n options[targetIndex].selected = true;\n }\n actionsGo.click();\n }\n }\n });\n }\n\n actionsMenu.addEventListener('click', (e) => {\n const hasSelected = Array.from(navigatorTable).some((el) =>\n el.classList.contains('selected')\n );\n if (!hasSelected) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n })();\n\n // breaks header if breadcrumbs name reaches a width of 80px\n (() => {\n const minBreadcrumbWidth = 80;\n const header = document.querySelector('.navigator-top-nav');\n\n if (!header) {\n return;\n }\n\n const breadcrumbContainer = document.querySelector('.breadcrumbs-container');\n if (!breadcrumbContainer) {\n return;\n }\n\n const breadcrumbFolder = breadcrumbContainer.querySelector('.navigator-breadcrumbs');\n const breadcrumbDropdown = breadcrumbContainer.querySelector('.filer-dropdown-container');\n const filterFilesContainer = document.querySelector('.filter-files-container');\n const actionsWrapper = document.querySelector('.actions-wrapper');\n const navigatorButtonWrapper = document.querySelector('.navigator-button-wrapper');\n\n const breadcrumbFolderWidth = breadcrumbFolder?.offsetWidth || 0;\n const breadcrumbDropdownWidth = breadcrumbDropdown?.offsetWidth || 0;\n const searchWidth = filterFilesContainer?.offsetWidth || 0;\n const actionsWidth = actionsWrapper?.offsetWidth || 0;\n const buttonsWidth = navigatorButtonWrapper?.offsetWidth || 0;\n\n const headerStyles = window.getComputedStyle(header);\n const headerPadding = parseInt(headerStyles.paddingLeft, 10) + parseInt(headerStyles.paddingRight, 10);\n\n let headerWidth = header.offsetWidth;\n const fullHeaderWidth = minBreadcrumbWidth + breadcrumbFolderWidth +\n breadcrumbDropdownWidth + searchWidth + actionsWidth + buttonsWidth + headerPadding;\n\n const breadcrumbSizeHandlerClassName = 'breadcrumb-min-width';\n\n const breadcrumbSizeHandler = () => {\n if (headerWidth < fullHeaderWidth) {\n header.classList.add(breadcrumbSizeHandlerClassName);\n } else {\n header.classList.remove(breadcrumbSizeHandlerClassName);\n }\n };\n\n breadcrumbSizeHandler();\n\n window.addEventListener('resize', () => {\n headerWidth = header.offsetWidth;\n breadcrumbSizeHandler();\n });\n })();\n // thumbnail folder admin view\n (() => {\n const actionEls = document.querySelectorAll('.navigator-list .list-item input.action-select');\n const foldersActionCheckboxes = '.navigator-list .navigator-folders-body .list-item input.action-select';\n const filesActionCheckboxes = '.navigator-list .navigator-files-body .list-item input.action-select';\n const allFilesToggle = document.querySelector('#files-action-toggle');\n const allFoldersToggle = document.querySelector('#folders-action-toggle');\n\n if (allFoldersToggle) {\n allFoldersToggle.addEventListener('click', function () {\n const checkboxes = document.querySelectorAll(foldersActionCheckboxes);\n if (this.checked) {\n checkboxes.forEach((cb) => {\n if (!cb.checked) {\n cb.click();\n }\n });\n } else {\n checkboxes.forEach((cb) => {\n if (cb.checked) {\n cb.click();\n }\n });\n }\n });\n }\n\n if (allFilesToggle) {\n allFilesToggle.addEventListener('click', function () {\n const checkboxes = document.querySelectorAll(filesActionCheckboxes);\n if (this.checked) {\n checkboxes.forEach((cb) => {\n if (!cb.checked) {\n cb.click();\n }\n });\n } else {\n checkboxes.forEach((cb) => {\n if (cb.checked) {\n cb.click();\n }\n });\n }\n });\n }\n\n actionEls.forEach((el) => {\n el.addEventListener('click', function () {\n const filesCheckboxes = document.querySelectorAll(filesActionCheckboxes);\n const foldersCheckboxes = document.querySelectorAll(foldersActionCheckboxes);\n\n if (!this.checked) {\n const hasUncheckedFiles = Array.from(filesCheckboxes).some((cb) => !cb.checked);\n const hasUncheckedFolders = Array.from(foldersCheckboxes).some((cb) => !cb.checked);\n\n if (hasUncheckedFiles && allFilesToggle) {\n allFilesToggle.checked = false;\n }\n if (hasUncheckedFolders && allFoldersToggle) {\n allFoldersToggle.checked = false;\n }\n } else {\n const allFilesChecked = Array.from(filesCheckboxes).every((cb) => cb.checked);\n const allFoldersChecked = Array.from(foldersCheckboxes).every((cb) => cb.checked);\n\n if (allFilesChecked && allFilesToggle) {\n allFilesToggle.checked = true;\n }\n if (allFoldersChecked && allFoldersToggle) {\n allFoldersToggle.checked = true;\n }\n }\n });\n });\n\n const clearLink = document.querySelector('.navigator .actions .clear a');\n if (clearLink) {\n clearLink.addEventListener('click', () => {\n if (allFoldersToggle) {\n allFoldersToggle.checked = false;\n }\n if (allFilesToggle) {\n allFilesToggle.checked = false;\n }\n });\n }\n })();\n\n const copyUrlButtons = document.querySelectorAll('.js-copy-url');\n copyUrlButtons.forEach((button) => {\n button.addEventListener('click', function (e) {\n const url = new URL(this.dataset.url, document.location.href);\n const msg = this.dataset.msg || 'URL copied to clipboard';\n const infobox = document.createElement('template');\n e.preventDefault();\n\n const existingTooltips = document.querySelectorAll('.info.filer-tooltip');\n existingTooltips.forEach((el) => {\n el.remove();\n });\n\n navigator.clipboard.writeText(url.href);\n infobox.innerHTML = `
    ${msg}
    `;\n this.classList.add('filer-tooltip-wrapper');\n this.appendChild(infobox.content.firstChild);\n\n const self = this;\n setTimeout(() => {\n const tooltip = self.querySelector('.info');\n if (tooltip) {\n tooltip.remove();\n }\n }, 1200);\n });\n });\n\n // Initialize FocalPoint\n const focalPoint = new _addons_focal_point__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n focalPoint.initialize();\n\n // Initialize Toggler (auto-initializes in constructor)\n new _addons_toggler__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n});\n\n\n//# sourceURL=webpack://django-filer/./filer/static/filer/js/base.js?\n}"); - -/***/ }, - -/***/ "./node_modules/dropzone/dist/dropzone.js" -/*!************************************************!*\ - !*** ./node_modules/dropzone/dist/dropzone.js ***! - \************************************************/ -(module) { - -eval("{(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse // removed by dead control flow\n{ var i, a; }\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 3099:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 6077:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_703__) {\n\nvar isObject = __nested_webpack_require_703__(111);\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 1223:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1001__) {\n\nvar wellKnownSymbol = __nested_webpack_require_1001__(5112);\nvar create = __nested_webpack_require_1001__(30);\nvar definePropertyModule = __nested_webpack_require_1001__(3070);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ 1530:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_1715__) {\n\n\"use strict\";\n\nvar charAt = __nested_webpack_require_1715__(8710).charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ 5787:\n/***/ (function(module) {\n\nmodule.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 9670:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2317__) {\n\nvar isObject = __nested_webpack_require_2317__(111);\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 4019:\n/***/ (function(module) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_2726__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __nested_webpack_require_2726__(4019);\nvar DESCRIPTORS = __nested_webpack_require_2726__(9781);\nvar global = __nested_webpack_require_2726__(7854);\nvar isObject = __nested_webpack_require_2726__(111);\nvar has = __nested_webpack_require_2726__(6656);\nvar classof = __nested_webpack_require_2726__(648);\nvar createNonEnumerableProperty = __nested_webpack_require_2726__(8880);\nvar redefine = __nested_webpack_require_2726__(1320);\nvar defineProperty = __nested_webpack_require_2726__(3070).f;\nvar getPrototypeOf = __nested_webpack_require_2726__(9518);\nvar setPrototypeOf = __nested_webpack_require_2726__(7674);\nvar wellKnownSymbol = __nested_webpack_require_2726__(5112);\nvar uid = __nested_webpack_require_2726__(9711);\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 3331:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_8934__) {\n\n\"use strict\";\n\nvar global = __nested_webpack_require_8934__(7854);\nvar DESCRIPTORS = __nested_webpack_require_8934__(9781);\nvar NATIVE_ARRAY_BUFFER = __nested_webpack_require_8934__(4019);\nvar createNonEnumerableProperty = __nested_webpack_require_8934__(8880);\nvar redefineAll = __nested_webpack_require_8934__(2248);\nvar fails = __nested_webpack_require_8934__(7293);\nvar anInstance = __nested_webpack_require_8934__(5787);\nvar toInteger = __nested_webpack_require_8934__(9958);\nvar toLength = __nested_webpack_require_8934__(7466);\nvar toIndex = __nested_webpack_require_8934__(7067);\nvar IEEE754 = __nested_webpack_require_8934__(1179);\nvar getPrototypeOf = __nested_webpack_require_8934__(9518);\nvar setPrototypeOf = __nested_webpack_require_8934__(7674);\nvar getOwnPropertyNames = __nested_webpack_require_8934__(8006).f;\nvar defineProperty = __nested_webpack_require_8934__(3070).f;\nvar arrayFill = __nested_webpack_require_8934__(1285);\nvar setToStringTag = __nested_webpack_require_8934__(8003);\nvar InternalStateModule = __nested_webpack_require_8934__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n\n/***/ }),\n\n/***/ 1048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_17881__) {\n\n\"use strict\";\n\nvar toObject = __nested_webpack_require_17881__(7908);\nvar toAbsoluteIndex = __nested_webpack_require_17881__(1400);\nvar toLength = __nested_webpack_require_17881__(7466);\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 1285:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_18911__) {\n\n\"use strict\";\n\nvar toObject = __nested_webpack_require_18911__(7908);\nvar toAbsoluteIndex = __nested_webpack_require_18911__(1400);\nvar toLength = __nested_webpack_require_18911__(7466);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 8533:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_19717__) {\n\n\"use strict\";\n\nvar $forEach = __nested_webpack_require_19717__(2092).forEach;\nvar arrayMethodIsStrict = __nested_webpack_require_19717__(9341);\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ 8457:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_20278__) {\n\n\"use strict\";\n\nvar bind = __nested_webpack_require_20278__(9974);\nvar toObject = __nested_webpack_require_20278__(7908);\nvar callWithSafeIterationClosing = __nested_webpack_require_20278__(3411);\nvar isArrayIteratorMethod = __nested_webpack_require_20278__(7659);\nvar toLength = __nested_webpack_require_20278__(7466);\nvar createProperty = __nested_webpack_require_20278__(6135);\nvar getIteratorMethod = __nested_webpack_require_20278__(1246);\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1318:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_22092__) {\n\nvar toIndexedObject = __nested_webpack_require_22092__(5656);\nvar toLength = __nested_webpack_require_22092__(7466);\nvar toAbsoluteIndex = __nested_webpack_require_22092__(1400);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 2092:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_23446__) {\n\nvar bind = __nested_webpack_require_23446__(9974);\nvar IndexedObject = __nested_webpack_require_23446__(8361);\nvar toObject = __nested_webpack_require_23446__(7908);\nvar toLength = __nested_webpack_require_23446__(7466);\nvar arraySpeciesCreate = __nested_webpack_require_23446__(5417);\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n\n\n/***/ }),\n\n/***/ 6583:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_26271__) {\n\n\"use strict\";\n\nvar toIndexedObject = __nested_webpack_require_26271__(5656);\nvar toInteger = __nested_webpack_require_26271__(9958);\nvar toLength = __nested_webpack_require_26271__(7466);\nvar arrayMethodIsStrict = __nested_webpack_require_26271__(9341);\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n\n\n/***/ }),\n\n/***/ 1194:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_27452__) {\n\nvar fails = __nested_webpack_require_27452__(7293);\nvar wellKnownSymbol = __nested_webpack_require_27452__(5112);\nvar V8_VERSION = __nested_webpack_require_27452__(7392);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n\n/***/ 9341:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_28188__) {\n\n\"use strict\";\n\nvar fails = __nested_webpack_require_28188__(7293);\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n\n\n/***/ }),\n\n/***/ 3671:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_28629__) {\n\nvar aFunction = __nested_webpack_require_28629__(3099);\nvar toObject = __nested_webpack_require_28629__(7908);\nvar IndexedObject = __nested_webpack_require_28629__(8361);\nvar toLength = __nested_webpack_require_28629__(7466);\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 5417:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_30017__) {\n\nvar isObject = __nested_webpack_require_30017__(111);\nvar isArray = __nested_webpack_require_30017__(3157);\nvar wellKnownSymbol = __nested_webpack_require_30017__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ 3411:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_30798__) {\n\nvar anObject = __nested_webpack_require_30798__(9670);\nvar iteratorClose = __nested_webpack_require_30798__(9212);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ 7072:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_31303__) {\n\nvar wellKnownSymbol = __nested_webpack_require_31303__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ 4326:\n/***/ (function(module) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ 648:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_32503__) {\n\nvar TO_STRING_TAG_SUPPORT = __nested_webpack_require_32503__(1694);\nvar classofRaw = __nested_webpack_require_32503__(4326);\nvar wellKnownSymbol = __nested_webpack_require_32503__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 9920:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_33565__) {\n\nvar has = __nested_webpack_require_33565__(6656);\nvar ownKeys = __nested_webpack_require_33565__(3887);\nvar getOwnPropertyDescriptorModule = __nested_webpack_require_33565__(1236);\nvar definePropertyModule = __nested_webpack_require_33565__(3070);\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ 8544:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_34217__) {\n\nvar fails = __nested_webpack_require_34217__(7293);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 4994:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_34520__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __nested_webpack_require_34520__(3383).IteratorPrototype;\nvar create = __nested_webpack_require_34520__(30);\nvar createPropertyDescriptor = __nested_webpack_require_34520__(9114);\nvar setToStringTag = __nested_webpack_require_34520__(8003);\nvar Iterators = __nested_webpack_require_34520__(7497);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ 8880:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_35290__) {\n\nvar DESCRIPTORS = __nested_webpack_require_35290__(9781);\nvar definePropertyModule = __nested_webpack_require_35290__(3070);\nvar createPropertyDescriptor = __nested_webpack_require_35290__(9114);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 9114:\n/***/ (function(module) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 6135:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_35996__) {\n\n\"use strict\";\n\nvar toPrimitive = __nested_webpack_require_35996__(7593);\nvar definePropertyModule = __nested_webpack_require_35996__(3070);\nvar createPropertyDescriptor = __nested_webpack_require_35996__(9114);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ 654:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_36503__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_36503__(2109);\nvar createIteratorConstructor = __nested_webpack_require_36503__(4994);\nvar getPrototypeOf = __nested_webpack_require_36503__(9518);\nvar setPrototypeOf = __nested_webpack_require_36503__(7674);\nvar setToStringTag = __nested_webpack_require_36503__(8003);\nvar createNonEnumerableProperty = __nested_webpack_require_36503__(8880);\nvar redefine = __nested_webpack_require_36503__(1320);\nvar wellKnownSymbol = __nested_webpack_require_36503__(5112);\nvar IS_PURE = __nested_webpack_require_36503__(1913);\nvar Iterators = __nested_webpack_require_36503__(7497);\nvar IteratorsCore = __nested_webpack_require_36503__(3383);\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ 9781:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_40475__) {\n\nvar fails = __nested_webpack_require_40475__(7293);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_40795__) {\n\nvar global = __nested_webpack_require_40795__(7854);\nvar isObject = __nested_webpack_require_40795__(111);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 8324:\n/***/ (function(module) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ 8113:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_42025__) {\n\nvar getBuiltIn = __nested_webpack_require_42025__(5005);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ 7392:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_42230__) {\n\nvar global = __nested_webpack_require_42230__(7854);\nvar userAgent = __nested_webpack_require_42230__(8113);\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ 748:\n/***/ (function(module) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 2109:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_43065__) {\n\nvar global = __nested_webpack_require_43065__(7854);\nvar getOwnPropertyDescriptor = __nested_webpack_require_43065__(1236).f;\nvar createNonEnumerableProperty = __nested_webpack_require_43065__(8880);\nvar redefine = __nested_webpack_require_43065__(1320);\nvar setGlobal = __nested_webpack_require_43065__(3505);\nvar copyConstructorProperties = __nested_webpack_require_43065__(9920);\nvar isForced = __nested_webpack_require_43065__(4705);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 7293:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 7007:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_45726__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__nested_webpack_require_45726__(4916);\nvar redefine = __nested_webpack_require_45726__(1320);\nvar fails = __nested_webpack_require_45726__(7293);\nvar wellKnownSymbol = __nested_webpack_require_45726__(5112);\nvar regexpExec = __nested_webpack_require_45726__(2261);\nvar createNonEnumerableProperty = __nested_webpack_require_45726__(8880);\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$
    ') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ 9974:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_50488__) {\n\nvar aFunction = __nested_webpack_require_50488__(3099);\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 5005:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_51177__) {\n\nvar path = __nested_webpack_require_51177__(857);\nvar global = __nested_webpack_require_51177__(7854);\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 1246:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_51701__) {\n\nvar classof = __nested_webpack_require_51701__(648);\nvar Iterators = __nested_webpack_require_51701__(7497);\nvar wellKnownSymbol = __nested_webpack_require_51701__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 8554:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_52112__) {\n\nvar anObject = __nested_webpack_require_52112__(9670);\nvar getIteratorMethod = __nested_webpack_require_52112__(1246);\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n\n\n/***/ }),\n\n/***/ 647:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_52531__) {\n\nvar toObject = __nested_webpack_require_52531__(7908);\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n\n\n/***/ }),\n\n/***/ 7854:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_53970__) {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n /* global globalThis -- safe */\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof __nested_webpack_require_53970__.g == 'object' && __nested_webpack_require_53970__.g) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 6656:\n/***/ (function(module) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ 3501:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 490:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_54852__) {\n\nvar getBuiltIn = __nested_webpack_require_54852__(5005);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 4664:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_55056__) {\n\nvar DESCRIPTORS = __nested_webpack_require_55056__(9781);\nvar fails = __nested_webpack_require_55056__(7293);\nvar createElement = __nested_webpack_require_55056__(317);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 1179:\n/***/ (function(module) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n/***/ }),\n\n/***/ 8361:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_58329__) {\n\nvar fails = __nested_webpack_require_58329__(7293);\nvar classof = __nested_webpack_require_58329__(4326);\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ 9587:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_58925__) {\n\nvar isObject = __nested_webpack_require_58925__(111);\nvar setPrototypeOf = __nested_webpack_require_58925__(7674);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 2788:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_59686__) {\n\nvar store = __nested_webpack_require_59686__(5465);\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 9909:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_60112__) {\n\nvar NATIVE_WEAK_MAP = __nested_webpack_require_60112__(8536);\nvar global = __nested_webpack_require_60112__(7854);\nvar isObject = __nested_webpack_require_60112__(111);\nvar createNonEnumerableProperty = __nested_webpack_require_60112__(8880);\nvar objectHas = __nested_webpack_require_60112__(6656);\nvar shared = __nested_webpack_require_60112__(5465);\nvar sharedKey = __nested_webpack_require_60112__(6200);\nvar hiddenKeys = __nested_webpack_require_60112__(3501);\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 7659:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_61804__) {\n\nvar wellKnownSymbol = __nested_webpack_require_61804__(5112);\nvar Iterators = __nested_webpack_require_61804__(7497);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 3157:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62240__) {\n\nvar classof = __nested_webpack_require_62240__(4326);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4705:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_62548__) {\n\nvar fails = __nested_webpack_require_62548__(7293);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 111:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ 1913:\n/***/ (function(module) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 7850:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_63453__) {\n\nvar isObject = __nested_webpack_require_63453__(111);\nvar classof = __nested_webpack_require_63453__(4326);\nvar wellKnownSymbol = __nested_webpack_require_63453__(5112);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 9212:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_63953__) {\n\nvar anObject = __nested_webpack_require_63953__(9670);\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n\n\n/***/ }),\n\n/***/ 3383:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_64274__) {\n\n\"use strict\";\n\nvar fails = __nested_webpack_require_64274__(7293);\nvar getPrototypeOf = __nested_webpack_require_64274__(9518);\nvar createNonEnumerableProperty = __nested_webpack_require_64274__(8880);\nvar has = __nested_webpack_require_64274__(6656);\nvar wellKnownSymbol = __nested_webpack_require_64274__(5112);\nvar IS_PURE = __nested_webpack_require_64274__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7497:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 133:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_65970__) {\n\nvar fails = __nested_webpack_require_65970__(7293);\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n /* global Symbol -- required for testing */\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ 590:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_66314__) {\n\nvar fails = __nested_webpack_require_66314__(7293);\nvar wellKnownSymbol = __nested_webpack_require_66314__(5112);\nvar IS_PURE = __nested_webpack_require_66314__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 8536:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67534__) {\n\nvar global = __nested_webpack_require_67534__(7854);\nvar inspectSource = __nested_webpack_require_67534__(2788);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ 1574:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_67846__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __nested_webpack_require_67846__(9781);\nvar fails = __nested_webpack_require_67846__(7293);\nvar objectKeys = __nested_webpack_require_67846__(1956);\nvar getOwnPropertySymbolsModule = __nested_webpack_require_67846__(5181);\nvar propertyIsEnumerableModule = __nested_webpack_require_67846__(5296);\nvar toObject = __nested_webpack_require_67846__(7908);\nvar IndexedObject = __nested_webpack_require_67846__(8361);\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n /* global Symbol -- required for testing */\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_69941__) {\n\nvar anObject = __nested_webpack_require_69941__(9670);\nvar defineProperties = __nested_webpack_require_69941__(6048);\nvar enumBugKeys = __nested_webpack_require_69941__(748);\nvar hiddenKeys = __nested_webpack_require_69941__(3501);\nvar html = __nested_webpack_require_69941__(490);\nvar documentCreateElement = __nested_webpack_require_69941__(317);\nvar sharedKey = __nested_webpack_require_69941__(6200);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 6048:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_72835__) {\n\nvar DESCRIPTORS = __nested_webpack_require_72835__(9781);\nvar definePropertyModule = __nested_webpack_require_72835__(3070);\nvar anObject = __nested_webpack_require_72835__(9670);\nvar objectKeys = __nested_webpack_require_72835__(1956);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 3070:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_73525__) {\n\nvar DESCRIPTORS = __nested_webpack_require_73525__(9781);\nvar IE8_DOM_DEFINE = __nested_webpack_require_73525__(4664);\nvar anObject = __nested_webpack_require_73525__(9670);\nvar toPrimitive = __nested_webpack_require_73525__(7593);\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 1236:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_74380__) {\n\nvar DESCRIPTORS = __nested_webpack_require_74380__(9781);\nvar propertyIsEnumerableModule = __nested_webpack_require_74380__(5296);\nvar createPropertyDescriptor = __nested_webpack_require_74380__(9114);\nvar toIndexedObject = __nested_webpack_require_74380__(5656);\nvar toPrimitive = __nested_webpack_require_74380__(7593);\nvar has = __nested_webpack_require_74380__(6656);\nvar IE8_DOM_DEFINE = __nested_webpack_require_74380__(4664);\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 8006:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_75368__) {\n\nvar internalObjectKeys = __nested_webpack_require_75368__(6324);\nvar enumBugKeys = __nested_webpack_require_75368__(748);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 5181:\n/***/ (function(__unused_webpack_module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 9518:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_75966__) {\n\nvar has = __nested_webpack_require_75966__(6656);\nvar toObject = __nested_webpack_require_75966__(7908);\nvar sharedKey = __nested_webpack_require_75966__(6200);\nvar CORRECT_PROTOTYPE_GETTER = __nested_webpack_require_75966__(8544);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 6324:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_76729__) {\n\nvar has = __nested_webpack_require_76729__(6656);\nvar toIndexedObject = __nested_webpack_require_76729__(5656);\nvar indexOf = __nested_webpack_require_76729__(1318).indexOf;\nvar hiddenKeys = __nested_webpack_require_76729__(3501);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1956:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_77369__) {\n\nvar internalObjectKeys = __nested_webpack_require_77369__(6324);\nvar enumBugKeys = __nested_webpack_require_77369__(748);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 5296:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 7674:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_78394__) {\n\n/* eslint-disable no-proto -- safe */\nvar anObject = __nested_webpack_require_78394__(9670);\nvar aPossiblePrototype = __nested_webpack_require_78394__(6077);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 288:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_79325__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __nested_webpack_require_79325__(1694);\nvar classof = __nested_webpack_require_79325__(648);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ 3887:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_79769__) {\n\nvar getBuiltIn = __nested_webpack_require_79769__(5005);\nvar getOwnPropertyNamesModule = __nested_webpack_require_79769__(8006);\nvar getOwnPropertySymbolsModule = __nested_webpack_require_79769__(5181);\nvar anObject = __nested_webpack_require_79769__(9670);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80406__) {\n\nvar global = __nested_webpack_require_80406__(7854);\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ 2248:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80571__) {\n\nvar redefine = __nested_webpack_require_80571__(1320);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 1320:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_80849__) {\n\nvar global = __nested_webpack_require_80849__(7854);\nvar createNonEnumerableProperty = __nested_webpack_require_80849__(8880);\nvar has = __nested_webpack_require_80849__(6656);\nvar setGlobal = __nested_webpack_require_80849__(3505);\nvar inspectSource = __nested_webpack_require_80849__(2788);\nvar InternalStateModule = __nested_webpack_require_80849__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ 7651:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_82466__) {\n\nvar classof = __nested_webpack_require_82466__(4326);\nvar regexpExec = __nested_webpack_require_82466__(2261);\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ 2261:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_83158__) {\n\n\"use strict\";\n\nvar regexpFlags = __nested_webpack_require_83158__(7066);\nvar stickyHelpers = __nested_webpack_require_83158__(2999);\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ 7066:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_86176__) {\n\n\"use strict\";\n\nvar anObject = __nested_webpack_require_86176__(9670);\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2999:\n/***/ (function(__unused_webpack_module, exports, __nested_webpack_require_86753__) {\n\n\"use strict\";\n\n\nvar fails = __nested_webpack_require_86753__(7293);\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ 4488:\n/***/ (function(module) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 3505:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_87737__) {\n\nvar global = __nested_webpack_require_87737__(7854);\nvar createNonEnumerableProperty = __nested_webpack_require_87737__(8880);\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 6340:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_88106__) {\n\n\"use strict\";\n\nvar getBuiltIn = __nested_webpack_require_88106__(5005);\nvar definePropertyModule = __nested_webpack_require_88106__(3070);\nvar wellKnownSymbol = __nested_webpack_require_88106__(5112);\nvar DESCRIPTORS = __nested_webpack_require_88106__(9781);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n/***/ }),\n\n/***/ 8003:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_88786__) {\n\nvar defineProperty = __nested_webpack_require_88786__(3070).f;\nvar has = __nested_webpack_require_88786__(6656);\nvar wellKnownSymbol = __nested_webpack_require_88786__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ 6200:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89271__) {\n\nvar shared = __nested_webpack_require_89271__(2309);\nvar uid = __nested_webpack_require_89271__(9711);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 5465:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89559__) {\n\nvar global = __nested_webpack_require_89559__(7854);\nvar setGlobal = __nested_webpack_require_89559__(3505);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ 2309:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_89855__) {\n\nvar IS_PURE = __nested_webpack_require_89855__(1913);\nvar store = __nested_webpack_require_89855__(5465);\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.9.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 6707:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90288__) {\n\nvar anObject = __nested_webpack_require_90288__(9670);\nvar aFunction = __nested_webpack_require_90288__(3099);\nvar wellKnownSymbol = __nested_webpack_require_90288__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ 8710:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_90863__) {\n\nvar toInteger = __nested_webpack_require_90863__(9958);\nvar requireObjectCoercible = __nested_webpack_require_90863__(4488);\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 3197:\n/***/ (function(module) {\n\n\"use strict\";\n\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n\n\n/***/ }),\n\n/***/ 6091:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97360__) {\n\nvar fails = __nested_webpack_require_97360__(7293);\nvar whitespaces = __nested_webpack_require_97360__(1361);\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n\n\n/***/ }),\n\n/***/ 3111:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_97868__) {\n\nvar requireObjectCoercible = __nested_webpack_require_97868__(4488);\nvar whitespaces = __nested_webpack_require_97868__(1361);\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_98992__) {\n\nvar toInteger = __nested_webpack_require_98992__(9958);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 7067:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_99521__) {\n\nvar toInteger = __nested_webpack_require_99521__(9958);\nvar toLength = __nested_webpack_require_99521__(7466);\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 5656:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_99996__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __nested_webpack_require_99996__(8361);\nvar requireObjectCoercible = __nested_webpack_require_99996__(4488);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 9958:\n/***/ (function(module) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ 7466:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_100645__) {\n\nvar toInteger = __nested_webpack_require_100645__(9958);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 7908:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101032__) {\n\nvar requireObjectCoercible = __nested_webpack_require_101032__(4488);\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 4590:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101355__) {\n\nvar toPositiveInteger = __nested_webpack_require_101355__(3002);\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n\n\n/***/ }),\n\n/***/ 3002:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101660__) {\n\nvar toInteger = __nested_webpack_require_101660__(9958);\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 7593:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_101959__) {\n\nvar isObject = __nested_webpack_require_101959__(111);\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 1694:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_102821__) {\n\nvar wellKnownSymbol = __nested_webpack_require_102821__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 9843:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_103114__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_103114__(2109);\nvar global = __nested_webpack_require_103114__(7854);\nvar DESCRIPTORS = __nested_webpack_require_103114__(9781);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __nested_webpack_require_103114__(3832);\nvar ArrayBufferViewCore = __nested_webpack_require_103114__(260);\nvar ArrayBufferModule = __nested_webpack_require_103114__(3331);\nvar anInstance = __nested_webpack_require_103114__(5787);\nvar createPropertyDescriptor = __nested_webpack_require_103114__(9114);\nvar createNonEnumerableProperty = __nested_webpack_require_103114__(8880);\nvar toLength = __nested_webpack_require_103114__(7466);\nvar toIndex = __nested_webpack_require_103114__(7067);\nvar toOffset = __nested_webpack_require_103114__(4590);\nvar toPrimitive = __nested_webpack_require_103114__(7593);\nvar has = __nested_webpack_require_103114__(6656);\nvar classof = __nested_webpack_require_103114__(648);\nvar isObject = __nested_webpack_require_103114__(111);\nvar create = __nested_webpack_require_103114__(30);\nvar setPrototypeOf = __nested_webpack_require_103114__(7674);\nvar getOwnPropertyNames = __nested_webpack_require_103114__(8006).f;\nvar typedArrayFrom = __nested_webpack_require_103114__(7321);\nvar forEach = __nested_webpack_require_103114__(2092).forEach;\nvar setSpecies = __nested_webpack_require_103114__(6340);\nvar definePropertyModule = __nested_webpack_require_103114__(3070);\nvar getOwnPropertyDescriptorModule = __nested_webpack_require_103114__(1236);\nvar InternalStateModule = __nested_webpack_require_103114__(9909);\nvar inheritIfRequired = __nested_webpack_require_103114__(9587);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ 3832:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_112503__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __nested_webpack_require_112503__(7854);\nvar fails = __nested_webpack_require_112503__(7293);\nvar checkCorrectnessOfIteration = __nested_webpack_require_112503__(7072);\nvar NATIVE_ARRAY_BUFFER_VIEWS = __nested_webpack_require_112503__(260).NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n\n/***/ 3074:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_113426__) {\n\nvar aTypedArrayConstructor = __nested_webpack_require_113426__(260).aTypedArrayConstructor;\nvar speciesConstructor = __nested_webpack_require_113426__(6707);\n\nmodule.exports = function (instance, list) {\n var C = speciesConstructor(instance, instance.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 7321:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_113940__) {\n\nvar toObject = __nested_webpack_require_113940__(7908);\nvar toLength = __nested_webpack_require_113940__(7466);\nvar getIteratorMethod = __nested_webpack_require_113940__(1246);\nvar isArrayIteratorMethod = __nested_webpack_require_113940__(7659);\nvar bind = __nested_webpack_require_113940__(9974);\nvar aTypedArrayConstructor = __nested_webpack_require_113940__(260).aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9711:\n/***/ (function(module) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ 3307:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_115419__) {\n\nvar NATIVE_SYMBOL = __nested_webpack_require_115419__(133);\n\nmodule.exports = NATIVE_SYMBOL\n /* global Symbol -- safe */\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 5112:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_115685__) {\n\nvar global = __nested_webpack_require_115685__(7854);\nvar shared = __nested_webpack_require_115685__(2309);\nvar has = __nested_webpack_require_115685__(6656);\nvar uid = __nested_webpack_require_115685__(9711);\nvar NATIVE_SYMBOL = __nested_webpack_require_115685__(133);\nvar USE_SYMBOL_AS_UID = __nested_webpack_require_115685__(3307);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 1361:\n/***/ (function(module) {\n\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 8264:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_116785__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_116785__(2109);\nvar global = __nested_webpack_require_116785__(7854);\nvar arrayBufferModule = __nested_webpack_require_116785__(3331);\nvar setSpecies = __nested_webpack_require_116785__(6340);\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n/***/ }),\n\n/***/ 2222:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_117427__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_117427__(2109);\nvar fails = __nested_webpack_require_117427__(7293);\nvar isArray = __nested_webpack_require_117427__(3157);\nvar isObject = __nested_webpack_require_117427__(111);\nvar toObject = __nested_webpack_require_117427__(7908);\nvar toLength = __nested_webpack_require_117427__(7466);\nvar createProperty = __nested_webpack_require_117427__(6135);\nvar arraySpeciesCreate = __nested_webpack_require_117427__(5417);\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_117427__(1194);\nvar wellKnownSymbol = __nested_webpack_require_117427__(5112);\nvar V8_VERSION = __nested_webpack_require_117427__(7392);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 7327:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_119834__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_119834__(2109);\nvar $filter = __nested_webpack_require_119834__(2092).filter;\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_119834__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 2772:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_120523__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_120523__(2109);\nvar $indexOf = __nested_webpack_require_120523__(1318).indexOf;\nvar arrayMethodIsStrict = __nested_webpack_require_120523__(9341);\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 6992:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_121364__) {\n\n\"use strict\";\n\nvar toIndexedObject = __nested_webpack_require_121364__(5656);\nvar addToUnscopables = __nested_webpack_require_121364__(1223);\nvar Iterators = __nested_webpack_require_121364__(7497);\nvar InternalStateModule = __nested_webpack_require_121364__(9909);\nvar defineIterator = __nested_webpack_require_121364__(654);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 1249:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_123565__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_123565__(2109);\nvar $map = __nested_webpack_require_123565__(2092).map;\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_123565__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 7042:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_124230__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_124230__(2109);\nvar isObject = __nested_webpack_require_124230__(111);\nvar isArray = __nested_webpack_require_124230__(3157);\nvar toAbsoluteIndex = __nested_webpack_require_124230__(1400);\nvar toLength = __nested_webpack_require_124230__(7466);\nvar toIndexedObject = __nested_webpack_require_124230__(5656);\nvar createProperty = __nested_webpack_require_124230__(6135);\nvar wellKnownSymbol = __nested_webpack_require_124230__(5112);\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_124230__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 561:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_126211__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_126211__(2109);\nvar toAbsoluteIndex = __nested_webpack_require_126211__(1400);\nvar toInteger = __nested_webpack_require_126211__(9958);\nvar toLength = __nested_webpack_require_126211__(7466);\nvar toObject = __nested_webpack_require_126211__(7908);\nvar arraySpeciesCreate = __nested_webpack_require_126211__(5417);\nvar createProperty = __nested_webpack_require_126211__(6135);\nvar arrayMethodHasSpeciesSupport = __nested_webpack_require_126211__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 8309:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_128857__) {\n\nvar DESCRIPTORS = __nested_webpack_require_128857__(9781);\nvar defineProperty = __nested_webpack_require_128857__(3070).f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 489:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_129614__) {\n\nvar $ = __nested_webpack_require_129614__(2109);\nvar fails = __nested_webpack_require_129614__(7293);\nvar toObject = __nested_webpack_require_129614__(7908);\nvar nativeGetPrototypeOf = __nested_webpack_require_129614__(9518);\nvar CORRECT_PROTOTYPE_GETTER = __nested_webpack_require_129614__(8544);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n/***/ }),\n\n/***/ 1539:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_130327__) {\n\nvar TO_STRING_TAG_SUPPORT = __nested_webpack_require_130327__(1694);\nvar redefine = __nested_webpack_require_130327__(1320);\nvar toString = __nested_webpack_require_130327__(288);\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_130780__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_130780__(2109);\nvar exec = __nested_webpack_require_130780__(2261);\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n\n\n/***/ }),\n\n/***/ 9714:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_131156__) {\n\n\"use strict\";\n\nvar redefine = __nested_webpack_require_131156__(1320);\nvar anObject = __nested_webpack_require_131156__(9670);\nvar fails = __nested_webpack_require_131156__(7293);\nvar flags = __nested_webpack_require_131156__(7066);\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 8783:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_132221__) {\n\n\"use strict\";\n\nvar charAt = __nested_webpack_require_132221__(8710).charAt;\nvar InternalStateModule = __nested_webpack_require_132221__(9909);\nvar defineIterator = __nested_webpack_require_132221__(654);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ 4723:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_133333__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __nested_webpack_require_133333__(7007);\nvar anObject = __nested_webpack_require_133333__(9670);\nvar toLength = __nested_webpack_require_133333__(7466);\nvar requireObjectCoercible = __nested_webpack_require_133333__(4488);\nvar advanceStringIndex = __nested_webpack_require_133333__(1530);\nvar regExpExec = __nested_webpack_require_133333__(7651);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 5306:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_134975__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __nested_webpack_require_134975__(7007);\nvar anObject = __nested_webpack_require_134975__(9670);\nvar toLength = __nested_webpack_require_134975__(7466);\nvar toInteger = __nested_webpack_require_134975__(9958);\nvar requireObjectCoercible = __nested_webpack_require_134975__(4488);\nvar advanceStringIndex = __nested_webpack_require_134975__(1530);\nvar getSubstitution = __nested_webpack_require_134975__(647);\nvar regExpExec = __nested_webpack_require_134975__(7651);\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 3123:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_139010__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __nested_webpack_require_139010__(7007);\nvar isRegExp = __nested_webpack_require_139010__(7850);\nvar anObject = __nested_webpack_require_139010__(9670);\nvar requireObjectCoercible = __nested_webpack_require_139010__(4488);\nvar speciesConstructor = __nested_webpack_require_139010__(6707);\nvar advanceStringIndex = __nested_webpack_require_139010__(1530);\nvar toLength = __nested_webpack_require_139010__(7466);\nvar callRegExpExec = __nested_webpack_require_139010__(7651);\nvar regexpExec = __nested_webpack_require_139010__(2261);\nvar fails = __nested_webpack_require_139010__(7293);\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ 3210:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_144619__) {\n\n\"use strict\";\n\nvar $ = __nested_webpack_require_144619__(2109);\nvar $trim = __nested_webpack_require_144619__(3111).trim;\nvar forcedStringTrimMethod = __nested_webpack_require_144619__(6091);\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n/***/ }),\n\n/***/ 2990:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_145111__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_145111__(260);\nvar $copyWithin = __nested_webpack_require_145111__(1048);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 8927:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_145777__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_145777__(260);\nvar $every = __nested_webpack_require_145777__(2092).every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3105:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_146412__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_146412__(260);\nvar $fill = __nested_webpack_require_146412__(1285);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 5035:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_147058__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_147058__(260);\nvar $filter = __nested_webpack_require_147058__(2092).filter;\nvar fromSpeciesAndList = __nested_webpack_require_147058__(3074);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n\n/***/ 7174:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_147797__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_147797__(260);\nvar $findIndex = __nested_webpack_require_147797__(2092).findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4345:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_148458__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_148458__(260);\nvar $find = __nested_webpack_require_148458__(2092).find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2846:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_149084__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_149084__(260);\nvar $forEach = __nested_webpack_require_149084__(2092).forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4731:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_149726__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_149726__(260);\nvar $includes = __nested_webpack_require_149726__(1318).includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 7209:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_150390__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_150390__(260);\nvar $indexOf = __nested_webpack_require_150390__(1318).indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_151047__) {\n\n\"use strict\";\n\nvar global = __nested_webpack_require_151047__(7854);\nvar ArrayBufferViewCore = __nested_webpack_require_151047__(260);\nvar ArrayIterators = __nested_webpack_require_151047__(6992);\nvar wellKnownSymbol = __nested_webpack_require_151047__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n\n\n/***/ }),\n\n/***/ 8867:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_152782__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_152782__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 7789:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_153395__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_153395__(260);\nvar $lastIndexOf = __nested_webpack_require_153395__(6583);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 3739:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_154090__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_154090__(260);\nvar $map = __nested_webpack_require_154090__(2092).map;\nvar speciesConstructor = __nested_webpack_require_154090__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_154941__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_154941__(260);\nvar $reduceRight = __nested_webpack_require_154941__(3671).right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 9368:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_155635__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_155635__(260);\nvar $reduce = __nested_webpack_require_155635__(3671).left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2056:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_156298__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_156298__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n\n\n/***/ }),\n\n/***/ 3462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_157051__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_157051__(260);\nvar toLength = __nested_webpack_require_157051__(7466);\nvar toOffset = __nested_webpack_require_157051__(4590);\nvar toObject = __nested_webpack_require_157051__(7908);\nvar fails = __nested_webpack_require_157051__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 678:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_158136__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_158136__(260);\nvar speciesConstructor = __nested_webpack_require_158136__(6707);\nvar fails = __nested_webpack_require_158136__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 7462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_159191__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_159191__(260);\nvar $some = __nested_webpack_require_159191__(2092).some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3824:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_159819__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_159819__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n\n\n/***/ }),\n\n/***/ 5021:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_160362__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __nested_webpack_require_160362__(260);\nvar toLength = __nested_webpack_require_160362__(7466);\nvar toAbsoluteIndex = __nested_webpack_require_160362__(1400);\nvar speciesConstructor = __nested_webpack_require_160362__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n\n\n/***/ }),\n\n/***/ 2974:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_161310__) {\n\n\"use strict\";\n\nvar global = __nested_webpack_require_161310__(7854);\nvar ArrayBufferViewCore = __nested_webpack_require_161310__(260);\nvar fails = __nested_webpack_require_161310__(7293);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 5016:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_162445__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = __nested_webpack_require_162445__(260).exportTypedArrayMethod;\nvar fails = __nested_webpack_require_162445__(7293);\nvar global = __nested_webpack_require_162445__(7854);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n\n/***/ 2472:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_163286__) {\n\nvar createTypedArrayConstructor = __nested_webpack_require_163286__(9843);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 4747:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_163713__) {\n\nvar global = __nested_webpack_require_163713__(7854);\nvar DOMIterables = __nested_webpack_require_163713__(8324);\nvar forEach = __nested_webpack_require_163713__(8533);\nvar createNonEnumerableProperty = __nested_webpack_require_163713__(8880);\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n\n\n/***/ }),\n\n/***/ 3948:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_164461__) {\n\nvar global = __nested_webpack_require_164461__(7854);\nvar DOMIterables = __nested_webpack_require_164461__(8324);\nvar ArrayIteratorMethods = __nested_webpack_require_164461__(6992);\nvar createNonEnumerableProperty = __nested_webpack_require_164461__(8880);\nvar wellKnownSymbol = __nested_webpack_require_164461__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 1637:\n/***/ (function(module, __unused_webpack_exports, __nested_webpack_require_166049__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__nested_webpack_require_166049__(6992);\nvar $ = __nested_webpack_require_166049__(2109);\nvar getBuiltIn = __nested_webpack_require_166049__(5005);\nvar USE_NATIVE_URL = __nested_webpack_require_166049__(590);\nvar redefine = __nested_webpack_require_166049__(1320);\nvar redefineAll = __nested_webpack_require_166049__(2248);\nvar setToStringTag = __nested_webpack_require_166049__(8003);\nvar createIteratorConstructor = __nested_webpack_require_166049__(4994);\nvar InternalStateModule = __nested_webpack_require_166049__(9909);\nvar anInstance = __nested_webpack_require_166049__(5787);\nvar hasOwn = __nested_webpack_require_166049__(6656);\nvar bind = __nested_webpack_require_166049__(9974);\nvar classof = __nested_webpack_require_166049__(648);\nvar anObject = __nested_webpack_require_166049__(9670);\nvar isObject = __nested_webpack_require_166049__(111);\nvar create = __nested_webpack_require_166049__(30);\nvar createPropertyDescriptor = __nested_webpack_require_166049__(9114);\nvar getIterator = __nested_webpack_require_166049__(8554);\nvar getIteratorMethod = __nested_webpack_require_166049__(1246);\nvar wellKnownSymbol = __nested_webpack_require_166049__(5112);\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __nested_webpack_require_177789__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__nested_webpack_require_177789__(8783);\nvar $ = __nested_webpack_require_177789__(2109);\nvar DESCRIPTORS = __nested_webpack_require_177789__(9781);\nvar USE_NATIVE_URL = __nested_webpack_require_177789__(590);\nvar global = __nested_webpack_require_177789__(7854);\nvar defineProperties = __nested_webpack_require_177789__(6048);\nvar redefine = __nested_webpack_require_177789__(1320);\nvar anInstance = __nested_webpack_require_177789__(5787);\nvar has = __nested_webpack_require_177789__(6656);\nvar assign = __nested_webpack_require_177789__(1574);\nvar arrayFrom = __nested_webpack_require_177789__(8457);\nvar codeAt = __nested_webpack_require_177789__(8710).codeAt;\nvar toASCII = __nested_webpack_require_177789__(3197);\nvar setToStringTag = __nested_webpack_require_177789__(8003);\nvar URLSearchParamsModule = __nested_webpack_require_177789__(1637);\nvar InternalStateModule = __nested_webpack_require_177789__(9909);\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_210484__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __nested_webpack_require_210484__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__nested_webpack_require_210484__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__nested_webpack_require_210484__.o(definition, key) && !__nested_webpack_require_210484__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__nested_webpack_require_210484__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__nested_webpack_require_210484__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__nested_webpack_require_210484__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __nested_webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n!function() {\n\"use strict\";\n// ESM COMPAT FLAG\n__nested_webpack_require_210484__.r(__nested_webpack_exports__);\n\n// EXPORTS\n__nested_webpack_require_210484__.d(__nested_webpack_exports__, {\n \"Dropzone\": function() { return /* reexport */ Dropzone; },\n \"default\": function() { return /* binding */ dropzone_dist; }\n});\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __nested_webpack_require_210484__(2222);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __nested_webpack_require_210484__(7327);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __nested_webpack_require_210484__(2772);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __nested_webpack_require_210484__(6992);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __nested_webpack_require_210484__(1249);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __nested_webpack_require_210484__(7042);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __nested_webpack_require_210484__(561);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.constructor.js\nvar es_array_buffer_constructor = __nested_webpack_require_210484__(8264);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __nested_webpack_require_210484__(8309);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-prototype-of.js\nvar es_object_get_prototype_of = __nested_webpack_require_210484__(489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __nested_webpack_require_210484__(1539);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __nested_webpack_require_210484__(4916);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __nested_webpack_require_210484__(9714);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __nested_webpack_require_210484__(8783);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __nested_webpack_require_210484__(4723);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __nested_webpack_require_210484__(5306);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __nested_webpack_require_210484__(3123);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __nested_webpack_require_210484__(3210);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.uint8-array.js\nvar es_typed_array_uint8_array = __nested_webpack_require_210484__(2472);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.copy-within.js\nvar es_typed_array_copy_within = __nested_webpack_require_210484__(2990);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.every.js\nvar es_typed_array_every = __nested_webpack_require_210484__(8927);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.fill.js\nvar es_typed_array_fill = __nested_webpack_require_210484__(3105);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.filter.js\nvar es_typed_array_filter = __nested_webpack_require_210484__(5035);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find.js\nvar es_typed_array_find = __nested_webpack_require_210484__(4345);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find-index.js\nvar es_typed_array_find_index = __nested_webpack_require_210484__(7174);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.for-each.js\nvar es_typed_array_for_each = __nested_webpack_require_210484__(2846);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.includes.js\nvar es_typed_array_includes = __nested_webpack_require_210484__(4731);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.index-of.js\nvar es_typed_array_index_of = __nested_webpack_require_210484__(7209);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.iterator.js\nvar es_typed_array_iterator = __nested_webpack_require_210484__(6319);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.join.js\nvar es_typed_array_join = __nested_webpack_require_210484__(8867);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.last-index-of.js\nvar es_typed_array_last_index_of = __nested_webpack_require_210484__(7789);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.map.js\nvar es_typed_array_map = __nested_webpack_require_210484__(3739);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce.js\nvar es_typed_array_reduce = __nested_webpack_require_210484__(9368);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce-right.js\nvar es_typed_array_reduce_right = __nested_webpack_require_210484__(4483);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reverse.js\nvar es_typed_array_reverse = __nested_webpack_require_210484__(2056);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.set.js\nvar es_typed_array_set = __nested_webpack_require_210484__(3462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.slice.js\nvar es_typed_array_slice = __nested_webpack_require_210484__(678);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.some.js\nvar es_typed_array_some = __nested_webpack_require_210484__(7462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.sort.js\nvar es_typed_array_sort = __nested_webpack_require_210484__(3824);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.subarray.js\nvar es_typed_array_subarray = __nested_webpack_require_210484__(5021);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-locale-string.js\nvar es_typed_array_to_locale_string = __nested_webpack_require_210484__(2974);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-string.js\nvar es_typed_array_to_string = __nested_webpack_require_210484__(5016);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __nested_webpack_require_210484__(4747);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __nested_webpack_require_210484__(3948);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.js\nvar web_url = __nested_webpack_require_210484__(285);\n;// CONCATENATED MODULE: ./src/emitter.js\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n }\n\n _createClass(Emitter, [{\n key: \"on\",\n value: // Add an event listener for given event\n function on(event, fn) {\n this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n\n this._callbacks[event].push(fn);\n\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n this._callbacks = this._callbacks || {};\n var callbacks = this._callbacks[event];\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (callbacks) {\n var _iterator = _createForOfIteratorHelper(callbacks, true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var callback = _step.value;\n callback.apply(this, args);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } // trigger a corresponding DOM event\n\n\n if (this.element) {\n this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n args: args\n }));\n }\n\n return this;\n }\n }, {\n key: \"makeEvent\",\n value: function makeEvent(eventName, detail) {\n var params = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n\n if (typeof window.CustomEvent === \"function\") {\n return new CustomEvent(eventName, params);\n } else {\n // IE 11 support\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n } // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n\n }, {\n key: \"off\",\n value: function off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n } // specific event\n\n\n var callbacks = this._callbacks[event];\n\n if (!callbacks) {\n return this;\n } // remove all handlers\n\n\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n } // remove specific handler\n\n\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n }]);\n\n return Emitter;\n}();\n\n\n;// CONCATENATED MODULE: ./src/preview-template.html\n// Module\nvar code = \"
    Check
    Error
    \";\n// Exports\n/* harmony default export */ var preview_template = (code);\n;// CONCATENATED MODULE: ./src/options.js\n\n\n\n\n\nfunction options_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = options_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction options_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return options_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return options_arrayLikeToArray(o, minLen); }\n\nfunction options_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\nvar defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form\n * doesn't have an `action` attribute). You can also\n * provide a function that will be called with `files` and\n * must return the url (since `v3.12.0`)\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n * If set to null or 0, no timeout is going to be set.\n */\n timeout: null,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2000000,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * The maximum filesize (in bytes) that is allowed to be uploaded.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: \"crop\",\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: \"contain\",\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n filesizeBase: 1000,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual\n * feedback.\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * Set this to `true` if you don't want previews to be shown.\n */\n disablePreviews: false,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: {\n tb: \"TB\",\n gb: \"GB\",\n mb: \"MB\",\n kb: \"KB\",\n b: \"b\"\n },\n\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init: function init() {},\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params: function params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n }\n },\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept: function accept(file, done) {\n return done();\n },\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function chunksUploaded(file, done) {\n done();\n },\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback: function fallback() {\n // This code should pass in IE7... :(\n var messageElement;\n this.element.className = \"\".concat(this.element.className, \" dz-browser-not-supported\");\n\n var _iterator = options_createForOfIteratorHelper(this.element.getElementsByTagName(\"div\"), true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (!messageElement) {\n messageElement = Dropzone.createElement('
    ');\n this.element.appendChild(messageElement);\n }\n\n var span = messageElement.getElementsByTagName(\"span\")[0];\n\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize: function resize(file, width, height, resizeMethod) {\n var info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified\n\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) {\n width = height * srcRatio;\n } else if (height == null) {\n height = width / srcRatio;\n } // Make sure images aren't upscaled\n\n\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n var trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === \"crop\") {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === \"contain\") {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(\"Unknown resizeMethod '\".concat(resizeMethod, \"'\"));\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n info.trgWidth = width;\n info.trgHeight = height;\n return info;\n },\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile: function transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n } else {\n return done(file);\n }\n },\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: preview_template,\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n // Those are self explanatory and simply concern the DragnDrop.\n drop: function drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: function dragstart(e) {},\n dragend: function dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: function paste(e) {},\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset: function reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n // Called when a file is added to the queue\n // Receives `file`\n addedfile: function addedfile(file) {\n var _this = this;\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n\n var _iterator2 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-name]\"), true),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n node.textContent = file.name;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n var _iterator3 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-size]\"), true),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n node = _step3.value;\n node.innerHTML = this.filesize(file.size);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\"
    \".concat(this.options.dictRemoveFile, \"\"));\n file.previewElement.appendChild(file._removeLink);\n }\n\n var removeFileEvent = function removeFileEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {\n return _this.removeFile(file);\n });\n } else {\n if (_this.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {\n return _this.removeFile(file);\n });\n } else {\n return _this.removeFile(file);\n }\n }\n };\n\n var _iterator4 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-remove]\"), true),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var removeLink = _step4.value;\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n },\n // Called whenever a file is removed.\n removedfile: function removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n\n return this._updateMaxFilesReachedClass();\n },\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail: function thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n\n var _iterator5 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), true),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var thumbnailElement = _step5.value;\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return setTimeout(function () {\n return file.previewElement.classList.add(\"dz-image-preview\");\n }, 1);\n }\n },\n // Called whenever an error occurs\n // Receives `file` and `message`\n error: function error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n\n if (typeof message !== \"string\" && message.error) {\n message = message.error;\n }\n\n var _iterator6 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), true),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var node = _step6.value;\n node.textContent = message;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n },\n errormultiple: function errormultiple() {},\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing: function processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n\n if (file._removeLink) {\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n }\n },\n processingmultiple: function processingmultiple() {},\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress: function uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n var _iterator7 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), true),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var node = _step7.value;\n node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = \"\".concat(progress, \"%\");\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n },\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress: function totaluploadprogress() {},\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending: function sending() {},\n sendingmultiple: function sendingmultiple() {},\n // When the complete upload is finished and successful\n // Receives `file`\n success: function success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n successmultiple: function successmultiple() {},\n // When the upload is canceled.\n canceled: function canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple: function canceledmultiple() {},\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete: function complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n completemultiple: function completemultiple() {},\n maxfilesexceeded: function maxfilesexceeded() {},\n maxfilesreached: function maxfilesreached() {},\n queuecomplete: function queuecomplete() {},\n addedfiles: function addedfiles() {}\n};\n/* harmony default export */ var src_options = (defaultOptions);\n;// CONCATENATED MODULE: ./src/dropzone.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction dropzone_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = dropzone_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction dropzone_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return dropzone_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dropzone_arrayLikeToArray(o, minLen); }\n\nfunction dropzone_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropzone_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\nvar Dropzone = /*#__PURE__*/function (_Emitter) {\n _inherits(Dropzone, _Emitter);\n\n var _super = _createSuper(Dropzone);\n\n function Dropzone(el, options) {\n var _this;\n\n dropzone_classCallCheck(this, Dropzone);\n\n _this = _super.call(this);\n var fallback, left;\n _this.element = el; // For backwards compatibility since the version was in the prototype previously\n\n _this.version = Dropzone.version;\n _this.clickableElements = [];\n _this.listeners = [];\n _this.files = []; // All files\n\n if (typeof _this.element === \"string\") {\n _this.element = document.querySelector(_this.element);\n } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n\n\n if (!_this.element || _this.element.nodeType == null) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (_this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n } // Now add this dropzone to the instances.\n\n\n Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.\n\n _this.element.dropzone = _assertThisInitialized(_this);\n var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n _this.options = Dropzone.extend({}, src_options, elementOptions, options != null ? options : {});\n _this.options.previewTemplate = _this.options.previewTemplate.replace(/\\n*/g, \"\"); // If the browser failed, just call the fallback and leave\n\n if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));\n } // @options.url = @element.getAttribute \"action\" unless @options.url?\n\n\n if (_this.options.url == null) {\n _this.options.url = _this.element.getAttribute(\"action\");\n }\n\n if (!_this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n\n if (_this.options.uploadMultiple && _this.options.chunking) {\n throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n } // Backwards compatibility\n\n\n if (_this.options.acceptedMimeTypes) {\n _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n delete _this.options.acceptedMimeTypes;\n } // Backwards compatibility\n\n\n if (_this.options.renameFilename != null) {\n _this.options.renameFile = function (file) {\n return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);\n };\n }\n\n if (typeof _this.options.method === \"string\") {\n _this.options.method = _this.options.method.toUpperCase();\n }\n\n if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n\n\n if (_this.options.previewsContainer !== false) {\n if (_this.options.previewsContainer) {\n _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n } else {\n _this.previewsContainer = _this.element;\n }\n }\n\n if (_this.options.clickable) {\n if (_this.options.clickable === true) {\n _this.clickableElements = [_this.element];\n } else {\n _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n }\n }\n\n _this.init();\n\n return _this;\n } // Returns all files that have been accepted\n\n\n dropzone_createClass(Dropzone, [{\n key: \"getAcceptedFiles\",\n value: function getAcceptedFiles() {\n return this.files.filter(function (file) {\n return file.accepted;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n\n }, {\n key: \"getRejectedFiles\",\n value: function getRejectedFiles() {\n return this.files.filter(function (file) {\n return !file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n }, {\n key: \"getFilesWithStatus\",\n value: function getFilesWithStatus(status) {\n return this.files.filter(function (file) {\n return file.status === status;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that are in the queue\n\n }, {\n key: \"getQueuedFiles\",\n value: function getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n }, {\n key: \"getUploadingFiles\",\n value: function getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n }, {\n key: \"getAddedFiles\",\n value: function getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n } // Files that are either queued or uploading\n\n }, {\n key: \"getActiveFiles\",\n value: function getActiveFiles() {\n return this.files.filter(function (file) {\n return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n }).map(function (file) {\n return file;\n });\n } // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n\n }, {\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(\"
    \")));\n }\n\n if (this.clickableElements.length) {\n var setupHiddenFileInput = function setupHiddenFileInput() {\n if (_this2.hiddenFileInput) {\n _this2.hiddenFileInput.parentNode.removeChild(_this2.hiddenFileInput);\n }\n\n _this2.hiddenFileInput = document.createElement(\"input\");\n\n _this2.hiddenFileInput.setAttribute(\"type\", \"file\");\n\n if (_this2.options.maxFiles === null || _this2.options.maxFiles > 1) {\n _this2.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n\n _this2.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (_this2.options.acceptedFiles !== null) {\n _this2.hiddenFileInput.setAttribute(\"accept\", _this2.options.acceptedFiles);\n }\n\n if (_this2.options.capture !== null) {\n _this2.hiddenFileInput.setAttribute(\"capture\", _this2.options.capture);\n } // Making sure that no one can \"tab\" into this field.\n\n\n _this2.hiddenFileInput.setAttribute(\"tabindex\", \"-1\"); // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n\n\n _this2.hiddenFileInput.style.visibility = \"hidden\";\n _this2.hiddenFileInput.style.position = \"absolute\";\n _this2.hiddenFileInput.style.top = \"0\";\n _this2.hiddenFileInput.style.left = \"0\";\n _this2.hiddenFileInput.style.height = \"0\";\n _this2.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(_this2.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(_this2.hiddenFileInput);\n\n _this2.hiddenFileInput.addEventListener(\"change\", function () {\n var files = _this2.hiddenFileInput.files;\n\n if (files.length) {\n var _iterator = dropzone_createForOfIteratorHelper(files, true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var file = _step.value;\n\n _this2.addFile(file);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n _this2.emit(\"addedfiles\", files);\n\n setupHiddenFileInput();\n });\n };\n\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n\n var _iterator2 = dropzone_createForOfIteratorHelper(this.events, true),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var eventName = _step2.value;\n this.on(eventName, this.options[eventName]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this.on(\"uploadprogress\", function () {\n return _this2.updateTotalUploadProgress();\n });\n this.on(\"removedfile\", function () {\n return _this2.updateTotalUploadProgress();\n });\n this.on(\"canceled\", function (file) {\n return _this2.emit(\"complete\", file);\n }); // Emit a `queuecomplete` event if all files finished uploading.\n\n this.on(\"complete\", function (file) {\n if (_this2.getAddedFiles().length === 0 && _this2.getUploadingFiles().length === 0 && _this2.getQueuedFiles().length === 0) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(function () {\n return _this2.emit(\"queuecomplete\");\n }, 0);\n }\n });\n\n var containsFiles = function containsFiles(e) {\n if (e.dataTransfer.types) {\n // Because e.dataTransfer.types is an Object in\n // IE, we need to iterate like this instead of\n // using e.dataTransfer.types.some()\n for (var i = 0; i < e.dataTransfer.types.length; i++) {\n if (e.dataTransfer.types[i] === \"Files\") return true;\n }\n }\n\n return false;\n };\n\n var noPropagation = function noPropagation(e) {\n // If there are no files, we don't want to stop\n // propagation so we don't interfere with other\n // drag and drop behaviour.\n if (!containsFiles(e)) return;\n e.stopPropagation();\n\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n }; // Create the listeners\n\n\n this.listeners = [{\n element: this.element,\n events: {\n dragstart: function dragstart(e) {\n return _this2.emit(\"dragstart\", e);\n },\n dragenter: function dragenter(e) {\n noPropagation(e);\n return _this2.emit(\"dragenter\", e);\n },\n dragover: function dragover(e) {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n var efct;\n\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n\n e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n noPropagation(e);\n return _this2.emit(\"dragover\", e);\n },\n dragleave: function dragleave(e) {\n return _this2.emit(\"dragleave\", e);\n },\n drop: function drop(e) {\n noPropagation(e);\n return _this2.drop(e);\n },\n dragend: function dragend(e) {\n return _this2.emit(\"dragend\", e);\n }\n } // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n\n }];\n this.clickableElements.forEach(function (clickableElement) {\n return _this2.listeners.push({\n element: clickableElement,\n events: {\n click: function click(evt) {\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== _this2.element || evt.target === _this2.element || Dropzone.elementInside(evt.target, _this2.element.querySelector(\".dz-message\"))) {\n _this2.hiddenFileInput.click(); // Forward the click\n\n }\n\n return true;\n }\n }\n });\n });\n this.enable();\n return this.options.init.call(this);\n } // Not fully tested yet\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.disable();\n this.removeAllFiles(true);\n\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n }, {\n key: \"updateTotalUploadProgress\",\n value: function updateTotalUploadProgress() {\n var totalUploadProgress;\n var totalBytesSent = 0;\n var totalBytes = 0;\n var activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n var _iterator3 = dropzone_createForOfIteratorHelper(this.getActiveFiles(), true),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var file = _step3.value;\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n } // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n\n }, {\n key: \"_getParamName\",\n value: function _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return \"\".concat(this.options.paramName).concat(this.options.uploadMultiple ? \"[\".concat(n, \"]\") : \"\");\n }\n } // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n\n }, {\n key: \"_renameFile\",\n value: function _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n\n return this.options.renameFile(file);\n } // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getFallbackForm\",\n value: function getFallbackForm() {\n var existingFallback, form;\n\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n\n var fieldsString = '
    ';\n\n if (this.options.dictFallbackText) {\n fieldsString += \"

    \".concat(this.options.dictFallbackText, \"

    \");\n }\n\n fieldsString += \"
    \");\n var fields = Dropzone.createElement(fieldsString);\n\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\"
    \"));\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n\n return form != null ? form : fields;\n } // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getExistingFallback\",\n value: function getExistingFallback() {\n var getFallback = function getFallback(elements) {\n var _iterator4 = dropzone_createForOfIteratorHelper(elements, true),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var el = _step4.value;\n\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n };\n\n for (var _i = 0, _arr = [\"div\", \"form\"]; _i < _arr.length; _i++) {\n var tagName = _arr[_i];\n var fallback;\n\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n } // Activates all listeners stored in @listeners\n\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Deactivates all listeners stored in @listeners\n\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Removes all event listeners and cancels all files in the queue or being processed.\n\n }, {\n key: \"disable\",\n value: function disable() {\n var _this3 = this;\n\n this.clickableElements.forEach(function (element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n this.disabled = true;\n return this.files.map(function (file) {\n return _this3.cancelUpload(file);\n });\n }\n }, {\n key: \"enable\",\n value: function enable() {\n delete this.disabled;\n this.clickableElements.forEach(function (element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n } // Returns a nicely formatted filesize\n\n }, {\n key: \"filesize\",\n value: function filesize(size) {\n var selectedSize = 0;\n var selectedUnit = \"b\";\n\n if (size > 0) {\n var units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return \"\".concat(selectedSize, \" \").concat(this.options.dictFileSizeUnits[selectedUnit]);\n } // Adds or removes the `dz-max-files-reached` class from the form.\n\n }, {\n key: \"_updateMaxFilesReachedClass\",\n value: function _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit(\"maxfilesreached\", this.files);\n }\n\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n }, {\n key: \"drop\",\n value: function drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n\n this.emit(\"drop\", e); // Convert the FileList to an Array\n // This is necessary for IE11\n\n var files = [];\n\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n } // Even if it's a folder, files.length will contain the folders.\n\n\n if (files.length) {\n var items = e.dataTransfer.items;\n\n if (items && items.length && items[0].webkitGetAsEntry != null) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n\n this.emit(\"addedfiles\", files);\n }\n }, {\n key: \"paste\",\n value: function paste(e) {\n if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n return x.items;\n }) == null) {\n return;\n }\n\n this.emit(\"paste\", e);\n var items = e.clipboardData.items;\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n }, {\n key: \"handleFiles\",\n value: function handleFiles(files) {\n var _iterator5 = dropzone_createForOfIteratorHelper(files, true),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var file = _step5.value;\n this.addFile(file);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n } // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n\n }, {\n key: \"_addFilesFromItems\",\n value: function _addFilesFromItems(items) {\n var _this4 = this;\n\n return function () {\n var result = [];\n\n var _iterator6 = dropzone_createForOfIteratorHelper(items, true),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var item = _step6.value;\n var entry;\n\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n result.push(_this4.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(_this4._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") {\n result.push(_this4.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return result;\n }();\n } // Goes through the directory, and adds each file it finds recursively\n\n }, {\n key: \"_addFilesFromDirectory\",\n value: function _addFilesFromDirectory(directory, path) {\n var _this5 = this;\n\n var dirReader = directory.createReader();\n\n var errorHandler = function errorHandler(error) {\n return __guardMethod__(console, \"log\", function (o) {\n return o.log(error);\n });\n };\n\n var readEntries = function readEntries() {\n return dirReader.readEntries(function (entries) {\n if (entries.length > 0) {\n var _iterator7 = dropzone_createForOfIteratorHelper(entries, true),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var entry = _step7.value;\n\n if (entry.isFile) {\n entry.file(function (file) {\n if (_this5.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") {\n return;\n }\n\n file.fullPath = \"\".concat(path, \"/\").concat(file.name);\n return _this5.addFile(file);\n });\n } else if (entry.isDirectory) {\n _this5._addFilesFromDirectory(entry, \"\".concat(path, \"/\").concat(entry.name));\n }\n } // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n readEntries();\n }\n\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n } // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n\n }, {\n key: \"accept\",\n value: function accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n done(this.options.dictInvalidFileType);\n } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n this.emit(\"maxfilesexceeded\", file);\n } else {\n this.options.accept.call(this, file, done);\n }\n }\n }, {\n key: \"addFile\",\n value: function addFile(file) {\n var _this6 = this;\n\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and\n // thus the chunks — might change if `options.transformFile` is set\n // and does something to the data.\n\n };\n this.files.push(file);\n file.status = Dropzone.ADDED;\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n this.accept(file, function (error) {\n if (error) {\n file.accepted = false;\n\n _this6._errorProcessing([file], error); // Will set the file.status\n\n } else {\n file.accepted = true;\n\n if (_this6.options.autoQueue) {\n _this6.enqueueFile(file);\n } // Will set .accepted = true\n\n }\n\n _this6._updateMaxFilesReachedClass();\n });\n } // Wrapper for enqueueFile\n\n }, {\n key: \"enqueueFiles\",\n value: function enqueueFiles(files) {\n var _iterator8 = dropzone_createForOfIteratorHelper(files, true),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var file = _step8.value;\n this.enqueueFile(file);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return null;\n }\n }, {\n key: \"enqueueFile\",\n value: function enqueueFile(file) {\n var _this7 = this;\n\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n\n if (this.options.autoProcessQueue) {\n return setTimeout(function () {\n return _this7.processQueue();\n }, 0); // Deferring the call\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }\n }, {\n key: \"_enqueueThumbnail\",\n value: function _enqueueThumbnail(file) {\n var _this8 = this;\n\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n this._thumbnailQueue.push(file);\n\n return setTimeout(function () {\n return _this8._processThumbnailQueue();\n }, 0); // Deferring the call\n }\n }\n }, {\n key: \"_processThumbnailQueue\",\n value: function _processThumbnailQueue() {\n var _this9 = this;\n\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n\n this._processingThumbnail = true;\n\n var file = this._thumbnailQueue.shift();\n\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n _this9.emit(\"thumbnail\", file, dataUrl);\n\n _this9._processingThumbnail = false;\n return _this9._processThumbnailQueue();\n });\n } // Can be called by the user to remove a file\n\n }, {\n key: \"removeFile\",\n value: function removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n\n this.files = without(this.files, file);\n this.emit(\"removedfile\", file);\n\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n } // Removes all files that aren't currently processed from the list\n\n }, {\n key: \"removeAllFiles\",\n value: function removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n\n var _iterator9 = dropzone_createForOfIteratorHelper(this.files.slice(), true),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var file = _step9.value;\n\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n return null;\n } // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n\n }, {\n key: \"resizeImage\",\n value: function resizeImage(file, width, height, resizeMethod, callback) {\n var _this10 = this;\n\n return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n var resizeMimeType = _this10.options.resizeMimeType;\n\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n\n var resizedDataURL = canvas.toDataURL(resizeMimeType, _this10.options.resizeQuality);\n\n if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n var _this11 = this;\n\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector\n\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n\n return;\n }\n\n _this11.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n fileReader.readAsDataURL(file);\n } // `mockFile` needs to have these attributes:\n //\n // { name: 'name', size: 12345, imageUrl: '' }\n //\n // `callback` will be invoked when the image has been downloaded and displayed.\n // `crossOrigin` will be added to the `img` tag when accessing the file.\n\n }, {\n key: \"displayExistingFile\",\n value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {\n var _this12 = this;\n\n var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n this.emit(\"addedfile\", mockFile);\n this.emit(\"complete\", mockFile);\n\n if (!resizeThumbnail) {\n this.emit(\"thumbnail\", mockFile, imageUrl);\n if (callback) callback();\n } else {\n var onDone = function onDone(thumbnail) {\n _this12.emit(\"thumbnail\", mockFile, thumbnail);\n\n if (callback) callback();\n };\n\n mockFile.dataURL = imageUrl;\n this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n }\n }\n }, {\n key: \"createThumbnailFromUrl\",\n value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n var _this13 = this;\n\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n var img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n } // fixOrientation is not needed anymore with browsers handling imageOrientation\n\n\n fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n\n img.onload = function () {\n var loadExif = function loadExif(callback) {\n return callback(1);\n };\n\n if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n loadExif = function loadExif(callback) {\n return EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, \"Orientation\"));\n });\n };\n }\n\n return loadExif(function (orientation) {\n file.width = img.width;\n file.height = img.height;\n\n var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n } // This is a bugfix for iOS' scaling bug.\n\n\n drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n var thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return img.src = file.dataURL;\n } // Goes through the queue and processes files if there aren't too many already.\n\n }, {\n key: \"processQueue\",\n value: function processQueue() {\n var parallelUploads = this.options.parallelUploads;\n var processingLength = this.getUploadingFiles().length;\n var i = processingLength; // There are already at least as many files uploading than should be\n\n if (processingLength >= parallelUploads) {\n return;\n }\n\n var queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n\n\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n } // Wrapper for `processFiles`\n\n }, {\n key: \"processFile\",\n value: function processFile(file) {\n return this.processFiles([file]);\n } // Loads the file, then calls finishedLoading()\n\n }, {\n key: \"processFiles\",\n value: function processFiles(files) {\n var _iterator10 = dropzone_createForOfIteratorHelper(files, true),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var file = _step10.value;\n file.processing = true; // Backwards compatibility\n\n file.status = Dropzone.UPLOADING;\n this.emit(\"processing\", file);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n }, {\n key: \"_getFilesWithXhr\",\n value: function _getFilesWithXhr(xhr) {\n var files;\n return files = this.files.filter(function (file) {\n return file.xhr === xhr;\n }).map(function (file) {\n return file;\n });\n } // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n\n }, {\n key: \"cancelUpload\",\n value: function cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n var groupedFiles = this._getFilesWithXhr(file.xhr);\n\n var _iterator11 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var groupedFile = _step11.value;\n groupedFile.status = Dropzone.CANCELED;\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n if (typeof file.xhr !== \"undefined\") {\n file.xhr.abort();\n }\n\n var _iterator12 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var _groupedFile = _step12.value;\n this.emit(\"canceled\", _groupedFile);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }, {\n key: \"resolveOption\",\n value: function resolveOption(option) {\n if (typeof option === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return option.apply(this, args);\n }\n\n return option;\n }\n }, {\n key: \"uploadFile\",\n value: function uploadFile(file) {\n return this.uploadFiles([file]);\n }\n }, {\n key: \"uploadFiles\",\n value: function uploadFiles(files) {\n var _this14 = this;\n\n this._transformFiles(files, function (transformedFiles) {\n if (_this14.options.chunking) {\n // Chunking is not allowed to be used with `uploadMultiple` so we know\n // that there is only __one__file.\n var transformedFile = transformedFiles[0];\n files[0].upload.chunked = _this14.options.chunking && (_this14.options.forceChunking || transformedFile.size > _this14.options.chunkSize);\n files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this14.options.chunkSize);\n }\n\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n var file = files[0];\n var _transformedFile = transformedFiles[0];\n var startedChunkCount = 0;\n file.upload.chunks = [];\n\n var handleNextChunk = function handleNextChunk() {\n var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.\n\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n } // This means, that all chunks have already been started.\n\n\n if (chunkIndex >= file.upload.totalChunkCount) return;\n startedChunkCount++;\n var start = chunkIndex * _this14.options.chunkSize;\n var end = Math.min(start + _this14.options.chunkSize, _transformedFile.size);\n var dataBlock = {\n name: _this14._getParamName(0),\n data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock,\n // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0 // The number of times this block has been retried.\n\n };\n\n _this14._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = function (chunk, response) {\n var allFinished = true;\n chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk\n\n chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n\n chunk.xhr = null;\n\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n _this14.options.chunksUploaded(file, function () {\n _this14._finished(files, response, null);\n });\n }\n };\n\n if (_this14.options.parallelChunkUploads) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n } else {\n handleNextChunk();\n }\n } else {\n var dataBlocks = [];\n\n for (var _i2 = 0; _i2 < files.length; _i2++) {\n dataBlocks[_i2] = {\n name: _this14._getParamName(_i2),\n data: transformedFiles[_i2],\n filename: files[_i2].upload.filename\n };\n }\n\n _this14._uploadData(files, dataBlocks);\n }\n });\n } /// Returns the right chunk for given file and xhr\n\n }, {\n key: \"_getChunk\",\n value: function _getChunk(file, xhr) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n return file.upload.chunks[i];\n }\n }\n } // This function actually uploads the file(s) to the server.\n // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n // files, or individual chunks for chunked upload).\n\n }, {\n key: \"_uploadData\",\n value: function _uploadData(files, dataBlocks) {\n var _this15 = this;\n\n var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.\n\n var _iterator13 = dropzone_createForOfIteratorHelper(files, true),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var file = _step13.value;\n file.xhr = xhr;\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n var method = this.resolveOption(this.options.method, files);\n var url = this.resolveOption(this.options.url, files);\n xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n\n var timeout = this.resolveOption(this.options.timeout, files);\n if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = function (e) {\n _this15._finishedUploading(files, xhr, e);\n };\n\n xhr.ontimeout = function () {\n _this15._handleUploadError(files, xhr, \"Request timedout after \".concat(_this15.options.timeout / 1000, \" seconds\"));\n };\n\n xhr.onerror = function () {\n _this15._handleUploadError(files, xhr);\n }; // Some browsers do not have the .upload property\n\n\n var progressObj = xhr.upload != null ? xhr.upload : xhr;\n\n progressObj.onprogress = function (e) {\n return _this15._updateFilesUploadProgress(files, xhr, e);\n };\n\n var headers = {\n Accept: \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n };\n\n if (this.options.headers) {\n Dropzone.extend(headers, this.options.headers);\n }\n\n for (var headerName in headers) {\n var headerValue = headers[headerName];\n\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n var formData = new FormData(); // Adding all @options parameters\n\n if (this.options.params) {\n var additionalParams = this.options.params;\n\n if (typeof additionalParams === \"function\") {\n additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n }\n\n for (var key in additionalParams) {\n var value = additionalParams[key];\n\n if (Array.isArray(value)) {\n // The additional parameter contains an array,\n // so lets iterate over it to attach each value\n // individually.\n for (var i = 0; i < value.length; i++) {\n formData.append(key, value[i]);\n }\n } else {\n formData.append(key, value);\n }\n }\n } // Let the user add additional data if necessary\n\n\n var _iterator14 = dropzone_createForOfIteratorHelper(files, true),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var _file = _step14.value;\n this.emit(\"sending\", _file, xhr, formData);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n this._addFormElementData(formData); // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n\n\n for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) {\n var dataBlock = dataBlocks[_i3];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n }, {\n key: \"_transformFiles\",\n value: function _transformFiles(files, done) {\n var _this16 = this;\n\n var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n\n var doneCounter = 0;\n\n var _loop = function _loop(i) {\n _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n transformedFiles[i] = transformedFile;\n\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n };\n\n for (var i = 0; i < files.length; i++) {\n _loop(i);\n }\n } // Takes care of adding other input elements of the form to the AJAX request\n\n }, {\n key: \"_addFormElementData\",\n value: function _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n var _iterator15 = dropzone_createForOfIteratorHelper(this.element.querySelectorAll(\"input, textarea, select, button\"), true),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var input = _step15.value;\n var inputName = input.getAttribute(\"name\");\n var inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.\n\n if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n var _iterator16 = dropzone_createForOfIteratorHelper(input.options, true),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var option = _step16.value;\n\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n }\n } // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n\n }, {\n key: \"_updateFilesUploadProgress\",\n value: function _updateFilesUploadProgress(files, xhr, e) {\n if (!files[0].upload.chunked) {\n // Handle file uploads without chunking\n var _iterator17 = dropzone_createForOfIteratorHelper(files, true),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var file = _step17.value;\n\n if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) {\n // If both, the `total` and `bytesSent` have already been set, and\n // they are equal (meaning progress is at 100%), we can skip this\n // file, since an upload progress shouldn't go down.\n continue;\n }\n\n if (e) {\n file.upload.progress = 100 * e.loaded / e.total;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n file.upload.progress = 100;\n file.upload.bytesSent = file.upload.total;\n }\n\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n } else {\n // Handle chunked file uploads\n // Chunked upload is not compatible with uploading multiple files in one\n // request, so we know there's only one file.\n var _file2 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk\n // progress.\n\n var chunk = this._getChunk(_file2, xhr);\n\n if (e) {\n chunk.progress = 100 * e.loaded / e.total;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n chunk.progress = 100;\n chunk.bytesSent = chunk.total;\n } // Now tally the *file* upload progress from its individual chunks\n\n\n _file2.upload.progress = 0;\n _file2.upload.total = 0;\n _file2.upload.bytesSent = 0;\n\n for (var i = 0; i < _file2.upload.totalChunkCount; i++) {\n if (_file2.upload.chunks[i] && typeof _file2.upload.chunks[i].progress !== \"undefined\") {\n _file2.upload.progress += _file2.upload.chunks[i].progress;\n _file2.upload.total += _file2.upload.chunks[i].total;\n _file2.upload.bytesSent += _file2.upload.chunks[i].bytesSent;\n }\n } // Since the process is a percentage, we need to divide by the amount of\n // chunks we've used.\n\n\n _file2.upload.progress = _file2.upload.progress / _file2.upload.totalChunkCount;\n this.emit(\"uploadprogress\", _file2, _file2.upload.progress, _file2.upload.bytesSent);\n }\n }\n }, {\n key: \"_finishedUploading\",\n value: function _finishedUploading(files, xhr, e) {\n var response;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n response = xhr.responseText;\n\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files, xhr);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);\n } else {\n this._finished(files, response, e);\n }\n }\n }\n }, {\n key: \"_handleUploadError\",\n value: function _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n var chunk = this._getChunk(files[0], xhr);\n\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n\n return;\n } else {\n console.warn(\"Retried this chunk too often. Giving up.\");\n }\n }\n\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }, {\n key: \"submitRequest\",\n value: function submitRequest(xhr, formData, files) {\n if (xhr.readyState != 1) {\n console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n return;\n }\n\n xhr.send(formData);\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_finished\",\n value: function _finished(files, responseText, e) {\n var _iterator18 = dropzone_createForOfIteratorHelper(files, true),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var file = _step18.value;\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_errorProcessing\",\n value: function _errorProcessing(files, message, xhr) {\n var _iterator19 = dropzone_createForOfIteratorHelper(files, true),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var file = _step19.value;\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }], [{\n key: \"initClass\",\n value: function initClass() {\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n /*\n This is a list of all available events you can register on a dropzone object.\n You can register an event handler like this:\n dropzone.on(\"dragEnter\", function() { });\n */\n\n this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n } // global utility\n\n }, {\n key: \"extend\",\n value: function extend(target) {\n for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n objects[_key2 - 1] = arguments[_key2];\n }\n\n for (var _i4 = 0, _objects = objects; _i4 < _objects.length; _i4++) {\n var object = _objects[_i4];\n\n for (var key in object) {\n var val = object[key];\n target[key] = val;\n }\n }\n\n return target;\n }\n }, {\n key: \"uuidv4\",\n value: function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c === \"x\" ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n }]);\n\n return Dropzone;\n}(Emitter);\n\n\nDropzone.initClass();\nDropzone.version = \"5.9.3\"; // This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n// Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n//
    \n\nDropzone.options = {}; // Returns the options for an element or undefined if none available.\n\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n}; // Holds a list of all dropzone instances\n\n\nDropzone.instances = []; // Returns the dropzone for given element if any\n\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n\n return element.dropzone;\n}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\n\n\nDropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them\n\nDropzone.discover = function () {\n var dropzones;\n\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = []; // IE :(\n\n var checkElements = function checkElements(elements) {\n return function () {\n var result = [];\n\n var _iterator20 = dropzone_createForOfIteratorHelper(elements, true),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var el = _step20.value;\n\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n\n return result;\n }();\n };\n\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return function () {\n var result = [];\n\n var _iterator21 = dropzone_createForOfIteratorHelper(dropzones, true),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var dropzone = _step21.value;\n\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n\n return result;\n }();\n}; // Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n\n\nDropzone.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i]; // Checks if the browser is supported\n\nDropzone.isBrowserSupported = function () {\n var capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n if (Dropzone.blacklistedBrowsers !== undefined) {\n // Since this has been renamed, this makes sure we don't break older\n // configuration.\n Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n } // The browser supports the API, but may be blocked.\n\n\n var _iterator22 = dropzone_createForOfIteratorHelper(Dropzone.blockedBrowsers, true),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var regex = _step22.value;\n\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(\",\")[1]); // separate out the mime component\n\n var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0]; // write the bytes of the string to an ArrayBuffer\n\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n } // write the ArrayBuffer to a blob\n\n\n return new Blob([ab], {\n type: mimeString\n });\n}; // Returns an array without the rejected item\n\n\nvar without = function without(list, rejectedItem) {\n return list.filter(function (item) {\n return item !== rejectedItem;\n }).map(function (item) {\n return item;\n });\n}; // abc-def_ghi -> abcDefGhi\n\n\nvar camelize = function camelize(str) {\n return str.replace(/[\\-_](\\w)/g, function (match) {\n return match.charAt(1).toUpperCase();\n });\n}; // Creates an element from string\n\n\nDropzone.createElement = function (string) {\n var div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n}; // Tests if given element is inside (or simply is) the container\n\n\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n\n\n while (element = element.parentNode) {\n if (element === container) {\n return true;\n }\n }\n\n return false;\n};\n\nDropzone.getElement = function (el, name) {\n var element;\n\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n\n if (element == null) {\n throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector or a plain HTML element.\"));\n }\n\n return element;\n};\n\nDropzone.getElements = function (els, name) {\n var el, elements;\n\n if (els instanceof Array) {\n elements = [];\n\n try {\n var _iterator23 = dropzone_createForOfIteratorHelper(els, true),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n el = _step23.value;\n elements.push(this.getElement(el, name));\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n\n var _iterator24 = dropzone_createForOfIteratorHelper(document.querySelectorAll(els), true),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n el = _step24.value;\n elements.push(el);\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if (elements == null || !elements.length) {\n throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\"));\n }\n\n return elements;\n}; // Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n\n\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n}; // Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n\n\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n\n\n acceptedFiles = acceptedFiles.split(\",\");\n var mimeType = file.type;\n var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n var _iterator25 = dropzone_createForOfIteratorHelper(acceptedFiles, true),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var validType = _step25.value;\n validType = validType.trim();\n\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n\n return false;\n}; // Augment jQuery\n\n\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n} // Dropzone file status codes\n\n\nDropzone.ADDED = \"added\";\nDropzone.QUEUED = \"queued\"; // For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n\nDropzone.ACCEPTED = Dropzone.QUEUED;\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\n\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n var iw = img.naturalWidth;\n var ih = img.naturalHeight;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n\n var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.\n\n\n var sy = 0;\n var ey = ih;\n var py = ih;\n\n while (py > sy) {\n var alpha = data[(py - 1) * 4 + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = ey + sy >> 1;\n }\n\n var ratio = py / ih;\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n}; // A replacement for context.drawImage\n// (args are for source and destination).\n\n\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n}; // Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\n\nvar ExifRestore = /*#__PURE__*/function () {\n function ExifRestore() {\n dropzone_classCallCheck(this, ExifRestore);\n }\n\n dropzone_createClass(ExifRestore, null, [{\n key: \"initClass\",\n value: function initClass() {\n this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n }\n }, {\n key: \"encode64\",\n value: function encode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n\n if (!(i < input.length)) {\n break;\n }\n }\n\n return output;\n }\n }, {\n key: \"restore\",\n value: function restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n return resizedFileBase64;\n }\n\n var rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return \"data:image/jpeg;base64,\".concat(this.encode64(image));\n }\n }, {\n key: \"exifManipulation\",\n value: function exifManipulation(resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments);\n var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n var aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n }, {\n key: \"getExifArray\",\n value: function getExifArray(segments) {\n var seg = undefined;\n var x = 0;\n\n while (x < segments.length) {\n seg = segments[x];\n\n if (seg[0] === 255 & seg[1] === 225) {\n return seg;\n }\n\n x++;\n }\n\n return [];\n }\n }, {\n key: \"insertExif\",\n value: function insertExif(resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n var buf = this.decode64(imageData);\n var separatePoint = buf.indexOf(255, 3);\n var mae = buf.slice(0, separatePoint);\n var ato = buf.slice(separatePoint);\n var array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n }, {\n key: \"slice2Segments\",\n value: function slice2Segments(rawImageArray) {\n var head = 0;\n var segments = [];\n\n while (true) {\n var length;\n\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n break;\n }\n\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n head += 2;\n } else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n\n if (head > rawImageArray.length) {\n break;\n }\n }\n\n return segments;\n }\n }, {\n key: \"decode64\",\n value: function decode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n\n if (base64test.exec(input)) {\n console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n\n if (!(i < input.length)) {\n break;\n }\n }\n\n return buf;\n }\n }]);\n\n return ExifRestore;\n}();\n\nExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n// @win window reference\n// @fn function reference\n\nvar contentLoaded = function contentLoaded(win, fn) {\n var done = false;\n var top = true;\n var doc = win.document;\n var root = doc.documentElement;\n var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n var pre = doc.addEventListener ? \"\" : \"on\";\n\n var init = function init(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function poll() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n\n if (top) {\n poll();\n }\n }\n\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n}; // As a single function to be able to write tests.\n\n\nDropzone._autoDiscoverFunction = function () {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n};\n\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\n\nfunction __guardMethod__(obj, methodName, transform) {\n if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}\n\n\n;// CONCATENATED MODULE: ./tool/dropzone.dist.js\n /// Make Dropzone a global variable.\n\nwindow.Dropzone = Dropzone;\n/* harmony default export */ var dropzone_dist = (Dropzone);\n\n}();\n/******/ \treturn __nested_webpack_exports__;\n/******/ })()\n;\n});\n\n//# sourceURL=webpack://django-filer/./node_modules/dropzone/dist/dropzone.js?\n}"); - -/***/ }, - -/***/ "./node_modules/mediator-js/lib/mediator.js" -/*!**************************************************!*\ - !*** ./node_modules/mediator-js/lib/mediator.js ***! - \**************************************************/ -(module, exports) { - -eval("{var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*jslint bitwise: true, nomen: true, plusplus: true, white: true */\n\n/*!\n* Mediator.js Library v0.11.0\n* https://github.com/ajacksified/Mediator.js\n*\n* Copyright 2018, Jack Lawson\n* MIT Licensed (http://www.opensource.org/licenses/mit-license.php)\n*\n* For more information: http://thejacklawson.com/2011/06/mediators-for-modularized-asynchronous-programming-in-javascript/index.html\n* Project on GitHub: https://github.com/ajacksified/Mediator.js\n*\n* Last update: 22 Mar 2018\n*/\n\n(function(global, factory) {\n 'use strict';\n\n if (true) {\n // AMD\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n global.Mediator = factory();\n return global.Mediator;\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else // removed by dead control flow\n{}\n}(this, function() {\n 'use strict';\n\n // We'll generate guids for class instances for easy referencing later on.\n // Subscriber instances will have an id that can be refernced for quick\n // lookups.\n\n function guidGenerator() {\n var S4 = function() {\n return (((1+Math.random())*0x10000)|0).toString(16).substring(1);\n };\n\n return (S4()+S4()+\"-\"+S4()+\"-\"+S4()+\"-\"+S4()+\"-\"+S4()+S4()+S4());\n }\n\n // Subscribers are instances of Mediator Channel registrations. We generate\n // an object instance so that it can be updated later on without having to\n // unregister and re-register. Subscribers are constructed with a function\n // to be called, options object, and context.\n\n function Subscriber(fn, options, context) {\n if (!(this instanceof Subscriber)) {\n return new Subscriber(fn, options, context);\n }\n\n this.id = guidGenerator();\n this.fn = fn;\n this.options = options;\n this.context = context;\n this.channel = null;\n }\n\n // Mediator.update on a subscriber instance can update its function,context,\n // or options object. It takes in an object and looks for fn, context, or\n // options keys.\n Subscriber.prototype.update = function(options) {\n if (options) {\n this.fn = options.fn || this.fn;\n this.context = options.context || this.context;\n this.options = options.options || this.options;\n if (this.channel && this.options && this.options.priority !== undefined) {\n this.channel.setPriority(this.id, this.options.priority);\n }\n }\n }\n\n // A Mediator channel holds a list of sub-channels and subscribers to be fired\n // when Mediator.publish is called on the Mediator instance. It also contains\n // some methods to manipulate its lists of data; only setPriority and\n // StopPropagation are meant to be used. The other methods should be accessed\n // through the Mediator instance.\n\n function Channel(namespace, parent) {\n if (!(this instanceof Channel)) {\n return new Channel(namespace);\n }\n\n this.namespace = namespace || \"\";\n this._subscribers = [];\n this._channels = {};\n this._parent = parent;\n this.stopped = false;\n }\n\n // Sort function for sorting the channels based on their priority. The sort will\n // place the channel with the highest priority in the first place of the array,\n // all other channels will be added in descending order. i.g. a channel with a\n // priority of 9 will be placed before a channel with a priority of 3\n Channel.prototype.channelPrioritySort = function(a, b) {\n if (a.options.priority > b.options.priority) {\n return -1;\n } else if (a.options.priority < b.options.priority) {\n return 1;\n }\n return 0;\n };\n\n Channel.prototype.addSubscriber = function(fn, options, context){\n // Make sure there is always an options object\n if (!options) {\n options = { priority: 0 };\n }\n\n // Cheap hack to either parse as an int or turn it into 0. Runs faster\n // in many browsers than parseInt with the benefit that it won't\n // return a NaN.\n options.priority = options.priority | 0;\n\n var subscriber = new Subscriber(fn, options, context);\n subscriber.channel = this;\n\n this._subscribers.push(subscriber);\n this._subscribers.sort(this.channelPrioritySort);\n\n return subscriber;\n }\n\n // The channel instance is passed as an argument to the mediator subscriber,\n // and further subscriber propagation can be called with\n // channel.StopPropagation().\n Channel.prototype.stopPropagation = function() {\n this.stopped = true;\n }\n\n Channel.prototype.getSubscriber = function(identifier) {\n var x = 0,\n y = this._subscribers.length;\n\n for(x, y; x < y; x++) {\n if (this._subscribers[x].id === identifier || this._subscribers[x].fn === identifier) {\n return this._subscribers[x];\n }\n }\n }\n\n // Channel.setPriority is useful in updating the order in which Subscribers\n // are called, and takes an identifier (subscriber id or named function) and\n // an array index. It will not search recursively through subchannels.\n\n Channel.prototype.setPriority = function(identifier, priority) {\n var x = 0,\n y = this._subscribers.length;\n\n for(; x= 0; x--) {\n if(this._subscribers[x].fn === identifier || this._subscribers[x].id === identifier){\n this._subscribers[x].channel = null;\n this._subscribers.splice(x,1);\n }\n }\n }\n\n // Check if we should attempt to automatically clean up the channel\n if (autoCleanup) {\n this.autoCleanChannel();\n }\n\n var x = this._subscribers.length - 1;\n\n // If we don't pass in an id, we're clearing all\n if (!identifier) {\n this._subscribers = [];\n return;\n }\n\n // Going backwards makes splicing a whole lot easier.\n for(x; x >= 0; x--) {\n if (this._subscribers[x].fn === identifier || this._subscribers[x].id === identifier) {\n this._subscribers[x].channel = null;\n this._subscribers.splice(x,1);\n }\n }\n }\n\n Channel.prototype.autoCleanChannel = function() {\n // First make sure there are no more subscribers, if there are we\n // can stop processing the channel any further\n if (this._subscribers.length !== 0) {\n return;\n }\n\n // Next we need to make sure there are no more sub-channels that\n // have this channel as its parent channel. We try to iterate over the\n // properties of _channels and as soon as we find a property we've\n // set we will stop processing the channel any further\n for (var key in this._channels) {\n if (this._channels.hasOwnProperty(key)) {\n return;\n }\n }\n\n // The last check before we can remove the channel is to see if it\n // has a parent. If there is no parent we don't want to remove this\n // channel\n if (this._parent != null) {\n // We need the ID by which this channel is known to its parent, it should\n // be the last part of the namespace. We need split the namespace up and\n // take its last element to pass along to the removeChannel method\n var path = this.namespace.split(':'),\n channelName = path[path.length - 1];\n // The parent of the current channel to remove this channel\n this._parent.removeChannel(channelName);\n }\n }\n\n Channel.prototype.removeChannel = function(channelName) {\n if (this.hasChannel(channelName)) {\n this._channels[channelName] = null;\n delete this._channels[channelName];\n // After removing a sub-channel we can check if that makes this channel\n // suitable for auto clean up\n this.autoCleanChannel();\n }\n };\n\n\n // This will publish arbitrary arguments to a subscriber and then to parent\n // channels.\n\n Channel.prototype.publish = function(data) {\n var x = 0,\n y = this._subscribers.length,\n shouldCall = false,\n subscriber, l,\n subsBefore,subsAfter;\n\n // Priority is preserved in the _subscribers index.\n for(x, y; x < y; x++) {\n // By default set the flag to false\n shouldCall = false;\n subscriber = this._subscribers[x];\n\n if (!this.stopped) {\n subsBefore = this._subscribers.length;\n if (subscriber.options !== undefined && typeof subscriber.options.predicate === \"function\") {\n if (subscriber.options.predicate.apply(subscriber.context, data)) {\n // The predicate matches, the callback function should be called\n shouldCall = true;\n }\n }else{\n // There is no predicate to match, the callback should always be called\n shouldCall = true;\n }\n }\n\n // Check if the callback should be called\n if (shouldCall) {\n // Check if the subscriber has options and if this include the calls options\n if (subscriber.options && subscriber.options.calls !== undefined) {\n // Decrease the number of calls left by one\n subscriber.options.calls--;\n // Once the number of calls left reaches zero or less we need to remove the subscriber\n if (subscriber.options.calls < 1) {\n this.removeSubscriber(subscriber.id);\n }\n }\n // Now we call the callback, if this in turns publishes to the same channel it will no longer\n // cause the callback to be called as we just removed it as a subscriber\n subscriber.fn.apply(subscriber.context, data);\n\n subsAfter = this._subscribers.length;\n y = subsAfter;\n if (subsAfter === subsBefore - 1) {\n x--;\n }\n }\n }\n\n if (this._parent) {\n this._parent.publish(data);\n }\n\n this.stopped = false;\n }\n\n function Mediator() {\n if (!(this instanceof Mediator)) {\n return new Mediator();\n }\n\n this._channels = new Channel('');\n }\n\n // A Mediator instance is the interface through which events are registered\n // and removed from publish channels.\n\n // Returns a channel instance based on namespace, for example\n // application:chat:message:received. If readOnly is true we\n // will refrain from creating non existing channels.\n Mediator.prototype.getChannel = function(namespace, readOnly) {\n var channel = this._channels,\n namespaceHierarchy = namespace.split(':'),\n x = 0,\n y = namespaceHierarchy.length;\n\n if (namespace === '') {\n return channel;\n }\n\n if (namespaceHierarchy.length > 0) {\n for(x, y; x < y; x++) {\n\n if (!channel.hasChannel(namespaceHierarchy[x])) {\n if (readOnly) {\n break;\n } else {\n channel.addChannel(namespaceHierarchy[x]);\n }\n }\n\n channel = channel.returnChannel(namespaceHierarchy[x]);\n }\n }\n\n return channel;\n }\n\n // Pass in a channel namespace, function to be called, options, and context\n // to call the function in to Subscribe. It will create a channel if one\n // does not exist. Options can include a predicate to determine if it\n // should be called (based on the data published to it) and a priority\n // index.\n\n Mediator.prototype.subscribe = function(channelName, fn, options, context) {\n var channel = this.getChannel(channelName || \"\", false);\n\n options = options || {};\n context = context || {};\n\n return channel.addSubscriber(fn, options, context);\n }\n\n // Pass in a channel namespace, function to be called, options, and context\n // to call the function in to Subscribe. It will create a channel if one\n // does not exist. Options can include a predicate to determine if it\n // should be called (based on the data published to it) and a priority\n // index.\n\n Mediator.prototype.once = function(channelName, fn, options, context) {\n options = options || {};\n options.calls = 1;\n\n return this.subscribe(channelName, fn, options, context);\n }\n\n // Returns a subscriber for a given subscriber id / named function and\n // channel namespace\n\n Mediator.prototype.getSubscriber = function(identifier, channelName) {\n var channel = this.getChannel(channelName || \"\", true);\n // We have to check if channel within the hierarchy exists and if it is\n // an exact match for the requested channel\n if (channel.namespace !== channelName) {\n return null;\n }\n\n return channel.getSubscriber(identifier);\n }\n\n // Remove a subscriber from a given channel namespace recursively based on\n // a passed-in subscriber id or named function.\n\n Mediator.prototype.remove = function(channelName, identifier, autoClean) {\n var channel = this.getChannel(channelName || \"\", true);\n\n if (channel.namespace !== channelName) {\n return false;\n }\n\n channel.removeSubscriber(identifier, autoClean);\n }\n\n\n // Publishes arbitrary data to a given channel namespace. Channels are\n // called recursively downwards; a post to application:chat will post to\n // application:chat:receive and application:chat:derp:test:beta:bananas.\n // Called using Mediator.publish(\"application:chat\", [ args ]);\n\n Mediator.prototype.publish = function(channelName) {\n var channel = this.getChannel(channelName || \"\", false);\n if (channel.namespace !== channelName) {\n return null;\n }\n\n var args = Array.prototype.slice.call(arguments, 1);\n\n args.push(channel);\n\n channel.publish(args);\n }\n\n // Alias some common names for easy interop\n Mediator.prototype.on = Mediator.prototype.subscribe;\n Mediator.prototype.bind = Mediator.prototype.subscribe;\n Mediator.prototype.emit = Mediator.prototype.publish;\n Mediator.prototype.trigger = Mediator.prototype.publish;\n Mediator.prototype.off = Mediator.prototype.remove;\n\n // Finally, expose it all.\n\n Mediator.Channel = Channel;\n Mediator.Subscriber = Subscriber;\n Mediator.version = \"0.10.1\";\n\n return Mediator;\n}));\n\n\n//# sourceURL=webpack://django-filer/./node_modules/mediator-js/lib/mediator.js?\n}"); - -/***/ } - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ id: moduleId, -/******/ loaded: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ if (!(moduleId in __webpack_modules__)) { -/******/ delete __webpack_module_cache__[moduleId]; -/******/ var e = new Error("Cannot find module '" + moduleId + "'"); -/******/ e.code = 'MODULE_NOT_FOUND'; -/******/ throw e; -/******/ } -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.loaded = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/harmony module decorator */ -/******/ (() => { -/******/ __webpack_require__.hmd = (module) => { -/******/ module = Object.create(module); -/******/ if (!module.children) module.children = []; -/******/ Object.defineProperty(module, 'exports', { -/******/ enumerable: true, -/******/ set: () => { -/******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id); -/******/ } -/******/ }); -/******/ return module; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module can't be inlined because the eval devtool is used. -/******/ var __webpack_exports__ = __webpack_require__("./filer/static/filer/js/base.js"); -/******/ -/******/ })() -; \ No newline at end of file +/*! For license information please see filer-base.bundle.js.LICENSE.txt */ +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),g=s.Int8Array,y=g&&g.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=g&&p(g),E=y&&p(y),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),F=!1,_={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},T={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(_,t)||l(T,t)};for(r in _)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in _)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in _)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in F=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),_)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:F&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in _)if(l(_,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in _){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in _)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&g[e]||t)}catch(e){}}for(r in _)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(_,t)||l(T,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,g=n(3070).f,y=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],F=C,_=r[k],T=_&&_[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},D=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},U=function(e){return R(e,23,4)},P=function(e){return R(e,52,8)},N=function(e,t){g(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in F||s(F,W,C[W]);H.constructor=F}v&&h(T)!==I&&v(T,I);var Q=new _(new F(2)),X=T.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(T,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else F=function(e){c(this,F,S);var t=f(e);E(this,{bytes:y.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},_=function(e,t,n){c(this,_,k),c(e,F,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(F,"byteLength"),N(_,"buffer"),N(_,"byteLength"),N(_,"byteOffset")),a(_[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,D,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,D,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,P,t,arguments.length>2?arguments[2]:void 0)}});b(F,S),b(_,k),e.exports={ArrayBuffer:F,DataView:_}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:void 0,y=void 0!==g,b=c(h),w=0;if(y&&(g=r(g,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=y?g(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=y?o(d,g,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,g){for(var y,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=g||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(y=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return k;case 2:l.call(A,y)}else switch(e){case 4:return!1;case 7:l.call(A,y)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var g=/./[h],y=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=y[0],w=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[g++]=255&c,c/=256,s-=8);for(l=l<0;d[g++]=255&l,l/=256,f-=8);return d[--g]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,g=v.has,y=v.set;r=function(e,t){return t.facade=e,y.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return g.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,g=0;m>g;)p=v[g++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/g))throw RangeError(i);for(f+=(m-d)*g,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var y=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(y0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),g=n(648),y=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),F=n(9587),_=C.get,T=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,D=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,U=a.TypedArray,P=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return _(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=g(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&y(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(P,"buffer"),Y(P,"byteOffset"),Y(P,"byteLength"),Y(P,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,g=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=_(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=_(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),F(y(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,U),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=g):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(y(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(T(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new D(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,g=o(p);if(null!=g&&!s(g))for(f=(d=g.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",g=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),y=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!g||!y},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),g=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,g);for(r=new(void 0===n?Array:n)(h(g-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;pg-r+n;p--)delete m[p-1]}else if(n>r)for(p=g-r;p>y;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var g=i(e),y=String(this),b="function"==typeof r;b||(r=String(r));var w=g.global;if(w){var x=g.unicode;g.lastIndex=0}for(var E=[];;){var S=u(g,y);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(g.lastIndex=l(y,o(g.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=y.slice(L,F)+R,L=F+C.length)}return k+y.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),g=d.unicode,y=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",y),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),g=n(30),y=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,F=u.getterFor(L),_=u.getterFor(A),T=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(T," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,D={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return D[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},U=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:P}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else U(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=F(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=F(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=F(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=g(t,{body:y(0,String(n)),headers:y(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:F}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),g=n(1637),y=n(9909),b=a.URL,w=g.URLSearchParams,x=g.getState,E=y.set,S=y.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",F="Invalid port",_=/[A-Za-z]/,T=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,D=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,U=/[\t\u000A\u000D]/g,P=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),D.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&_.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ge={},ye={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(U,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!_.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(T.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ge:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ge:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var g=0;g65535)return F;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return F}f+=s;break;case ge:if(e.scheme="file","/"==s||"\\"==s)c=ye;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ye:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=P(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=Fe.call(r),r.origin=_e.call(r),r.protocol=Te.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=De.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Ue.call(r))},Ce=Ae.prototype,Fe=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},_e=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Te=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},De=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Ue=function(){var e=S(this).fragment;return e?"#"+e:""},Pe=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:Pe(Fe,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:Pe(_e),protocol:Pe(Te,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:Pe(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=y.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=y.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===y.UPLOADING?y.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?y.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};y.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},y.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},y.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},y.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},y.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},y.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new y(this,e)})}),y.ADDED="added",y.QUEUED="queued",y.ACCEPTED=y.QUEUED,y.UPLOADING="uploading",y.PROCESSING=y.UPLOADING,y.CANCELED="canceled",y.ERROR="error",y.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),g=parseInt(n.dataset.maxFilesize||0,10);let y=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:g,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(y=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),y?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),y=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone:not(.js-filer-dropzone-base):not(.js-filer-dropzone-folder):not(.js-filer-dropzone-info-message)",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),g=document.querySelector(".js-filer-dropzone-upload-canceled"),y=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},F=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFilesize,e.classList.add("js-filer-dropzone"),console.log("[Filer DnD] dropzoneBase found, url:",S,"folder:",k)}else console.log("[Filer DnD] No .js-filer-dropzone-base element found on page");Cl.mediator.subscribe("filer-upload-in-progress",F),o=document.querySelectorAll(i),console.log("[Filer DnD] Found",o.length,"dropzone elements (.js-filer-dropzone)"),o.length&&l()?(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return void console.log("[Filer DnD] Skipping element (already has dropzone):",r.tagName,r.className);const p=r.dataset.url;console.log("[Filer DnD] Creating Dropzone instance for",r.tagName,"url:",p,"maxFiles:",r.dataset.maxFiles,"maxFilesize:",r.dataset.maxFilesize);const h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(console.log("[Filer DnD] accept:",n.name,"url:",p),Cl.mediator.remove("filer-upload-in-progress",F),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),y&&y.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,console.log("[Filer DnD] file accepted, submitNum:",e,"maxSubmitNum:",t),C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{console.log("[Filer DnD] sending:",e.name,"to:",p);const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,console.log("[Filer DnD] success:",t.name,"submitNum:",e,"response:",n),C();const r=_(t,p);r&&r.remove()},queuecomplete:()=>{console.log("[Filer DnD] queuecomplete: submitNum:",e,"hasErrors:",L),0===e?(C(),y&&y.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),console.log("[Filer DnD] reloading after errors (1s delay)"),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),console.log("[Filer DnD] reloading now via reloadOrdered"),A())):console.warn("[Filer DnD] queuecomplete: submitNum is not 0, skipping reload")},error:(t,n)=>{if(console.error("[Filer DnD] error:",t.name,"error:",n,"submitNum:",e),"duplicate"===n)return void console.log("[Filer DnD] duplicate file, ignoring");e--,console.log("[Filer DnD] after error decrement, submitNum:",e),C();const r=_(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),y&&y.addEventListener("click",e=>{e.preventDefault(),y.classList.add(x),g&&g.classList.remove(x),h.removeAllFiles(!0)})})):console.warn("[Filer DnD] No dropzone instances created. dropzones.length:",o.length,"Dropzone:",!!l())}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",g=()=>{h{h=e.offsetWidth,g()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file From a92d981944e74c0950db912322fa9742297a50fe Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 16:25:18 +0300 Subject: [PATCH 30/51] BEN-2954: setup.py removed pyproject.toml updated --- pyproject.toml | 9 ++++--- setup.py | 69 -------------------------------------------------- 2 files changed, 5 insertions(+), 73 deletions(-) delete mode 100644 setup.py diff --git a/pyproject.toml b/pyproject.toml index 6f7e6ca58..e134e5911 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,11 +19,12 @@ requires-python = ">=3.10" dependencies = [ "django>=5.1,<5.2", "django-mptt>=0.6,<1.0", - "django-polymorphic>=4.0.0", - "django-js-asset>=2.0.0", + "django-polymorphic>=4.0.0,<5.0", + "django-js-asset>=2.0.0,<3.0", "easy-thumbnails[svg]>=2,<3.0", "Unidecode>=0.04,<1.2", "filetype", + "pytz", # Pin svglib to a version below 1.6.0. # The latest version (1.6.0) adds pycairo as a dependency, @@ -54,8 +55,8 @@ classifiers = [ [project.optional-dependencies] s3 = [ - "boto3", - "django-storages", + "boto3>=1.26,<2.0", + "django-storages>=1.13,<2.0", ] heif = ["pillow-heif"] diff --git a/setup.py b/setup.py deleted file mode 100644 index 5cd5a8e7a..000000000 --- a/setup.py +++ /dev/null @@ -1,69 +0,0 @@ -import os -import re - -from setuptools import setup, find_packages - - -def get_version(): - """Read version from filer/__init__.py without importing the package.""" - init_py = os.path.join(os.path.dirname(__file__), 'filer', '__init__.py') - with open(init_py) as f: - match = re.search(r"^__version__\s*=\s*['\"]([^'\"]+)['\"]", f.read(), re.M) - if not match: - raise RuntimeError("Cannot find __version__ in filer/__init__.py") - return match.group(1) - - -version = get_version() - - -def read(fname): - """read the contents of a text file""" - return open(os.path.join(os.path.dirname(__file__), fname)).read() - -setup( - name='django-filer', - version=version, - url='http://github.com/stefanfoulis/django-filer', - license='BSD', - platforms=['OS Independent'], - description='A file management application for django that makes handling of files and images a breeze.', - long_description=read('README.rst'), - author='Stefan Foulis', - author_email='stefan.foulis@gmail.com', - packages=find_packages(), - python_requires='>=3.10', - install_requires=( - 'django>=5.1,<5.2', - 'django-mptt>=0.6,<1.0', # the exact version depends on Django - 'django_polymorphic>=4.0.0,<5.0', - 'django-js-asset>=2.0.0,<3.0', - 'easy-thumbnails>=2,<3.0', - 'Unidecode>=0.04,<1.2', - 'filetype', - 'pytz', - ), - extras_require={ - 's3': [ - 'boto3>=1.26,<2.0', - 'django-storages>=1.13,<2.0', - ], - }, - include_package_data=True, - zip_safe=False, - classifiers=[ - 'Development Status :: 4 - Beta', - 'Framework :: Django', - 'Framework :: Django :: 5.1', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: BSD License', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Programming Language :: Python :: 3.13', - 'Topic :: Internet :: WWW/HTTP', - ], -) From badec154618aa966da09e1860c9848c4709ed68a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 9 Jun 2026 18:01:15 +0300 Subject: [PATCH 31/51] BEN-2954: remove logs --- filer/admin/folderadmin.py | 57 +------------------ .../static/filer/js/addons/table-dropzone.js | 22 ------- .../static/filer/js/dist/filer-base.bundle.js | 2 +- 3 files changed, 4 insertions(+), 77 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 2a792350c..8a39324f9 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -413,37 +413,19 @@ def directory_listing(self, request, folder_id=None, viewtype=None): limit_search_to_folder = request.GET.get('limit_search_to_folder', False) in (True, 'on') - logger.debug( - "[Filer Search] query=%r, search_terms=%r, search_mode=%s, " - "limit_search_to_folder=%s, folder=%s (id=%s, is_root=%s)", - q, search_terms, search_mode, limit_search_to_folder, - folder.name if folder else None, - folder.pk if folder else None, - folder.is_root if folder else None, - ) - if len(search_terms) > 0: if folder and limit_search_to_folder and not folder.is_root: desc_folder_ids = folder.get_descendants_ids() - logger.debug( - "[Filer Search] Limiting to folder %s and %d descendant folders", - folder.name, len(desc_folder_ids), - ) # Do not include current folder itself in search results. folder_qs = Folder.objects.filter(pk__in=desc_folder_ids) # Limit search results to files in the current folder or any # nested folder. file_qs = File.objects.filter(folder_id__in=desc_folder_ids + [folder.pk]) else: - logger.debug("[Filer Search] Searching globally (all folders and files)") folder_qs = self.get_queryset(request) file_qs = File.objects.all() folder_qs = self.filter_folder(folder_qs, search_terms).prefetch_related("children", "all_files") file_qs = self.filter_file(file_qs, search_terms) - logger.debug( - "[Filer Search] Results: %d folders, %d files found for terms=%r", - folder_qs.count(), file_qs.count(), search_terms, - ) show_result_count = True else: @@ -619,10 +601,6 @@ def construct_search(field_name): else: return "%s__icontains" % field_name - logger.debug( - "[Filer Search] filter_folder: terms=%r, search_fields=%r, owner_lookups=%r", - terms, self.search_fields, self.get_owner_filter_lookups(), - ) for term in terms: filters = models.Q() for filter_ in self.search_fields: @@ -630,11 +608,9 @@ def construct_search(field_name): for filter_ in self.get_owner_filter_lookups(): filters |= models.Q(**{filter_: term}) qs = qs.filter(filters) - logger.debug("[Filer Search] filter_folder query: %s", qs.query) return qs def filter_file(self, qs, terms=()): - logger.debug("[Filer Search] filter_file: terms=%r", terms) for term in terms: filters = (models.Q(name__icontains=term) | models.Q(description__icontains=term) @@ -642,7 +618,6 @@ def filter_file(self, qs, terms=()): for filter_ in self.get_owner_filter_lookups(): filters |= models.Q(**{filter_: term}) qs = qs.filter(filters) - logger.debug("[Filer Search] filter_file query: %s", qs.query) return qs @property @@ -703,7 +678,6 @@ def response_action(self, request, files_queryset, folders_queryset): action = action_form.cleaned_data['action'] select_across = action_form.cleaned_data['select_across'] func, name, description = self.get_actions(request)[action] - print("[Action] Dispatching action=%s, func=%s" % (action, func.__name__)) # Get the list of selected PKs. If nothing's selected, we can't # perform an action on it, so bail. Except we want to perform @@ -731,10 +705,7 @@ def response_action(self, request, files_queryset, folders_queryset): files_queryset = files_queryset.filter(pk__in=selected_files) folders_queryset = folders_queryset.filter( pk__in=selected_folders) - print("[Action] selected_files=%s, selected_folders=%s" % (selected_files, selected_folders)) - print("[Action] Calling %s with files_qs count=%d, folders_qs count=%d" % ( - name, files_queryset.count(), folders_queryset.count())) response = func(self, request, files_queryset, folders_queryset) # Actions may return an HttpResponse, which will be used as the @@ -1255,10 +1226,6 @@ def extract_files(self, request, files_queryset, folders_queryset): from ..models import Archive success_format = "Successfully extracted archive {}." - # DEBUG: print to stdout (bypasses logging config) - file_data = list(files_queryset.values_list('pk', 'original_filename', 'file', 'polymorphic_ctype_id')) - print("[Extract] files_queryset count=%d, data=%s" % (files_queryset.count(), file_data)) - # Filter by zip file extension rather than polymorphic_ctype, # because zip files may have been uploaded as plain File instances zip_extensions = Archive._filename_extensions # ['.zip'] @@ -1269,35 +1236,23 @@ def extract_files(self, request, files_queryset, folders_queryset): extension_filter |= Q(file__iendswith=ext) files_queryset = files_queryset.filter(extension_filter) - filtered_data = list(files_queryset.values_list('pk', 'original_filename', 'file')) - print("[Extract] After extension filter: count=%d, data=%s" % (files_queryset.count(), filtered_data)) - if not files_queryset.exists(): - # Show the user exactly what files were selected and why they didn't match - debug_msg = ("No archive files were selected. " - "DEBUG: Selected files: %s. " - "Looking for extensions: %s" % (file_data, zip_extensions)) - print("[Extract] " + debug_msg) - self.message_user(request, debug_msg, level=messages.WARNING) + self.message_user(request, _("No archive files were selected."), + level=messages.WARNING) return None # cannot extract in unfiled files folder if files_queryset.filter(folder__isnull=True).exists(): - print("[Extract] Cannot extract in unfiled files folder") raise PermissionDenied if not has_multi_file_action_permission(request, files_queryset, Folder.objects.none()): - print("[Extract] Permission denied for multi file action") raise PermissionDenied def _as_archive(filer_file): """Convert a File instance to Archive so extract methods work.""" if isinstance(filer_file, Archive): - print("[Extract] File pk=%s is already an Archive" % filer_file.pk) return filer_file - print("[Extract] Converting File pk=%s (%s) to Archive (ctype=%s)" % ( - filer_file.pk, filer_file.original_filename, filer_file.polymorphic_ctype)) archive = Archive() archive.__dict__.update(filer_file.__dict__) archive.extract_errors = [] @@ -1305,7 +1260,6 @@ def _as_archive(filer_file): def is_valid_archive(filer_file): is_valid = filer_file.is_valid() - print("[Extract] is_valid pk=%s: %s" % (filer_file.pk, is_valid)) if not is_valid: error_format = "{} is not a valid zip file" message = error_format.format(filer_file.clean_actual_name) @@ -1314,7 +1268,6 @@ def is_valid_archive(filer_file): def has_collisions(filer_file): collisions = filer_file.collisions() - print("[Extract] collisions pk=%s: %s" % (filer_file.pk, collisions)) if collisions: error_format = "Files/Folders from {archive} with names:" error_format += "{names} already exist." @@ -1330,22 +1283,18 @@ def has_collisions(filer_file): for f in files_queryset: f = _as_archive(f) if not is_valid_archive(f) or has_collisions(f): - print("[Extract] Skipping pk=%s (invalid or collisions)" % f.pk) continue - print("[Extract] Extracting pk=%s (%s)" % (f.pk, f.original_filename)) try: f.extract() message = success_format.format(f.actual_name) - print("[Extract] Success: %s" % message) self.message_user(request, _(message)) for err_msg in f.extract_errors: - print("[Extract] Warning: %s: %s" % (f.actual_name, err_msg)) messages.warning( request, _("%s: %s" % (f.actual_name, err_msg)) ) except Exception as e: - logger.exception("[Extract] Exception extracting file pk=%s: %s", f.pk, e) + logger.exception("Exception extracting file pk=%s: %s", f.pk, e) messages.error(request, _("Error extracting %s: %s" % (f.actual_name, str(e)))) return None diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index 2a6633370..2c64c9a41 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -88,27 +88,19 @@ document.addEventListener('DOMContentLoaded', () => { body.dataset.maxFiles = dropzoneBase.dataset.maxFiles; body.dataset.maxFilesize = dropzoneBase.dataset.maxFilesize; body.classList.add('js-filer-dropzone'); - console.log('[Filer DnD] dropzoneBase found, url:', baseUrl, 'folder:', baseFolderTitle); - } else { - console.log('[Filer DnD] No .js-filer-dropzone-base element found on page'); } Cl.mediator.subscribe('filer-upload-in-progress', destroyDropzones); dropzones = document.querySelectorAll(dropzoneSelector); - console.log('[Filer DnD] Found', dropzones.length, 'dropzone elements (.js-filer-dropzone)'); if (dropzones.length && Dropzone) { Dropzone.autoDiscover = false; dropzones.forEach((dropzoneElement) => { if (dropzoneElement.dropzone) { - console.log('[Filer DnD] Skipping element (already has dropzone):', dropzoneElement.tagName, dropzoneElement.className); return; } const dropzoneUrl = dropzoneElement.dataset.url; - console.log('[Filer DnD] Creating Dropzone instance for', dropzoneElement.tagName, - 'url:', dropzoneUrl, 'maxFiles:', dropzoneElement.dataset.maxFiles, - 'maxFilesize:', dropzoneElement.dataset.maxFilesize); const dropzoneInstance = new Dropzone(dropzoneElement, { url: dropzoneUrl, paramName: 'file', @@ -120,7 +112,6 @@ document.addEventListener('DOMContentLoaded', () => { parallelUploads: dropzoneElement.dataset[dataUploaderConnections] || 3, accept: (file, done) => { let uploadInfoClone; - console.log('[Filer DnD] accept:', file.name, 'url:', dropzoneUrl); Cl.mediator.remove('filer-upload-in-progress', destroyDropzones); Cl.mediator.publish('filer-upload-in-progress'); @@ -157,7 +148,6 @@ document.addEventListener('DOMContentLoaded', () => { submitNum++; maxSubmitNum++; - console.log('[Filer DnD] file accepted, submitNum:', submitNum, 'maxSubmitNum:', maxSubmitNum); updateUploadNumber(); done(); } @@ -236,7 +226,6 @@ document.addEventListener('DOMContentLoaded', () => { } }, sending: (file) => { - console.log('[Filer DnD] sending:', file.name, 'to:', dropzoneUrl); const fileEl = getElementByFile(file, dropzoneUrl); if (fileEl) { fileEl.classList.remove(hiddenClass); @@ -253,7 +242,6 @@ document.addEventListener('DOMContentLoaded', () => { }, success: (file, response) => { submitNum--; - console.log('[Filer DnD] success:', file.name, 'submitNum:', submitNum, 'response:', response); updateUploadNumber(); const fileEl = getElementByFile(file, dropzoneUrl); if (fileEl) { @@ -261,9 +249,7 @@ document.addEventListener('DOMContentLoaded', () => { } }, queuecomplete: () => { - console.log('[Filer DnD] queuecomplete: submitNum:', submitNum, 'hasErrors:', hasErrors); if (submitNum !== 0) { - console.warn('[Filer DnD] queuecomplete: submitNum is not 0, skipping reload'); return; } @@ -280,7 +266,6 @@ document.addEventListener('DOMContentLoaded', () => { if (uploadNumber) { uploadNumber.classList.add(hiddenClass); } - console.log('[Filer DnD] reloading after errors (1s delay)'); setTimeout(() => { reloadOrdered(); }, 1000); @@ -288,19 +273,14 @@ document.addEventListener('DOMContentLoaded', () => { if (uploadSuccess) { uploadSuccess.classList.remove(hiddenClass); } - console.log('[Filer DnD] reloading now via reloadOrdered'); reloadOrdered(); } }, error: (file, error) => { - console.error('[Filer DnD] error:', file.name, 'error:', error, 'submitNum:', submitNum); if (error === 'duplicate') { - // submitNum was never incremented for duplicates - console.log('[Filer DnD] duplicate file, ignoring'); return; } submitNum--; - console.log('[Filer DnD] after error decrement, submitNum:', submitNum); updateUploadNumber(); const fileEl = getElementByFile(file, dropzoneUrl); if (fileEl) { @@ -324,7 +304,5 @@ document.addEventListener('DOMContentLoaded', () => { }); } }); - } else { - console.warn('[Filer DnD] No dropzone instances created. dropzones.length:', dropzones.length, 'Dropzone:', !!Dropzone); } }); diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index ff1695c57..1a42c7551 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),g=s.Int8Array,y=g&&g.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=g&&p(g),E=y&&p(y),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),F=!1,_={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},T={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(_,t)||l(T,t)};for(r in _)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in _)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in _)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in F=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),_)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:F&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in _)if(l(_,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in _){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in _)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&g[e]||t)}catch(e){}}for(r in _)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(_,t)||l(T,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,g=n(3070).f,y=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],F=C,_=r[k],T=_&&_[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},D=function(e){return[255&e,e>>8&255]},j=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},U=function(e){return R(e,23,4)},P=function(e){return R(e,52,8)},N=function(e,t){g(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in F||s(F,W,C[W]);H.constructor=F}v&&h(T)!==I&&v(T,I);var Q=new _(new F(2)),X=T.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(T,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else F=function(e){c(this,F,S);var t=f(e);E(this,{bytes:y.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},_=function(e,t,n){c(this,_,k),c(e,F,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(F,"byteLength"),N(_,"buffer"),N(_,"byteLength"),N(_,"byteOffset")),a(_[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,D,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,D,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,j,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,P,t,arguments.length>2?arguments[2]:void 0)}});b(F,S),b(_,k),e.exports={ArrayBuffer:F,DataView:_}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:void 0,y=void 0!==g,b=c(h),w=0;if(y&&(g=r(g,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=y?g(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=y?o(d,g,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,g){for(var y,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=g||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(y=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return k;case 2:l.call(A,y)}else switch(e){case 4:return!1;case 7:l.call(A,y)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var g=/./[h],y=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=y[0],w=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[g++]=255&c,c/=256,s-=8);for(l=l<0;d[g++]=255&l,l/=256,f-=8);return d[--g]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,g=v.has,y=v.set;r=function(e,t){return t.facade=e,y.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return g.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,g=0;m>g;)p=v[g++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/g))throw RangeError(i);for(f+=(m-d)*g,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var y=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(y0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),g=n(648),y=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),F=n(9587),_=C.get,T=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,D=l.DataView,j=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,U=a.TypedArray,P=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return _(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=g(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&y(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(j||(A.f=X,L.f=V,Y(P,"buffer"),Y(P,"byteOffset"),Y(P,"byteLength"),Y(P,"length")),r({target:"Object",stat:!0,forced:!j},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,g=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=_(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=_(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};j?s&&(m=t(function(e,t,n,r){return c(e,m,a),F(y(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,U),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=g):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(y(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(T(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new D(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,g=o(p);if(null!=g&&!s(g))for(f=(d=g.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",g=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),y=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!g||!y},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),g=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,g);for(r=new(void 0===n?Array:n)(h(g-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;pg-r+n;p--)delete m[p-1]}else if(n>r)for(p=g-r;p>y;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var g=i(e),y=String(this),b="function"==typeof r;b||(r=String(r));var w=g.global;if(w){var x=g.unicode;g.lastIndex=0}for(var E=[];;){var S=u(g,y);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(g.lastIndex=l(y,o(g.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=y.slice(L,F)+R,L=F+C.length)}return k+y.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),g=d.unicode,y=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",y),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),g=n(30),y=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,F=u.getterFor(L),_=u.getterFor(A),T=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(T," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,D={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},j=function(e){return D[e]},O=function(e){return encodeURIComponent(e).replace(q,j)},U=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:P}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else U(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=F(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=F(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=F(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=g(t,{body:y(0,String(n)),headers:y(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:F}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),g=n(1637),y=n(9909),b=a.URL,w=g.URLSearchParams,x=g.getState,E=y.set,S=y.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",F="Invalid port",_=/[A-Za-z]/,T=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,D=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,j=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,U=/[\t\u000A\u000D]/g,P=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),D.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(j.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&_.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ge={},ye={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(U,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!_.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(T.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ge:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ge:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var g=0;g65535)return F;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return F}f+=s;break;case ge:if(e.scheme="file","/"==s||"\\"==s)c=ye;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ye:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=P(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=Fe.call(r),r.origin=_e.call(r),r.protocol=Te.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=De.call(r),r.search=je.call(r),r.searchParams=Oe.call(r),r.hash=Ue.call(r))},Ce=Ae.prototype,Fe=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},_e=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Te=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},De=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},je=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Ue=function(){var e=S(this).fragment;return e?"#"+e:""},Pe=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:Pe(Fe,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:Pe(_e),protocol:Pe(Te,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:Pe(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=y.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=y.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===y.UPLOADING?y.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?y.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};y.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},y.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},y.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},y.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},y.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},y.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new y(this,e)})}),y.ADDED="added",y.QUEUED="queued",y.ACCEPTED=y.QUEUED,y.UPLOADING="uploading",y.PROCESSING=y.UPLOADING,y.CANCELED="canceled",y.ERROR="error",y.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),g=parseInt(n.dataset.maxFilesize||0,10);let y=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:g,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(y=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),y?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),y=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone:not(.js-filer-dropzone-base):not(.js-filer-dropzone-folder):not(.js-filer-dropzone-info-message)",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),g=document.querySelector(".js-filer-dropzone-upload-canceled"),y=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},F=()=>{n.forEach(e=>{e.destroy()})},_=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFilesize,e.classList.add("js-filer-dropzone"),console.log("[Filer DnD] dropzoneBase found, url:",S,"folder:",k)}else console.log("[Filer DnD] No .js-filer-dropzone-base element found on page");Cl.mediator.subscribe("filer-upload-in-progress",F),o=document.querySelectorAll(i),console.log("[Filer DnD] Found",o.length,"dropzone elements (.js-filer-dropzone)"),o.length&&l()?(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return void console.log("[Filer DnD] Skipping element (already has dropzone):",r.tagName,r.className);const p=r.dataset.url;console.log("[Filer DnD] Creating Dropzone instance for",r.tagName,"url:",p,"maxFiles:",r.dataset.maxFiles,"maxFilesize:",r.dataset.maxFilesize);const h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(console.log("[Filer DnD] accept:",n.name,"url:",p),Cl.mediator.remove("filer-upload-in-progress",F),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),y&&y.classList.remove(x),_(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,console.log("[Filer DnD] file accepted, submitNum:",e,"maxSubmitNum:",t),C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{console.log("[Filer DnD] sending:",e.name,"to:",p);const t=_(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=_(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,console.log("[Filer DnD] success:",t.name,"submitNum:",e,"response:",n),C();const r=_(t,p);r&&r.remove()},queuecomplete:()=>{console.log("[Filer DnD] queuecomplete: submitNum:",e,"hasErrors:",L),0===e?(C(),y&&y.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),console.log("[Filer DnD] reloading after errors (1s delay)"),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),console.log("[Filer DnD] reloading now via reloadOrdered"),A())):console.warn("[Filer DnD] queuecomplete: submitNum is not 0, skipping reload")},error:(t,n)=>{if(console.error("[Filer DnD] error:",t.name,"error:",n,"submitNum:",e),"duplicate"===n)return void console.log("[Filer DnD] duplicate file, ignoring");e--,console.log("[Filer DnD] after error decrement, submitNum:",e),C();const r=_(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),y&&y.addEventListener("click",e=>{e.preventDefault(),y.classList.add(x),g&&g.classList.remove(x),h.removeAllFiles(!0)})})):console.warn("[Filer DnD] No dropzone instances created. dropzones.length:",o.length,"Dropzone:",!!l())}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",g=()=>{h{h=e.offsetWidth,g()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},j=function(e){return[255&e,e>>8&255]},U=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,j,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,j=l.DataView,U=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(U||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};U?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new j(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,j={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},U=function(e){return j[e]},O=function(e){return encodeURIComponent(e).replace(q,U)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,j=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,U=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),j.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(U.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=je.call(r),r.search=Ue.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},je=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Ue=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone:not(.js-filer-dropzone-base):not(.js-filer-dropzone-folder):not(.js-filer-dropzone-info-message)",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},T=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFilesize,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),T(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=T(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=T(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,C();const r=T(t,p);r&&r.remove()},queuecomplete:()=>{0===e&&(C(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),A()))},error:(t,n)=>{if("duplicate"===n)return;e--,C();const r=T(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file From 8abf6c64fde8737bb0333448c90a313ebbd75a86 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 10 Jun 2026 15:00:00 +0300 Subject: [PATCH 32/51] BEN-2954: fix file uploads and edit --- filer/admin/archiveadmin.py | 5 ++--- filer/admin/clipboardadmin.py | 5 ++++- filer/admin/fileadmin.py | 5 +++++ filer/utils/files.py | 23 +++++++++++++++++++++-- 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/filer/admin/archiveadmin.py b/filer/admin/archiveadmin.py index f7e1f1214..2c30342b9 100644 --- a/filer/admin/archiveadmin.py +++ b/filer/admin/archiveadmin.py @@ -1,9 +1,8 @@ -from django import forms -from filer.admin.fileadmin import FileAdmin +from filer.admin.fileadmin import FileAdmin, FileAdminChangeFrom from filer.models import Archive -class ArchiveAdminForm(forms.ModelForm): +class ArchiveAdminForm(FileAdminChangeFrom): class Meta: model = Archive diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index 1f4ac6e1e..9f00f1930 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -109,7 +109,10 @@ def ajax_upload(request, folder_id=None): # Re-detect mime_type after truncation may have added an extension import mimetypes as _mimetypes guessed_type = _mimetypes.guess_type(filename)[0] - if guessed_type and mime_type == 'application/octet-stream': + if guessed_type and ( + mime_type == 'application/octet-stream' + or not _mimetypes.guess_all_extensions(mime_type) + ): mime_type = guessed_type # Get clipboard diff --git a/filer/admin/fileadmin.py b/filer/admin/fileadmin.py index 17b7b8c7a..7487e2846 100644 --- a/filer/admin/fileadmin.py +++ b/filer/admin/fileadmin.py @@ -46,6 +46,11 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if "file" in self.fields: self.fields["file"].widget = forms.FileInput() + # Pre-populate the "name" field with the original_filename when it is + # empty so that users see the current effective filename on first edit. + if self.instance and self.instance.pk and "name" in self.fields: + if not self.instance.name and self.instance.original_filename: + self.initial["name"] = self.instance.original_filename def clean(self): from ..validation import validate_upload diff --git a/filer/utils/files.py b/filer/utils/files.py index 2b87eed34..07c3cb74f 100644 --- a/filer/utils/files.py +++ b/filer/utils/files.py @@ -113,8 +113,27 @@ def handle_request_files_upload(request): mime_type = upload.content_type.lower() extensions = mimetypes.guess_all_extensions(mime_type) if mime_type != 'application/octet-stream' and extensions and iext.lower() not in extensions: - msg = "MIME-Type '{mimetype}' does not correspond to file extension of {filename}." - raise UploadException(msg.format(mimetype=mime_type, filename=filename)) + # The browser's content type doesn't match the file extension. + # Check if the file extension has its own known MIME type (e.g. + # browser sends image/webp for a .jpg file, or application/x-zip-compressed + # for a .zip file). + guessed_type = mimetypes.guess_type(filename)[0] + if guessed_type: + # Extension has a known type – use it instead of rejecting. + mime_type = guessed_type + elif iext: + # Extension exists but is not recognized by Python's mimetypes + # (e.g. .jfif). Trust the browser's content type rather than + # rejecting the upload. + pass + else: + # No file extension at all – trust the browser's content type. + pass + elif not extensions and mime_type != 'application/octet-stream': + # Browser sent an unrecognized MIME type; try to guess from filename + guessed_type = mimetypes.guess_type(filename)[0] + if guessed_type: + mime_type = guessed_type return upload, filename, is_raw, mime_type From c52912f99779eba6783eeeb8a3aa45ed0a66383e Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 10 Jun 2026 15:54:56 +0300 Subject: [PATCH 33/51] BEN-2954: rename filer versions --- filer/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filer/__init__.py b/filer/__init__.py index 5f45d5c29..03cc0b520 100644 --- a/filer/__init__.py +++ b/filer/__init__.py @@ -11,4 +11,4 @@ 7. Create a new release on github. """ -__version__ = '3.4.4+bento3.patch.1' +__version__ = '3.4.4+pbs.1' From bed9d6d7f63e2ce1cf898e6fce5fb65bc7f30532 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 10 Jun 2026 17:02:30 +0300 Subject: [PATCH 34/51] BEN-2954: add button --- filer/admin/common_admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filer/admin/common_admin.py b/filer/admin/common_admin.py index f9cadd9c6..c7771bc1a 100644 --- a/filer/admin/common_admin.py +++ b/filer/admin/common_admin.py @@ -126,7 +126,7 @@ def render_change_form(self, request, context, add=False, change=False, 'select_folder': selectfolder_status(request), }) return super(CommonModelAdmin, self).render_change_form( - request=request, context=context, add=False, + request=request, context=context, add=add, change=change, form_url=form_url, obj=obj) def response_change(self, request, obj): From dc8739a0a0f9642b08adf9eabac4baa8b7f221b5 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 10 Jun 2026 17:21:04 +0300 Subject: [PATCH 35/51] BEN-2954: test upload --- filer/admin/clipboardadmin.py | 34 ++++- filer/models/abstract.py | 32 +++-- .../static/filer/js/addons/table-dropzone.js | 6 + .../static/filer/js/dist/filer-base.bundle.js | 2 +- test_image_upload.py | 120 ++++++++++++++++++ 5 files changed, 178 insertions(+), 16 deletions(-) create mode 100644 test_image_upload.py diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index 9f00f1930..d4eccbe42 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -1,3 +1,5 @@ +import logging + from django.contrib import admin, messages from django.core.exceptions import ValidationError from django.forms.models import modelform_factory @@ -75,6 +77,7 @@ def ajax_upload(request, folder_id=None): """ Receives an upload from the uploader. Receives only one file at a time. """ + logger = logging.getLogger(__name__) if not request.user.has_perm("filer.add_file"): messages.error(request, NO_PERMISSIONS) @@ -95,12 +98,16 @@ def ajax_upload(request, folder_id=None): messages.error(request, NO_PERMISSIONS_FOR_FOLDER) return JsonResponse({'error': NO_PERMISSIONS_FOR_FOLDER}) - if len(request.FILES) == 1: - # don't check if request is ajax or not, just grab the file - upload, filename, is_raw, mime_type = handle_request_files_upload(request) - else: - # else process the request as usual - upload, filename, is_raw, mime_type = handle_upload(request) + try: + if len(request.FILES) == 1: + # don't check if request is ajax or not, just grab the file + upload, filename, is_raw, mime_type = handle_request_files_upload(request) + else: + # else process the request as usual + upload, filename, is_raw, mime_type = handle_upload(request) + except Exception as e: + logger.exception("[ajax_upload] Error handling upload: %s", e) + return JsonResponse({'error': str(e)}) # Truncate long filenames filename = truncate_filename(upload, maxlen=100) @@ -115,6 +122,9 @@ def ajax_upload(request, folder_id=None): ): mime_type = guessed_type + logger.debug("[ajax_upload] filename=%s, mime_type=%s, size=%s", + filename, mime_type, getattr(upload, 'size', '?')) + # Get clipboard clipboard = Clipboard.objects.get_or_create(user=request.user)[0] @@ -134,6 +144,7 @@ def ajax_upload(request, folder_id=None): fields=('original_filename', 'owner', 'file') ) break + logger.debug("[ajax_upload] matched file type: %s", FileSubClass.__name__) uploadform = FileForm({'original_filename': filename, 'owner': request.user.pk}, {'file': upload}) uploadform.request = request @@ -145,10 +156,16 @@ def ajax_upload(request, folder_id=None): # Enforce the FILER_IS_PUBLIC_DEFAULT file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT except ValidationError as error: + logger.warning("[ajax_upload] Validation error for '%s': %s", filename, error) messages.error(request, str(error)) return JsonResponse({'error': str(error)}) file_obj.folder = folder - file_obj.save() + try: + file_obj.save() + except Exception as error: + logger.exception("[ajax_upload] Error saving file '%s': %s", filename, error) + messages.error(request, str(error)) + return JsonResponse({'error': str(error)}) clipboard_item = ClipboardItem( clipboard=clipboard, file=file_obj) clipboard_item.save() @@ -170,9 +187,12 @@ def ajax_upload(request, folder_id=None): data['original_image'] = file_obj.url return JsonResponse(data) except Exception as error: + logger.exception("[ajax_upload] Error building response for '%s': %s", filename, error) messages.error(request, str(error)) return JsonResponse({"error": str(error)}) else: + logger.warning("[ajax_upload] Form invalid for '%s' (mime=%s, type=%s): %s", + filename, mime_type, FileSubClass.__name__, uploadform.errors.as_text()) for key, error_list in uploadform.errors.items(): for error in error_list: messages.error(request, error) diff --git a/filer/models/abstract.py b/filer/models/abstract.py index 499e21624..d6d552ee2 100644 --- a/filer/models/abstract.py +++ b/filer/models/abstract.py @@ -139,7 +139,14 @@ def file_data_changed(self, post_init=False): self._width, self._height = pil_image.size self._transparent = easy_thumbnails.utils.is_transparent(pil_image) imgfile.seek(0) - except Exception: + except Exception as e: + import logging + logging.getLogger(__name__).warning( + "Could not read image dimensions for '%s' (mime=%s): %s: %s", + getattr(self, 'original_filename', '?'), + getattr(self, 'mime_type', '?'), + type(e).__name__, e, + ) if post_init is False: # in case `imgfile` could not be found, unset dimensions # but only if not initialized by loading a fixture file @@ -155,13 +162,22 @@ def clean(self): # Only check pixel size for new uploads (no pk yet) if self.file and FILER_MAX_IMAGE_PIXELS and not self.pk: if self._width is None or self._height is None: - # If image size exceeds Pillow's max image size, Pillow will not return width or height - pixels = 2 * FILER_MAX_IMAGE_PIXELS + 1 - aspect = 16 / 9 - else: - width, height = max(1, self.width), max(1, self.height) - pixels: int = width * height - aspect: float = width / height + # Image dimensions could not be determined – this could mean + # the image format is not recognized by Pillow or the image is + # too large for Pillow to handle. + msg = _( + "Image \"%(filename)s\" could not be processed: format not recognized or image " + "too large. Supported formats: JPEG, PNG, GIF, WebP, SVG. " + "Max resolution: %(max_pixels)d million pixels." + ) % dict( + filename=self.original_filename or '?', + max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, + ) + raise ValidationError(str(msg), code="image_size") + + width, height = max(1, self.width), max(1, self.height) + pixels: int = width * height + aspect: float = width / height res_x: int = int((FILER_MAX_IMAGE_PIXELS * aspect) ** 0.5) res_y: int = int(res_x / aspect) if pixels > 2 * FILER_MAX_IMAGE_PIXELS: diff --git a/filer/static/filer/js/addons/table-dropzone.js b/filer/static/filer/js/addons/table-dropzone.js index 2c64c9a41..377700694 100644 --- a/filer/static/filer/js/addons/table-dropzone.js +++ b/filer/static/filer/js/addons/table-dropzone.js @@ -247,6 +247,12 @@ document.addEventListener('DOMContentLoaded', () => { if (fileEl) { fileEl.remove(); } + if (response && response.error) { + hasErrors = true; + if (window.filerShowError) { + window.filerShowError(`${file.name}: ${response.error}`); + } + } }, queuecomplete: () => { if (submitNum !== 0) { diff --git a/filer/static/filer/js/dist/filer-base.bundle.js b/filer/static/filer/js/dist/filer-base.bundle.js index 1a42c7551..4b0a12dad 100644 --- a/filer/static/filer/js/dist/filer-base.bundle.js +++ b/filer/static/filer/js/dist/filer-base.bundle.js @@ -1,2 +1,2 @@ /*! For license information please see filer-base.bundle.js.LICENSE.txt */ -(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},j=function(e){return[255&e,e>>8&255]},U=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,j,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,j=l.DataView,U=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(U||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};U?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new j(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,j={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},U=function(e){return j[e]},O=function(e){return encodeURIComponent(e).replace(q,U)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,j=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,U=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),j.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(U.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=je.call(r),r.search=Ue.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},je=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Ue=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone:not(.js-filer-dropzone-base):not(.js-filer-dropzone-folder):not(.js-filer-dropzone-info-message)",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},T=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFilesize,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),T(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=T(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=T(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,C();const r=T(t,p);r&&r.remove()},queuecomplete:()=>{0===e&&(C(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),A()))},error:(t,n)=>{if("duplicate"===n)return;e--,C();const r=T(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file +(()=>{var e={117(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=document.getElementById("destination");if(!e)return;const t=e.querySelectorAll("option"),n=t.length,r=document.querySelector(".js-submit-copy-move"),i=document.querySelector(".js-disabled-btn-tooltip");1===n&&t[0].disabled&&(r&&(r.style.display="none"),i&&(i.style.display="inline-block")),Cl.filerTooltip&&Cl.filerTooltip()})},413(){"use strict";(()=>{const e="filer-dropdown-backdrop",t='[data-toggle="filer-dropdown"]';class n{constructor(e){this.element=e,e.addEventListener("click",()=>this.toggle())}toggle(){const t=this.element,n=r(t),o=n.classList.contains("open"),s={relatedTarget:t};if(t.disabled||t.classList.contains("disabled"))return!1;if(i(),!o){if("ontouchstart"in document.documentElement&&!n.closest(".navbar-nav")){const n=document.createElement("div");n.className=e,t.parentNode.insertBefore(n,t.nextSibling),n.addEventListener("click",i)}const r=new CustomEvent("show.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:s});if(n.dispatchEvent(r),r.defaultPrevented)return!1;t.focus(),t.setAttribute("aria-expanded","true"),n.classList.add("open");const o=new CustomEvent("shown.bs.filer-dropdown",{bubbles:!0,detail:s});n.dispatchEvent(o)}return!1}keydown(e){const n=this.element,i=r(n),o=i.classList.contains("open"),s=Array.from(i.querySelectorAll(".filer-dropdown-menu li:not(.disabled):visible a")).filter(e=>null!==e.offsetParent),a=s.indexOf(e.target);if(!/(38|40|27|32)/.test(e.which)||/input|textarea/i.test(e.target.tagName))return;if(e.preventDefault(),e.stopPropagation(),n.disabled||n.classList.contains("disabled"))return;if(!o&&27!==e.which||o&&27===e.which)return 27===e.which&&i.querySelector(t)?.focus(),n.click();if(!s.length)return;let l=a;38===e.which&&a>0&&l--,40===e.which&&ae.remove()),document.querySelectorAll(t).forEach(e=>{const t=r(e),i={relatedTarget:e};if(!t.classList.contains("open"))return;if(n&&"click"===n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(n.target))return;const o=new CustomEvent("hide.bs.filer-dropdown",{bubbles:!0,cancelable:!0,detail:i});if(t.dispatchEvent(o),o.defaultPrevented)return;e.setAttribute("aria-expanded","false"),t.classList.remove("open");const s=new CustomEvent("hidden.bs.filer-dropdown",{bubbles:!0,detail:i});t.dispatchEvent(s)}))}function o(e){return this.forEach(t=>{let r=t._filerDropdownInstance;r||(r=new n(t),t._filerDropdownInstance=r),"string"==typeof e&&r[e].call(t)}),this}NodeList.prototype.dropdown||(NodeList.prototype.dropdown=function(e){return o.call(this,e)}),HTMLCollection.prototype.dropdown||(HTMLCollection.prototype.dropdown=function(e){return o.call(this,e)}),document.addEventListener("click",i),document.addEventListener("click",e=>{e.target.closest(".filer-dropdown form")&&e.stopPropagation()}),document.addEventListener("click",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.toggle(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(t);if(r){const t=r._filerDropdownInstance||new n(r);r._filerDropdownInstance||(r._filerDropdownInstance=t),t.keydown(e)}}),document.addEventListener("keydown",e=>{const r=e.target.closest(".filer-dropdown-menu");if(r){const i=r.parentNode.querySelector(t);if(i){const t=i._filerDropdownInstance||new n(i);i._filerDropdownInstance||(i._filerDropdownInstance=t),t.keydown(e)}}}),window.FilerDropdown=n})()},577(){!function(){"use strict";const e=document.getElementById("django-admin-popup-response-constants");let t;if(e)switch(t=JSON.parse(e.dataset.popupResponse),t.action){case"change":opener.dismissRelatedImageLookupPopup(window,t.new_value,null,t.obj,null);break;case"delete":opener.dismissDeleteRelatedObjectPopup(window,t.value);break;default:opener.dismissAddRelatedObjectPopup(window,t.value,t.obj)}}()},216(e,t,n){"use strict";n.d(t,{A:()=>r}),e=n.hmd(e),window.Cl=window.Cl||{},(()=>{class t{constructor(e={}){this.options={containerSelector:".js-focal-point",imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...e},this.focalPointInstances=[],this._init=this._init.bind(this)}_init(e){const t=new n(e,this.options);this.focalPointInstances.push(t)}initialize(){document.querySelectorAll(this.options.containerSelector).forEach(e=>{this._init(e)}),window.Cl.mediator&&window.Cl.mediator.subscribe("focal-point:init",this._init)}destroy(){window.Cl.mediator&&window.Cl.mediator.remove("focal-point:init",this._init),this.focalPointInstances.forEach(e=>{e.destroy()}),this.focalPointInstances=[]}}class n{constructor(e,t={}){this.options={imageSelector:".js-focal-point-image",circleSelector:".js-focal-point-circle",locationSelector:".js-focal-point-location",draggableClass:"draggable",hiddenClass:"hidden",dataLocation:"locationSelector",...t},this.container=e,this.image=this.container.querySelector(this.options.imageSelector),this.circle=this.container.querySelector(this.options.circleSelector),this.ratio=parseFloat(this.image?.dataset.ratio||1),this.location=this._getLocation(),this.isDragging=!1,this.dragStartX=0,this.dragStartY=0,this.circleStartX=0,this.circleStartY=0,this._onImageLoaded=this._onImageLoaded.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this.image?.complete?this._onImageLoaded():this.image&&this.image.addEventListener("load",this._onImageLoaded)}_updateLocationValue(e,t){const n=`${Math.round(e*this.ratio)},${Math.round(t*this.ratio)}`;this.location&&(this.location.value=n)}_getLocation(){const e=this.container.dataset[this.options.dataLocation];if(e){const t=document.querySelector(e);if(t)return t}return this.container.querySelector(this.options.locationSelector)}_makeDraggable(){this.circle&&(this.circle.classList.add(this.options.draggableClass),this.circle.addEventListener("mousedown",this._onMouseDown),this.circle.addEventListener("touchstart",this._onMouseDown,{passive:!1}))}_onMouseDown(e){e.preventDefault(),this.isDragging=!0;const t="touchstart"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect();this.dragStartX=t.clientX-n.left,this.dragStartY=t.clientY-n.top;const r=this.circle.getBoundingClientRect();this.circleStartX=r.left-n.left+r.width/2,this.circleStartY=r.top-n.top+r.height/2,document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),document.addEventListener("touchmove",this._onMouseMove,{passive:!1}),document.addEventListener("touchend",this._onMouseUp)}_onMouseMove(e){if(!this.isDragging)return;e.preventDefault();const t="touchmove"===e.type?e.touches[0]:e,n=this.container.getBoundingClientRect(),r=t.clientX-n.left,i=t.clientY-n.top,o=r-this.dragStartX,s=i-this.dragStartY;let a=this.circleStartX+o,l=this.circleStartY+s;a=Math.max(0,Math.min(n.width-1,a)),l=Math.max(0,Math.min(n.height-1,l)),this.circle.style.left=`${a}px`,this.circle.style.top=`${l}px`,this._updateLocationValue(a,l)}_onMouseUp(){this.isDragging=!1,document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp)}_onImageLoaded(){if(!this.image||0===this.image.naturalWidth)return;this.circle?.classList.remove(this.options.hiddenClass);const e=this.location?.value||"",t=this.image.offsetWidth,n=this.image.offsetHeight;let r,i;if(e.length){const t=e.split(",");r=Math.round(Number(t[0])/this.ratio),i=Math.round(Number(t[1])/this.ratio)}else r=t/2,i=n/2;isNaN(r)||isNaN(i)||(this.circle&&(this.circle.style.left=`${r}px`,this.circle.style.top=`${i}px`),this._makeDraggable(),this._updateLocationValue(r,i))}destroy(){this.circle?.classList.contains(this.options.draggableClass)&&(this.circle.removeEventListener("mousedown",this._onMouseDown),this.circle.removeEventListener("touchstart",this._onMouseDown)),document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),document.removeEventListener("touchmove",this._onMouseMove),document.removeEventListener("touchend",this._onMouseUp),this.image&&this.image.removeEventListener("load",this._onImageLoaded),this.options=null,this.container=null,this.image=null,this.circle=null,this.location=null,this.ratio=null}}window.Cl.FocalPoint=t,window.Cl.FocalPointConstructor=n,e.exports&&(e.exports=t)})();const r=window.Cl.FocalPoint},902(){"use strict";const e=e=>{const t=(e=(e=e.replace(/__dot__/g,".")).replace(/__dash__/g,"-")).lastIndexOf("__");return-1===t?e:e.substring(0,t)};window.dismissPopupAndReload=e=>{document.location.reload(),e.close()},window.dismissRelatedImageLookupPopup=(t,n,r,i,o)=>{const s=e(t.name),a=document.getElementById(s);if(!a)return;const l=a.closest(".filerFile");if(!l)return;const c=l.querySelector(".edit"),u=l.querySelector(".thumbnail_img"),d=l.querySelector(".description_text"),f=l.querySelector(".filerClearer"),p=l.parentElement.querySelector(".dz-message"),h=l.querySelector("input"),v=h.value;h.value=n;const m=h.closest(".js-filer-dropzone");m&&m.classList.add("js-object-attached"),r&&u&&(u.src=r,u.classList.remove("hidden"),u.removeAttribute("srcset")),d&&(d.textContent=i),f&&f.classList.remove("hidden"),a.classList.add("related-lookup-change"),c&&c.classList.add("related-lookup-change"),o&&c&&c.setAttribute("href",`${o}?_edit_from_widget=1`),p&&p.classList.add("hidden"),v!==n&&h.dispatchEvent(new Event("change",{bubbles:!0})),t.close()},window.dismissRelatedFolderLookupPopup=(t,n,r)=>{const i=e(t.name),o=document.getElementById(i);if(!o)return;const s=o.closest(".filerFile");if(!s)return;const a=s.querySelector(".thumbnail_img"),l=document.getElementById(`id_${i}_clear`),c=document.getElementById(`id_${i}`),u=s.querySelector(".description_text"),d=document.getElementById(i);c&&(c.value=n),a&&a.classList.remove("hidden"),u&&(u.textContent=r),l&&l.classList.remove("hidden"),d&&d.classList.add("hidden"),t.close()},document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".js-dismiss-popup").forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.dataset.fileId,n=this.dataset.iconUrl,r=this.dataset.label;if(this.classList.contains("js-dismiss-image")){const e=this.dataset.changeUrl||"";window.opener.dismissRelatedImageLookupPopup(window,t,n,r,e)}else this.classList.contains("js-dismiss-folder")&&window.opener.dismissRelatedFolderLookupPopup(window,t,r)})});const e=document.getElementById("popup-dismiss-data");if(e&&window.opener){const t=e.dataset.pk,n=e.dataset.label;window.opener.dismissRelatedPopup(window,t,n)}})},221(){"use strict";window.Cl=window.Cl||{},Cl.filerTooltip=()=>{const e=".js-filer-tooltip";document.querySelectorAll(e).forEach(t=>{t.addEventListener("mouseover",function(){const t=this.getAttribute("title");if(!t)return;this.dataset.filerTooltip=t,this.removeAttribute("title");const n=document.createElement("p");n.className="filer-tooltip",n.textContent=t;const r=document.querySelector(e);r&&r.appendChild(n)}),t.addEventListener("mouseout",function(){const e=this.dataset.filerTooltip;e&&this.setAttribute("title",e),document.querySelectorAll(".filer-tooltip").forEach(e=>{e.remove()})})})}},472(){"use strict";document.addEventListener("DOMContentLoaded",()=>{const e=e=>{e.preventDefault();const t=e.currentTarget,n=t.closest(".filerFile");if(!n)return;const r=n.querySelector("input"),i=n.querySelector(".thumbnail_img"),o=n.querySelector(".description_text"),s=n.querySelector(".lookup"),a=n.querySelector(".edit"),l=n.parentElement.querySelector(".dz-message"),c="hidden";if(t.classList.add(c),r&&(r.value=""),i){i.classList.add(c);var u=i.parentElement;"A"===u.tagName&&u.removeAttribute("href")}s&&s.classList.remove("related-lookup-change"),a&&a.classList.remove("related-lookup-change"),l&&l.classList.remove(c),o&&(o.textContent="")};document.querySelectorAll(".filerFile .vForeignKeyRawIdAdminField").forEach(e=>{e.setAttribute("type","hidden")}),document.querySelectorAll(".filerFile .filerClearer").forEach(t=>{t.addEventListener("click",e)})})},628(e){var t;self,t=function(){return function(){var e={3099:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},6077:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},1223:function(e,t,n){var r=n(5112),i=n(30),o=n(3070),s=r("unscopables"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},1530:function(e,t,n){"use strict";var r=n(8710).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},5787:function(e){e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},9670:function(e,t,n){var r=n(111);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},4019:function(e){e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},260:function(e,t,n){"use strict";var r,i=n(4019),o=n(9781),s=n(7854),a=n(111),l=n(6656),c=n(648),u=n(8880),d=n(1320),f=n(3070).f,p=n(9518),h=n(7674),v=n(5112),m=n(9711),y=s.Int8Array,g=y&&y.prototype,b=s.Uint8ClampedArray,w=b&&b.prototype,x=y&&p(y),E=g&&p(g),S=Object.prototype,k=S.isPrototypeOf,L=v("toStringTag"),A=m("TYPED_ARRAY_TAG"),C=i&&!!h&&"Opera"!==c(s.opera),_=!1,T={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},F={BigInt64Array:8,BigUint64Array:8},I=function(e){if(!a(e))return!1;var t=c(e);return l(T,t)||l(F,t)};for(r in T)s[r]||(C=!1);if((!C||"function"!=typeof x||x===Function.prototype)&&(x=function(){throw TypeError("Incorrect invocation")},C))for(r in T)s[r]&&h(s[r],x);if((!C||!E||E===S)&&(E=x.prototype,C))for(r in T)s[r]&&h(s[r].prototype,E);if(C&&p(w)!==E&&h(w,E),o&&!l(E,L))for(r in _=!0,f(E,L,{get:function(){return a(this)?this[A]:void 0}}),T)s[r]&&u(s[r],A,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:_&&A,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(k.call(x,e))return e}else for(var t in T)if(l(T,r)){var n=s[t];if(n&&(e===n||k.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(o){if(n)for(var r in T){var i=s[r];i&&l(i.prototype,e)&&delete i.prototype[e]}E[e]&&!n||d(E,e,n?t:C&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(o){if(h){if(n)for(r in T)(i=s[r])&&l(i,e)&&delete i[e];if(x[e]&&!n)return;try{return d(x,e,n?t:C&&y[e]||t)}catch(e){}}for(r in T)!(i=s[r])||i[e]&&!n||d(i,e,t)}},isView:function(e){if(!a(e))return!1;var t=c(e);return"DataView"===t||l(T,t)||l(F,t)},isTypedArray:I,TypedArray:x,TypedArrayPrototype:E}},3331:function(e,t,n){"use strict";var r=n(7854),i=n(9781),o=n(4019),s=n(8880),a=n(2248),l=n(7293),c=n(5787),u=n(9958),d=n(7466),f=n(7067),p=n(1179),h=n(9518),v=n(7674),m=n(8006).f,y=n(3070).f,g=n(1285),b=n(8003),w=n(9909),x=w.get,E=w.set,S="ArrayBuffer",k="DataView",L="prototype",A="Wrong index",C=r[S],_=C,T=r[k],F=T&&T[L],I=Object.prototype,M=r.RangeError,R=p.pack,z=p.unpack,q=function(e){return[255&e]},j=function(e){return[255&e,e>>8&255]},U=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},O=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return R(e,23,4)},D=function(e){return R(e,52,8)},N=function(e,t){y(e[L],t,{get:function(){return x(this)[t]}})},$=function(e,t,n,r){var i=f(n),o=x(e);if(i+t>o.byteLength)throw M(A);var s=x(o.buffer).bytes,a=i+o.byteOffset,l=s.slice(a,a+t);return r?l:l.reverse()},B=function(e,t,n,r,i,o){var s=f(n),a=x(e);if(s+t>a.byteLength)throw M(A);for(var l=x(a.buffer).bytes,c=s+a.byteOffset,u=r(+i),d=0;dG;)(W=Y[G++])in _||s(_,W,C[W]);H.constructor=_}v&&h(F)!==I&&v(F,I);var Q=new T(new _(2)),X=F.setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||a(F,{setInt8:function(e,t){X.call(this,e,t<<24>>24)},setUint8:function(e,t){X.call(this,e,t<<24>>24)}},{unsafe:!0})}else _=function(e){c(this,_,S);var t=f(e);E(this,{bytes:g.call(new Array(t),0),byteLength:t}),i||(this.byteLength=t)},T=function(e,t,n){c(this,T,k),c(e,_,k);var r=x(e).byteLength,o=u(t);if(o<0||o>r)throw M("Wrong offset");if(o+(n=void 0===n?r-o:d(n))>r)throw M("Wrong length");E(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)},i&&(N(_,"byteLength"),N(T,"buffer"),N(T,"byteLength"),N(T,"byteOffset")),a(T[L],{getInt8:function(e){return $(this,1,e)[0]<<24>>24},getUint8:function(e){return $(this,1,e)[0]},getInt16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=$(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return O($(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return z($(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return z($(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){B(this,1,e,q,t)},setUint8:function(e,t){B(this,1,e,q,t)},setInt16:function(e,t){B(this,2,e,j,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){B(this,2,e,j,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){B(this,4,e,U,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){B(this,4,e,P,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){B(this,8,e,D,t,arguments.length>2?arguments[2]:void 0)}});b(_,S),b(T,k),e.exports={ArrayBuffer:_,DataView:T}},1048:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466),s=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),a=o(n.length),l=i(e,a),c=i(t,a),u=arguments.length>2?arguments[2]:void 0,d=s((void 0===u?a:i(u,a))-c,a-l),f=1;for(c0;)c in n?n[l]=n[c]:delete n[l],l+=f,c+=f;return n}},1285:function(e,t,n){"use strict";var r=n(7908),i=n(1400),o=n(7466);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),l=s>2?arguments[2]:void 0,c=void 0===l?n:i(l,n);c>a;)t[a++]=e;return t}},8533:function(e,t,n){"use strict";var r=n(2092).forEach,i=n(9341)("forEach");e.exports=i?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:function(e,t,n){"use strict";var r=n(9974),i=n(7908),o=n(3411),s=n(7659),a=n(7466),l=n(6135),c=n(1246);e.exports=function(e){var t,n,u,d,f,p,h=i(e),v="function"==typeof this?this:Array,m=arguments.length,y=m>1?arguments[1]:void 0,g=void 0!==y,b=c(h),w=0;if(g&&(y=r(y,m>2?arguments[2]:void 0,2)),null==b||v==Array&&s(b))for(n=new v(t=a(h.length));t>w;w++)p=g?y(h[w],w):h[w],l(n,w,p);else for(f=(d=b.call(h)).next,n=new v;!(u=f.call(d)).done;w++)p=g?o(d,y,[u.value,w],!0):u.value,l(n,w,p);return n.length=w,n}},1318:function(e,t,n){var r=n(5656),i=n(7466),o=n(1400),s=function(e){return function(t,n,s){var a,l=r(t),c=i(l.length),u=o(s,c);if(e&&n!=n){for(;c>u;)if((a=l[u++])!=a)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},2092:function(e,t,n){var r=n(9974),i=n(8361),o=n(7908),s=n(7466),a=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,d=6==e,f=7==e,p=5==e||d;return function(h,v,m,y){for(var g,b,w=o(h),x=i(w),E=r(v,m,3),S=s(x.length),k=0,L=y||a,A=t?L(h,S):n||f?L(h,0):void 0;S>k;k++)if((p||k in x)&&(b=E(g=x[k],k,w),e))if(t)A[k]=b;else if(b)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:l.call(A,g)}else switch(e){case 4:return!1;case 7:l.call(A,g)}return d?-1:c||u?u:A}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},6583:function(e,t,n){"use strict";var r=n(5656),i=n(9958),o=n(7466),s=n(9341),a=Math.min,l=[].lastIndexOf,c=!!l&&1/[1].lastIndexOf(1,-0)<0,u=s("lastIndexOf"),d=c||!u;e.exports=d?function(e){if(c)return l.apply(this,arguments)||0;var t=r(this),n=o(t.length),s=n-1;for(arguments.length>1&&(s=a(s,i(arguments[1]))),s<0&&(s=n+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:l},1194:function(e,t,n){var r=n(7293),i=n(5112),o=n(7392),s=i("species");e.exports=function(e){return o>=51||!r(function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo})}},9341:function(e,t,n){"use strict";var r=n(7293);e.exports=function(e,t){var n=[][e];return!!n&&r(function(){n.call(null,t||function(){throw 1},1)})}},3671:function(e,t,n){var r=n(3099),i=n(7908),o=n(8361),s=n(7466),a=function(e){return function(t,n,a,l){r(n);var c=i(t),u=o(c),d=s(c.length),f=e?d-1:0,p=e?-1:1;if(a<2)for(;;){if(f in u){l=u[f],f+=p;break}if(f+=p,e?f<0:d<=f)throw TypeError("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=p)f in u&&(l=n(l,u[f],f,c));return l}};e.exports={left:a(!1),right:a(!0)}},5417:function(e,t,n){var r=n(111),i=n(3157),o=n(5112)("species");e.exports=function(e,t){var n;return i(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!i(n.prototype)?r(n)&&null===(n=n[o])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},3411:function(e,t,n){var r=n(9670),i=n(9212);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){throw i(e),t}}},7072:function(e,t,n){var r=n(5112)("iterator"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},e(o)}catch(e){}return n}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),i=n(4326),o=n(5112)("toStringTag"),s="Arguments"==i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:s?i(t):"Object"==(r=i(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),i=n(3887),o=n(1236),s=n(3070);e.exports=function(e,t){for(var n=i(t),a=s.f,l=o.f,c=0;c=74)&&(r=s.match(/Chrome\/(\d+)/))&&(i=r[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),i=n(1236).f,o=n(8880),s=n(1320),a=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,d,f,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||a(h,{}):(r[h]||{}).prototype)for(u in t){if(f=t[u],d=e.noTargetGet?(p=i(n,u))&&p.value:n[u],!c(v?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;l(f,d)}(e.sham||d&&d.sham)&&o(f,"sham",!0),s(n,u,f,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:function(e,t,n){"use strict";n(4916);var r=n(1320),i=n(7293),o=n(5112),s=n(2261),a=n(8880),l=o("species"),c=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),u="$0"==="a".replace(/./,"$0"),d=o("replace"),f=!!/./[d]&&""===/./[d]("a","$0"),p=!i(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]});e.exports=function(e,t,n,d){var h=o(e),v=!i(function(){var t={};return t[h]=function(){return 7},7!=""[e](t)}),m=v&&!i(function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[l]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t});if(!v||!m||"replace"===e&&(!c||!u||f)||"split"===e&&!p){var y=/./[h],g=n(h,""[e],function(e,t,n,r,i){return t.exec===s?v&&!i?{done:!0,value:y.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}},{REPLACE_KEEPS_$0:u,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),b=g[0],w=g[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return w.call(e,this,t)}:function(e){return w.call(e,this)})}d&&a(RegExp.prototype[h],"sham",!0)}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),i=n(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e])||o(i[e]):r[e]&&r[e][t]||i[e]&&i[e][t]}},1246:function(e,t,n){var r=n(648),i=n(7497),o=n(5112)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},8554:function(e,t,n){var r=n(9670),i=n(1246);e.exports=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return r(t.call(e))}},647:function(e,t,n){var r=n(7908),i=Math.floor,o="".replace,s=/\$([$&'`]|\d\d?|<[^>]*>)/g,a=/\$([$&'`]|\d\d?)/g;e.exports=function(e,t,n,l,c,u){var d=n+e.length,f=l.length,p=a;return void 0!==c&&(c=r(c),p=s),o.call(u,p,function(r,o){var s;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(d);case"<":s=c[o.slice(1,-1)];break;default:var a=+o;if(0===a)return r;if(a>f){var u=i(a/10);return 0===u?r:u<=f?void 0===l[u-1]?o.charAt(1):l[u-1]+o.charAt(1):r}s=l[a-1]}return void 0===s?"":s})}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),i=n(7293),o=n(317);e.exports=!r&&!i(function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},1179:function(e){var t=Math.abs,n=Math.pow,r=Math.floor,i=Math.log,o=Math.LN2;e.exports={pack:function(e,s,a){var l,c,u,d=new Array(a),f=8*a-s-1,p=(1<>1,v=23===s?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,y=0;for((e=t(e))!=e||e===1/0?(c=e!=e?1:0,l=p):(l=r(i(e)/o),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+h>=1?v/u:v*n(2,1-h))*u>=2&&(l++,u/=2),l+h>=p?(c=0,l=p):l+h>=1?(c=(e*u-1)*n(2,s),l+=h):(c=e*n(2,h-1)*n(2,s),l=0));s>=8;d[y++]=255&c,c/=256,s-=8);for(l=l<0;d[y++]=255&l,l/=256,f-=8);return d[--y]|=128*m,d},unpack:function(e,t){var r,i=e.length,o=8*i-t-1,s=(1<>1,l=o-7,c=i-1,u=e[c--],d=127&u;for(u>>=7;l>0;d=256*d+e[c],c--,l-=8);for(r=d&(1<<-l)-1,d>>=-l,l+=t;l>0;r=256*r+e[c],c--,l-=8);if(0===d)d=1-a;else{if(d===s)return r?NaN:u?-1/0:1/0;r+=n(2,t),d-=a}return(u?-1:1)*r*n(2,d-t)}}},8361:function(e,t,n){var r=n(7293),i=n(4326),o="".split;e.exports=r(function(){return!Object("z").propertyIsEnumerable(0)})?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},9587:function(e,t,n){var r=n(111),i=n(7674);e.exports=function(e,t,n){var o,s;return i&&"function"==typeof(o=t.constructor)&&o!==n&&r(s=o.prototype)&&s!==n.prototype&&i(e,s),e}},2788:function(e,t,n){var r=n(5465),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return i.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,i,o,s=n(8536),a=n(7854),l=n(111),c=n(8880),u=n(6656),d=n(5465),f=n(6200),p=n(3501),h=a.WeakMap;if(s){var v=d.state||(d.state=new h),m=v.get,y=v.has,g=v.set;r=function(e,t){return t.facade=e,g.call(v,e,t),t},i=function(e){return m.call(v,e)||{}},o=function(e){return y.call(v,e)}}else{var b=f("state");p[b]=!0,r=function(e,t){return t.facade=e,c(e,b,t),t},i=function(e){return u(e,b)?e[b]:{}},o=function(e){return u(e,b)}}e.exports={set:r,get:i,has:o,enforce:function(e){return o(e)?i(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},7659:function(e,t,n){var r=n(5112),i=n(7497),o=r("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),i=/#|\.prototype\./,o=function(e,t){var n=a[s(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},s=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},a=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},7850:function(e,t,n){var r=n(111),i=n(4326),o=n(5112)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},9212:function(e,t,n){var r=n(9670);e.exports=function(e){var t=e.return;if(void 0!==t)return r(t.call(e)).value}},3383:function(e,t,n){"use strict";var r,i,o,s=n(7293),a=n(9518),l=n(8880),c=n(6656),u=n(5112),d=n(1913),f=u("iterator"),p=!1;[].keys&&("next"in(o=[].keys())?(i=a(a(o)))!==Object.prototype&&(r=i):p=!0);var h=null==r||s(function(){var e={};return r[f].call(e)!==e});h&&(r={}),d&&!h||c(r,f)||l(r,f,function(){return this}),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},7497:function(e){e.exports={}},133:function(e,t,n){var r=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})},590:function(e,t,n){var r=n(7293),i=n(5112),o=n(1913),s=i("iterator");e.exports=!r(function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach(function(e,r){t.delete("b"),n+=r+e}),o&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})},8536:function(e,t,n){var r=n(7854),i=n(2788),o=r.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},1574:function(e,t,n){"use strict";var r=n(9781),i=n(7293),o=n(1956),s=n(5181),a=n(5296),l=n(7908),c=n(8361),u=Object.assign,d=Object.defineProperty;e.exports=!u||i(function(){if(r&&1!==u({b:1},u(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||o(u({},t)).join("")!=i})?function(e,t){for(var n=l(e),i=arguments.length,u=1,d=s.f,f=a.f;i>u;)for(var p,h=c(arguments[u++]),v=d?o(h).concat(d(h)):o(h),m=v.length,y=0;m>y;)p=v[y++],r&&!f.call(h,p)||(n[p]=h[p]);return n}:u},30:function(e,t,n){var r,i=n(9670),o=n(6048),s=n(748),a=n(3501),l=n(490),c=n(317),u=n(6200),d="prototype",f="script",p=u("IE_PROTO"),h=function(){},v=function(e){return"<"+f+">"+e+""},m=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,n;m=r?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):(t=c("iframe"),n="java"+f+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=s.length;i--;)delete m[d][s[i]];return m()};a[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=i(e),n=new h,h[d]=null,n[p]=e):n=m(),void 0===t?n:o(n,t)}},6048:function(e,t,n){var r=n(9781),i=n(3070),o=n(9670),s=n(1956);e.exports=r?Object.defineProperties:function(e,t){o(e);for(var n,r=s(t),a=r.length,l=0;a>l;)i.f(e,n=r[l++],t[n]);return e}},3070:function(e,t,n){var r=n(9781),i=n(4664),o=n(9670),s=n(7593),a=Object.defineProperty;t.f=r?a:function(e,t,n){if(o(e),t=s(t,!0),o(n),i)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},1236:function(e,t,n){var r=n(9781),i=n(5296),o=n(9114),s=n(5656),a=n(7593),l=n(6656),c=n(4664),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=s(e),t=a(t,!0),c)try{return u(e,t)}catch(e){}if(l(e,t))return o(!i.f.call(e,t),e[t])}},8006:function(e,t,n){var r=n(6324),i=n(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},5181:function(e,t){t.f=Object.getOwnPropertySymbols},9518:function(e,t,n){var r=n(6656),i=n(7908),o=n(6200),s=n(8544),a=o("IE_PROTO"),l=Object.prototype;e.exports=s?Object.getPrototypeOf:function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?l:null}},6324:function(e,t,n){var r=n(6656),i=n(5656),o=n(1318).indexOf,s=n(3501);e.exports=function(e,t){var n,a=i(e),l=0,c=[];for(n in a)!r(s,n)&&r(a,n)&&c.push(n);for(;t.length>l;)r(a,n=t[l++])&&(~o(c,n)||c.push(n));return c}},1956:function(e,t,n){var r=n(6324),i=n(748);e.exports=Object.keys||function(e){return r(e,i)}},5296:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,i=r&&!n.call({1:2},1);t.f=i?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},7674:function(e,t,n){var r=n(9670),i=n(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,o){return r(n),i(o),t?e.call(n,o):n.__proto__=o,n}}():void 0)},288:function(e,t,n){"use strict";var r=n(1694),i=n(648);e.exports=r?{}.toString:function(){return"[object "+i(this)+"]"}},3887:function(e,t,n){var r=n(5005),i=n(8006),o=n(5181),s=n(9670);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=o.f;return n?t.concat(n(e)):t}},857:function(e,t,n){var r=n(7854);e.exports=r},2248:function(e,t,n){var r=n(1320);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1320:function(e,t,n){var r=n(7854),i=n(8880),o=n(6656),s=n(3505),a=n(2788),l=n(9909),c=l.get,u=l.enforce,d=String(String).split("String");(e.exports=function(e,t,n,a){var l,c=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;"function"==typeof n&&("string"!=typeof t||o(n,"name")||i(n,"name",t),(l=u(n)).source||(l.source=d.join("string"==typeof t?t:""))),e!==r?(c?!p&&e[t]&&(f=!0):delete e[t],f?e[t]=n:i(e,t,n)):f?e[t]=n:s(t,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&c(this).source||a(this)})},7651:function(e,t,n){var r=n(4326),i=n(2261);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var o=n.call(e,t);if("object"!=typeof o)throw TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(e,t)}},2261:function(e,t,n){"use strict";var r,i,o=n(7066),s=n(2999),a=RegExp.prototype.exec,l=String.prototype.replace,c=a,u=(r=/a/,i=/b*/g,a.call(r,"a"),a.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),d=s.UNSUPPORTED_Y||s.BROKEN_CARET,f=void 0!==/()??/.exec("")[1];(u||f||d)&&(c=function(e){var t,n,r,i,s=this,c=d&&s.sticky,p=o.call(s),h=s.source,v=0,m=e;return c&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),m=String(e).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==e[s.lastIndex-1])&&(h="(?: "+h+")",m=" "+m,v++),n=new RegExp("^(?:"+h+")",p)),f&&(n=new RegExp("^"+h+"$(?!\\s)",p)),u&&(t=s.lastIndex),r=a.call(c?n:s,m),c?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=s.lastIndex,s.lastIndex+=r[0].length):s.lastIndex=0:u&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),f&&r&&r.length>1&&l.call(r[0],n,function(){for(i=1;i=c?e?"":void 0:(o=a.charCodeAt(l))<55296||o>56319||l+1===c||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):o:e?a.slice(l,l+2):s-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},3197:function(e){"use strict";var t=2147483647,n=/[^\0-\u007E]/,r=/[.\u3002\uFF0E\uFF61]/g,i="Overflow: input needs wider integers to process",o=Math.floor,s=String.fromCharCode,a=function(e){return e+22+75*(e<26)},l=function(e,t,n){var r=0;for(e=n?o(e/700):e>>1,e+=o(e/t);e>455;r+=36)e=o(e/35);return o(r+36*e/(e+38))},c=function(e){var n=[];e=function(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n=d&&co((t-f)/y))throw RangeError(i);for(f+=(m-d)*y,d=m,r=0;rt)throw RangeError(i);if(c==d){for(var g=f,b=36;;b+=36){var w=b<=p?1:b>=p+26?26:b-p;if(g0?n:t)(e)}},7466:function(e,t,n){var r=n(9958),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},7908:function(e,t,n){var r=n(4488);e.exports=function(e){return Object(r(e))}},4590:function(e,t,n){var r=n(3002);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},3002:function(e,t,n){var r=n(9958);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},7593:function(e,t,n){var r=n(111);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},1694:function(e,t,n){var r={};r[n(5112)("toStringTag")]="z",e.exports="[object z]"===String(r)},9843:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(9781),s=n(3832),a=n(260),l=n(3331),c=n(5787),u=n(9114),d=n(8880),f=n(7466),p=n(7067),h=n(4590),v=n(7593),m=n(6656),y=n(648),g=n(111),b=n(30),w=n(7674),x=n(8006).f,E=n(7321),S=n(2092).forEach,k=n(6340),L=n(3070),A=n(1236),C=n(9909),_=n(9587),T=C.get,F=C.set,I=L.f,M=A.f,R=Math.round,z=i.RangeError,q=l.ArrayBuffer,j=l.DataView,U=a.NATIVE_ARRAY_BUFFER_VIEWS,O=a.TYPED_ARRAY_TAG,P=a.TypedArray,D=a.TypedArrayPrototype,N=a.aTypedArrayConstructor,$=a.isTypedArray,B="BYTES_PER_ELEMENT",W="Wrong length",H=function(e,t){for(var n=0,r=t.length,i=new(N(e))(r);r>n;)i[n]=t[n++];return i},Y=function(e,t){I(e,t,{get:function(){return T(this)[t]}})},G=function(e){var t;return e instanceof q||"ArrayBuffer"==(t=y(e))||"SharedArrayBuffer"==t},Q=function(e,t){return $(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},X=function(e,t){return Q(e,t=v(t,!0))?u(2,e[t]):M(e,t)},V=function(e,t,n){return!(Q(e,t=v(t,!0))&&g(n)&&m(n,"value"))||m(n,"get")||m(n,"set")||n.configurable||m(n,"writable")&&!n.writable||m(n,"enumerable")&&!n.enumerable?I(e,t,n):(e[t]=n.value,e)};o?(U||(A.f=X,L.f=V,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:X,defineProperty:V}),e.exports=function(e,t,n){var o=e.match(/\d+$/)[0]/8,a=e+(n?"Clamped":"")+"Array",l="get"+e,u="set"+e,v=i[a],m=v,y=m&&m.prototype,L={},A=function(e,t){I(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[l](t*o+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var i=T(e);n&&(r=(r=R(r))<0?0:r>255?255:255&r),i.view[u](t*o+i.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};U?s&&(m=t(function(e,t,n,r){return c(e,m,a),_(g(t)?G(t)?void 0!==r?new v(t,h(n,o),r):void 0!==n?new v(t,h(n,o)):new v(t):$(t)?H(m,t):E.call(m,t):new v(p(t)),e,m)}),w&&w(m,P),S(x(v),function(e){e in m||d(m,e,v[e])}),m.prototype=y):(m=t(function(e,t,n,r){c(e,m,a);var i,s,l,u=0,d=0;if(g(t)){if(!G(t))return $(t)?H(m,t):E.call(m,t);i=t,d=h(n,o);var v=t.byteLength;if(void 0===r){if(v%o)throw z(W);if((s=v-d)<0)throw z(W)}else if((s=f(r)*o)+d>v)throw z(W);l=s/o}else l=p(t),i=new q(s=l*o);for(F(e,{buffer:i,byteOffset:d,byteLength:s,length:l,view:new j(i)});uo;)a[o]=t[o++];return a}},7321:function(e,t,n){var r=n(7908),i=n(7466),o=n(1246),s=n(7659),a=n(9974),l=n(260).aTypedArrayConstructor;e.exports=function(e){var t,n,c,u,d,f,p=r(e),h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,y=o(p);if(null!=y&&!s(y))for(f=(d=y.call(p)).next,p=[];!(u=f.call(d)).done;)p.push(u.value);for(m&&h>2&&(v=a(v,arguments[2],2)),n=i(p.length),c=new(l(this))(n),t=0;n>t;t++)c[t]=m?v(p[t],t):p[t];return c}},9711:function(e){var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},3307:function(e,t,n){var r=n(133);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(e,t,n){var r=n(7854),i=n(2309),o=n(6656),s=n(9711),a=n(133),l=n(3307),c=i("wks"),u=r.Symbol,d=l?u:u&&u.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(u,e)?c[e]=u[e]:c[e]=d("Symbol."+e)),c[e]}},1361:function(e){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},8264:function(e,t,n){"use strict";var r=n(2109),i=n(7854),o=n(3331),s=n(6340),a="ArrayBuffer",l=o[a];r({global:!0,forced:i[a]!==l},{ArrayBuffer:l}),s(a)},2222:function(e,t,n){"use strict";var r=n(2109),i=n(7293),o=n(3157),s=n(111),a=n(7908),l=n(7466),c=n(6135),u=n(5417),d=n(1194),f=n(5112),p=n(7392),h=f("isConcatSpreadable"),v=9007199254740991,m="Maximum allowed index exceeded",y=p>=51||!i(function(){var e=[];return e[h]=!1,e.concat()[0]!==e}),g=d("concat"),b=function(e){if(!s(e))return!1;var t=e[h];return void 0!==t?!!t:o(e)};r({target:"Array",proto:!0,forced:!y||!g},{concat:function(e){var t,n,r,i,o,s=a(this),d=u(s,0),f=0;for(t=-1,r=arguments.length;tv)throw TypeError(m);for(n=0;n=v)throw TypeError(m);c(d,f++,o)}return d.length=f,d}})},7327:function(e,t,n){"use strict";var r=n(2109),i=n(2092).filter;r({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},2772:function(e,t,n){"use strict";var r=n(2109),i=n(1318).indexOf,o=n(9341),s=[].indexOf,a=!!s&&1/[1].indexOf(1,-0)<0,l=o("indexOf");r({target:"Array",proto:!0,forced:a||!l},{indexOf:function(e){return a?s.apply(this,arguments)||0:i(this,e,arguments.length>1?arguments[1]:void 0)}})},6992:function(e,t,n){"use strict";var r=n(5656),i=n(1223),o=n(7497),s=n(9909),a=n(654),l="Array Iterator",c=s.set,u=s.getterFor(l);e.exports=a(Array,"Array",function(e,t){c(this,{type:l,target:r(e),index:0,kind:t})},function(){var e=u(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},1249:function(e,t,n){"use strict";var r=n(2109),i=n(2092).map;r({target:"Array",proto:!0,forced:!n(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7042:function(e,t,n){"use strict";var r=n(2109),i=n(111),o=n(3157),s=n(1400),a=n(7466),l=n(5656),c=n(6135),u=n(5112),d=n(1194)("slice"),f=u("species"),p=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!d},{slice:function(e,t){var n,r,u,d=l(this),v=a(d.length),m=s(e,v),y=s(void 0===t?v:t,v);if(o(d)&&("function"!=typeof(n=d.constructor)||n!==Array&&!o(n.prototype)?i(n)&&null===(n=n[f])&&(n=void 0):n=void 0,n===Array||void 0===n))return p.call(d,m,y);for(r=new(void 0===n?Array:n)(h(y-m,0)),u=0;m9007199254740991)throw TypeError("Maximum allowed length exceeded");for(u=l(m,r),p=0;py-r+n;p--)delete m[p-1]}else if(n>r)for(p=y-r;p>g;p--)v=p+n-1,(h=p+r-1)in m?m[v]=m[h]:delete m[v];for(p=0;p=n.length?{value:void 0,done:!0}:(e=r(n,i),t.index+=e.length,{value:e,done:!1})})},4723:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(4488),a=n(1530),l=n(7651);r("match",1,function(e,t,n){return[function(t){var n=s(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var s=i(e),c=String(this);if(!s.global)return l(s,c);var u=s.unicode;s.lastIndex=0;for(var d,f=[],p=0;null!==(d=l(s,c));){var h=String(d[0]);f[p]=h,""===h&&(s.lastIndex=a(c,o(s.lastIndex),u)),p++}return 0===p?null:f}]})},5306:function(e,t,n){"use strict";var r=n(7007),i=n(9670),o=n(7466),s=n(9958),a=n(4488),l=n(1530),c=n(647),u=n(7651),d=Math.max,f=Math.min,p=function(e){return void 0===e?e:String(e)};r("replace",2,function(e,t,n,r){var h=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,m=h?"$":"$0";return[function(n,r){var i=a(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!h&&v||"string"==typeof r&&-1===r.indexOf(m)){var a=n(t,e,this,r);if(a.done)return a.value}var y=i(e),g=String(this),b="function"==typeof r;b||(r=String(r));var w=y.global;if(w){var x=y.unicode;y.lastIndex=0}for(var E=[];;){var S=u(y,g);if(null===S)break;if(E.push(S),!w)break;""===String(S[0])&&(y.lastIndex=l(g,o(y.lastIndex),x))}for(var k="",L=0,A=0;A=L&&(k+=g.slice(L,_)+R,L=_+C.length)}return k+g.slice(L)}]})},3123:function(e,t,n){"use strict";var r=n(7007),i=n(7850),o=n(9670),s=n(4488),a=n(6707),l=n(1530),c=n(7466),u=n(7651),d=n(2261),f=n(7293),p=[].push,h=Math.min,v=4294967295,m=!f(function(){return!RegExp(v,"y")});r("split",2,function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(s(this)),o=void 0===n?v:n>>>0;if(0===o)return[];if(void 0===e)return[r];if(!i(e))return t.call(r,e,o);for(var a,l,c,u=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=new RegExp(e.source,f+"g");(a=d.call(m,r))&&!((l=m.lastIndex)>h&&(u.push(r.slice(h,a.index)),a.length>1&&a.index=o));)m.lastIndex===a.index&&m.lastIndex++;return h===r.length?!c&&m.test("")||u.push(""):u.push(r.slice(h)),u.length>o?u.slice(0,o):u}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=s(this),o=null==t?void 0:t[e];return void 0!==o?o.call(t,i,n):r.call(String(i),t,n)},function(e,i){var s=n(r,e,this,i,r!==t);if(s.done)return s.value;var d=o(e),f=String(this),p=a(d,RegExp),y=d.unicode,g=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(m?"y":"g"),b=new p(m?d:"^(?:"+d.source+")",g),w=void 0===i?v:i>>>0;if(0===w)return[];if(0===f.length)return null===u(b,f)?[f]:[];for(var x=0,E=0,S=[];E2?arguments[2]:void 0)})},8927:function(e,t,n){"use strict";var r=n(260),i=n(2092).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3105:function(e,t,n){"use strict";var r=n(260),i=n(1285),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",function(e){return i.apply(o(this),arguments)})},5035:function(e,t,n){"use strict";var r=n(260),i=n(2092).filter,o=n(3074),s=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",function(e){var t=i(s(this),e,arguments.length>1?arguments[1]:void 0);return o(this,t)})},7174:function(e,t,n){"use strict";var r=n(260),i=n(2092).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4345:function(e,t,n){"use strict";var r=n(260),i=n(2092).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},2846:function(e,t,n){"use strict";var r=n(260),i=n(2092).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,arguments.length>1?arguments[1]:void 0)})},4731:function(e,t,n){"use strict";var r=n(260),i=n(1318).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},7209:function(e,t,n){"use strict";var r=n(260),i=n(1318).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},6319:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(6992),s=n(5112)("iterator"),a=r.Uint8Array,l=o.values,c=o.keys,u=o.entries,d=i.aTypedArray,f=i.exportTypedArrayMethod,p=a&&a.prototype[s],h=!!p&&("values"==p.name||null==p.name),v=function(){return l.call(d(this))};f("entries",function(){return u.call(d(this))}),f("keys",function(){return c.call(d(this))}),f("values",v,!h),f(s,v,!h)},8867:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].join;o("join",function(e){return s.apply(i(this),arguments)})},7789:function(e,t,n){"use strict";var r=n(260),i=n(6583),o=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",function(e){return i.apply(o(this),arguments)})},3739:function(e,t,n){"use strict";var r=n(260),i=n(2092).map,o=n(6707),s=r.aTypedArray,a=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",function(e){return i(s(this),e,arguments.length>1?arguments[1]:void 0,function(e,t){return new(a(o(e,e.constructor)))(t)})})},4483:function(e,t,n){"use strict";var r=n(260),i=n(3671).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},9368:function(e,t,n){"use strict";var r=n(260),i=n(3671).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",function(e){return i(o(this),e,arguments.length,arguments.length>1?arguments[1]:void 0)})},2056:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o("reverse",function(){for(var e,t=this,n=i(t).length,r=s(n/2),o=0;o1?arguments[1]:void 0,1),n=this.length,r=s(e),a=i(r.length),c=0;if(a+t>n)throw RangeError("Wrong length");for(;co;)u[o]=n[o++];return u},o(function(){new Int8Array(1).slice()}))},7462:function(e,t,n){"use strict";var r=n(260),i=n(2092).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",function(e){return i(o(this),e,arguments.length>1?arguments[1]:void 0)})},3824:function(e,t,n){"use strict";var r=n(260),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=[].sort;o("sort",function(e){return s.call(i(this),e)})},5021:function(e,t,n){"use strict";var r=n(260),i=n(7466),o=n(1400),s=n(6707),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",function(e,t){var n=a(this),r=n.length,l=o(e,r);return new(s(n,n.constructor))(n.buffer,n.byteOffset+l*n.BYTES_PER_ELEMENT,i((void 0===t?r:o(t,r))-l))})},2974:function(e,t,n){"use strict";var r=n(7854),i=n(260),o=n(7293),s=r.Int8Array,a=i.aTypedArray,l=i.exportTypedArrayMethod,c=[].toLocaleString,u=[].slice,d=!!s&&o(function(){c.call(new s(1))});l("toLocaleString",function(){return c.apply(d?u.call(a(this)):a(this),arguments)},o(function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()})||!o(function(){s.prototype.toLocaleString.call([1,2])}))},5016:function(e,t,n){"use strict";var r=n(260).exportTypedArrayMethod,i=n(7293),o=n(7854).Uint8Array,s=o&&o.prototype||{},a=[].toString,l=[].join;i(function(){a.call({})})&&(a=function(){return l.call(this)});var c=s.toString!=a;r("toString",a,c)},2472:function(e,t,n){n(9843)("Uint8",function(e){return function(t,n,r){return e(this,t,n,r)}})},4747:function(e,t,n){var r=n(7854),i=n(8324),o=n(8533),s=n(8880);for(var a in i){var l=r[a],c=l&&l.prototype;if(c&&c.forEach!==o)try{s(c,"forEach",o)}catch(e){c.forEach=o}}},3948:function(e,t,n){var r=n(7854),i=n(8324),o=n(6992),s=n(8880),a=n(5112),l=a("iterator"),c=a("toStringTag"),u=o.values;for(var d in i){var f=r[d],p=f&&f.prototype;if(p){if(p[l]!==u)try{s(p,l,u)}catch(e){p[l]=u}if(p[c]||s(p,c,d),i[d])for(var h in o)if(p[h]!==o[h])try{s(p,h,o[h])}catch(e){p[h]=o[h]}}}},1637:function(e,t,n){"use strict";n(6992);var r=n(2109),i=n(5005),o=n(590),s=n(1320),a=n(2248),l=n(8003),c=n(4994),u=n(9909),d=n(5787),f=n(6656),p=n(9974),h=n(648),v=n(9670),m=n(111),y=n(30),g=n(9114),b=n(8554),w=n(1246),x=n(5112),E=i("fetch"),S=i("Headers"),k=x("iterator"),L="URLSearchParams",A=L+"Iterator",C=u.set,_=u.getterFor(L),T=u.getterFor(A),F=/\+/g,I=Array(4),M=function(e){return I[e-1]||(I[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},R=function(e){try{return decodeURIComponent(e)}catch(t){return e}},z=function(e){var t=e.replace(F," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(M(n--),R);return t}},q=/[!'()~]|%20/g,j={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},U=function(e){return j[e]},O=function(e){return encodeURIComponent(e).replace(q,U)},P=function(e,t){if(t)for(var n,r,i=t.split("&"),o=0;o0?arguments[0]:void 0,u=[];if(C(this,{type:L,entries:u,updateURL:function(){},updateSearchParams:D}),void 0!==c)if(m(c))if("function"==typeof(e=w(c)))for(n=(t=e.call(c)).next;!(r=n.call(t)).done;){if((s=(o=(i=b(v(r.value))).next).call(i)).done||(a=o.call(i)).done||!o.call(i).done)throw TypeError("Expected sequence with length 2");u.push({key:s.value+"",value:a.value+""})}else for(l in c)f(c,l)&&u.push({key:l,value:c[l]+""});else P(u,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},W=B.prototype;a(W,{append:function(e,t){N(arguments.length,2);var n=_(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){N(arguments.length,1);for(var t=_(this),n=t.entries,r=e+"",i=0;ie.key){i.splice(t,0,e);break}t===n&&i.push(e)}r.updateURL()},forEach:function(e){for(var t,n=_(this).entries,r=p(e,arguments.length>1?arguments[1]:void 0,3),i=0;i1&&(m(t=arguments[1])&&(n=t.body,h(n)===L&&((r=t.headers?new S(t.headers):new S).has("content-type")||r.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=y(t,{body:g(0,String(n)),headers:g(0,r)}))),i.push(t)),E.apply(this,i)}}),e.exports={URLSearchParams:B,getState:_}},285:function(e,t,n){"use strict";n(8783);var r,i=n(2109),o=n(9781),s=n(590),a=n(7854),l=n(6048),c=n(1320),u=n(5787),d=n(6656),f=n(1574),p=n(8457),h=n(8710).codeAt,v=n(3197),m=n(8003),y=n(1637),g=n(9909),b=a.URL,w=y.URLSearchParams,x=y.getState,E=g.set,S=g.getterFor("URL"),k=Math.floor,L=Math.pow,A="Invalid scheme",C="Invalid host",_="Invalid port",T=/[A-Za-z]/,F=/[\d+-.A-Za-z]/,I=/\d/,M=/^(0x|0X)/,R=/^[0-7]+$/,z=/^\d+$/,q=/^[\dA-Fa-f]+$/,j=/[\u0000\t\u000A\u000D #%/:?@[\\]]/,U=/[\u0000\t\u000A\u000D #/:?@[\\]]/,O=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,P=/[\t\u000A\u000D]/g,D=function(e,t){var n,r,i;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return C;if(!(n=$(t.slice(1,-1))))return C;e.host=n}else if(V(e)){if(t=v(t),j.test(t))return C;if(null===(n=N(t)))return C;e.host=n}else{if(U.test(t))return C;for(n="",r=p(t),i=0;i4)return e;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(o=M.test(i)?16:8,i=i.slice(8==o?1:2)),""===i)s=0;else{if(!(10==o?z:8==o?R:q).test(i))return e;s=parseInt(i,o)}n.push(s)}for(r=0;r=L(256,5-t))return null}else if(s>255)return null;for(a=n.pop(),r=0;r6)return;for(r=0;f();){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!I.test(f()))return;for(;I.test(f());){if(o=parseInt(f(),10),null===i)i=o;else{if(0==i)return;i=10*i+o}if(i>255)return;d++}l[c]=256*l[c]+i,2!=++r&&4!=r||c++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;d++,u=++c}}if(null!==u)for(s=c-u,c=7;0!=c&&s>0;)a=l[c],l[c--]=l[u+s-1],l[u+--s]=a;else if(8!=c)return;return l},B=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=k(e/256);return t.join(".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,o=0;o<8;o++)0!==e[o]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=o),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},W={},H=f({},W,{" ":1,'"':1,"<":1,">":1,"`":1}),Y=f({},H,{"#":1,"?":1,"{":1,"}":1}),G=f({},Y,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Q=function(e,t){var n=h(e,0);return n>32&&n<127&&!d(t,e)?e:encodeURIComponent(e)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},V=function(e){return d(X,e.scheme)},K=function(e){return""!=e.username||""!=e.password},Z=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},J=function(e,t){var n;return 2==e.length&&T.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},ee=function(e){var t;return e.length>1&&J(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},te=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&J(t[0],!0)||t.pop()},ne=function(e){return"."===e||"%2e"===e.toLowerCase()},re=function(e){return".."===(e=e.toLowerCase())||"%2e."===e||".%2e"===e||"%2e%2e"===e},ie={},oe={},se={},ae={},le={},ce={},ue={},de={},fe={},pe={},he={},ve={},me={},ye={},ge={},be={},we={},xe={},Ee={},Se={},ke={},Le=function(e,t,n,i){var o,s,a,l,c=n||ie,u=0,f="",h=!1,v=!1,m=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(O,"")),t=t.replace(P,""),o=p(t);u<=o.length;){switch(s=o[u],c){case ie:if(!s||!T.test(s)){if(n)return A;c=se;continue}f+=s.toLowerCase(),c=oe;break;case oe:if(s&&(F.test(s)||"+"==s||"-"==s||"."==s))f+=s.toLowerCase();else{if(":"!=s){if(n)return A;f="",c=se,u=0;continue}if(n&&(V(e)!=d(X,f)||"file"==f&&(K(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=f,n)return void(V(e)&&X[e.scheme]==e.port&&(e.port=null));f="","file"==e.scheme?c=ye:V(e)&&i&&i.scheme==e.scheme?c=ae:V(e)?c=de:"/"==o[u+1]?(c=le,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ee)}break;case se:if(!i||i.cannotBeABaseURL&&"#"!=s)return A;if(i.cannotBeABaseURL&&"#"==s){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=ke;break}c="file"==i.scheme?ye:ce;continue;case ae:if("/"!=s||"/"!=o[u+1]){c=ce;continue}c=fe,u++;break;case le:if("/"==s){c=pe;break}c=xe;continue;case ce:if(e.scheme=i.scheme,s==r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==s||"\\"==s&&V(e))c=ue;else if("?"==s)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=xe;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}break;case ue:if(!V(e)||"/"!=s&&"\\"!=s){if("/"!=s){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=xe;continue}c=pe}else c=fe;break;case de:if(c=fe,"/"!=s||"/"!=f.charAt(u+1))continue;u++;break;case fe:if("/"!=s&&"\\"!=s){c=pe;continue}break;case pe:if("@"==s){h&&(f="%40"+f),h=!0,a=p(f);for(var y=0;y65535)return _;e.port=V(e)&&w===X[e.scheme]?null:w,f=""}if(n)return;c=we;continue}return _}f+=s;break;case ye:if(e.scheme="file","/"==s||"\\"==s)c=ge;else{if(!i||"file"!=i.scheme){c=xe;continue}if(s==r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==s)e.host=i.host,e.path=i.path.slice(),e.query="",c=Se;else{if("#"!=s){ee(o.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),te(e)),c=xe;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=ke}}break;case ge:if("/"==s||"\\"==s){c=be;break}i&&"file"==i.scheme&&!ee(o.slice(u).join(""))&&(J(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=xe;continue;case be:if(s==r||"/"==s||"\\"==s||"?"==s||"#"==s){if(!n&&J(f))c=xe;else if(""==f){if(e.host="",n)return;c=we}else{if(l=D(e,f))return l;if("localhost"==e.host&&(e.host=""),n)return;f="",c=we}continue}f+=s;break;case we:if(V(e)){if(c=xe,"/"!=s&&"\\"!=s)continue}else if(n||"?"!=s)if(n||"#"!=s){if(s!=r&&(c=xe,"/"!=s))continue}else e.fragment="",c=ke;else e.query="",c=Se;break;case xe:if(s==r||"/"==s||"\\"==s&&V(e)||!n&&("?"==s||"#"==s)){if(re(f)?(te(e),"/"==s||"\\"==s&&V(e)||e.path.push("")):ne(f)?"/"==s||"\\"==s&&V(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&J(f)&&(e.host&&(e.host=""),f=f.charAt(0)+":"),e.path.push(f)),f="","file"==e.scheme&&(s==r||"?"==s||"#"==s))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==s?(e.query="",c=Se):"#"==s&&(e.fragment="",c=ke)}else f+=Q(s,Y);break;case Ee:"?"==s?(e.query="",c=Se):"#"==s?(e.fragment="",c=ke):s!=r&&(e.path[0]+=Q(s,W));break;case Se:n||"#"!=s?s!=r&&("'"==s&&V(e)?e.query+="%27":e.query+="#"==s?"%23":Q(s,W)):(e.fragment="",c=ke);break;case ke:s!=r&&(e.fragment+=Q(s,H))}u++}},Ae=function(e){var t,n,r=u(this,Ae,"URL"),i=arguments.length>1?arguments[1]:void 0,s=String(e),a=E(r,{type:"URL"});if(void 0!==i)if(i instanceof Ae)t=S(i);else if(n=Le(t={},String(i)))throw TypeError(n);if(n=Le(a,s,null,t))throw TypeError(n);var l=a.searchParams=new w,c=x(l);c.updateSearchParams(a.query),c.updateURL=function(){a.query=String(l)||null},o||(r.href=_e.call(r),r.origin=Te.call(r),r.protocol=Fe.call(r),r.username=Ie.call(r),r.password=Me.call(r),r.host=Re.call(r),r.hostname=ze.call(r),r.port=qe.call(r),r.pathname=je.call(r),r.search=Ue.call(r),r.searchParams=Oe.call(r),r.hash=Pe.call(r))},Ce=Ae.prototype,_e=function(){var e=S(this),t=e.scheme,n=e.username,r=e.password,i=e.host,o=e.port,s=e.path,a=e.query,l=e.fragment,c=t+":";return null!==i?(c+="//",K(e)&&(c+=n+(r?":"+r:"")+"@"),c+=B(i),null!==o&&(c+=":"+o)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?s[0]:s.length?"/"+s.join("/"):"",null!==a&&(c+="?"+a),null!==l&&(c+="#"+l),c},Te=function(){var e=S(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&V(e)?t+"://"+B(e.host)+(null!==n?":"+n:""):"null"},Fe=function(){return S(this).scheme+":"},Ie=function(){return S(this).username},Me=function(){return S(this).password},Re=function(){var e=S(this),t=e.host,n=e.port;return null===t?"":null===n?B(t):B(t)+":"+n},ze=function(){var e=S(this).host;return null===e?"":B(e)},qe=function(){var e=S(this).port;return null===e?"":String(e)},je=function(){var e=S(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},Ue=function(){var e=S(this).query;return e?"?"+e:""},Oe=function(){return S(this).searchParams},Pe=function(){var e=S(this).fragment;return e?"#"+e:""},De=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(o&&l(Ce,{href:De(_e,function(e){var t=S(this),n=String(e),r=Le(t,n);if(r)throw TypeError(r);x(t.searchParams).updateSearchParams(t.query)}),origin:De(Te),protocol:De(Fe,function(e){var t=S(this);Le(t,String(e)+":",ie)}),username:De(Ie,function(e){var t=S(this),n=p(String(e));if(!Z(t)){t.username="";for(var r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?r-1:0),o=1;o=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw s}}}}(n,!0);try{for(a.s();!(s=a.n()).done;)s.value.apply(this,i)}catch(e){a.e(e)}finally{a.f()}}return this.element&&this.element.dispatchEvent(this.makeEvent("dropzone:"+t,{args:i})),this}},{key:"makeEvent",value:function(e,t){var n={bubbles:!0,cancelable:!0,detail:t};if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n'),this.element.appendChild(e));var i=e.getElementsByTagName("span")[0];return i&&(null!=i.textContent?i.textContent=this.options.dictFallbackMessage:null!=i.innerText&&(i.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,r){var i={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=i.srcWidth,n=i.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var s=(t=Math.min(t,i.srcWidth))/(n=Math.min(n,i.srcHeight));if(i.srcWidth>t||i.srcHeight>n)if("crop"===r)o>s?(i.srcHeight=e.height,i.srcWidth=i.srcHeight*s):(i.srcWidth=e.width,i.srcHeight=i.srcWidth/s);else{if("contain"!==r)throw new Error("Unknown resizeMethod '".concat(r,"'"));o>s?n=t/o:t=n*o}return i.srcX=(e.width-i.srcWidth)/2,i.srcY=(e.height-i.srcHeight)/2,i.trgWidth=t,i.trgHeight=n,i},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'
    Check
    Error
    ',drop:function(e){return this.element.classList.remove("dz-drag-hover")},dragstart:function(e){},dragend:function(e){return this.element.classList.remove("dz-drag-hover")},dragenter:function(e){return this.element.classList.add("dz-drag-hover")},dragover:function(e){return this.element.classList.add("dz-drag-hover")},dragleave:function(e){return this.element.classList.remove("dz-drag-hover")},paste:function(e){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(e){var t=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer&&!this.options.disablePreviews){e.previewElement=g.createElement(this.options.previewTemplate.trim()),e.previewTemplate=e.previewElement,this.previewsContainer.appendChild(e.previewElement);var n,r=o(e.previewElement.querySelectorAll("[data-dz-name]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.textContent=e.name}}catch(e){r.e(e)}finally{r.f()}var s,a=o(e.previewElement.querySelectorAll("[data-dz-size]"),!0);try{for(a.s();!(s=a.n()).done;)(i=s.value).innerHTML=this.filesize(e.size)}catch(e){a.e(e)}finally{a.f()}this.options.addRemoveLinks&&(e._removeLink=g.createElement('
    '.concat(this.options.dictRemoveFile,"")),e.previewElement.appendChild(e._removeLink));var l,c=function(n){return n.preventDefault(),n.stopPropagation(),e.status===g.UPLOADING?g.confirm(t.options.dictCancelUploadConfirmation,function(){return t.removeFile(e)}):t.options.dictRemoveFileConfirmation?g.confirm(t.options.dictRemoveFileConfirmation,function(){return t.removeFile(e)}):t.removeFile(e)},u=o(e.previewElement.querySelectorAll("[data-dz-remove]"),!0);try{for(u.s();!(l=u.n()).done;)l.value.addEventListener("click",c)}catch(e){u.e(e)}finally{u.f()}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n,r=o(e.previewElement.querySelectorAll("[data-dz-thumbnail]"),!0);try{for(r.s();!(n=r.n()).done;){var i=n.value;i.alt=e.name,i.src=t}}catch(e){r.e(e)}finally{r.f()}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"string"!=typeof t&&t.error&&(t=t.error);var n,r=o(e.previewElement.querySelectorAll("[data-dz-errormessage]"),!0);try{for(r.s();!(n=r.n()).done;)n.value.textContent=t}catch(e){r.e(e)}finally{r.f()}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t,n){if(e.previewElement){var r,i=o(e.previewElement.querySelectorAll("[data-dz-uploadprogress]"),!0);try{for(i.s();!(r=i.n()).done;){var s=r.value;"PROGRESS"===s.nodeName?s.value=t:s.style.width="".concat(t,"%")}}catch(e){i.e(e)}finally{i.f()}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}};function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"))),this.clickableElements.length&&function t(){e.hiddenFileInput&&e.hiddenFileInput.parentNode.removeChild(e.hiddenFileInput),e.hiddenFileInput=document.createElement("input"),e.hiddenFileInput.setAttribute("type","file"),(null===e.options.maxFiles||e.options.maxFiles>1)&&e.hiddenFileInput.setAttribute("multiple","multiple"),e.hiddenFileInput.className="dz-hidden-input",null!==e.options.acceptedFiles&&e.hiddenFileInput.setAttribute("accept",e.options.acceptedFiles),null!==e.options.capture&&e.hiddenFileInput.setAttribute("capture",e.options.capture),e.hiddenFileInput.setAttribute("tabindex","-1"),e.hiddenFileInput.style.visibility="hidden",e.hiddenFileInput.style.position="absolute",e.hiddenFileInput.style.top="0",e.hiddenFileInput.style.left="0",e.hiddenFileInput.style.height="0",e.hiddenFileInput.style.width="0",o.getElement(e.options.hiddenInputContainer,"hiddenInputContainer").appendChild(e.hiddenFileInput),e.hiddenFileInput.addEventListener("change",function(){var n=e.hiddenFileInput.files;if(n.length){var r,i=c(n,!0);try{for(i.s();!(r=i.n()).done;){var o=r.value;e.addFile(o)}}catch(e){i.e(e)}finally{i.f()}}e.emit("addedfiles",n),t()})}(),this.URL=null!==window.URL?window.URL:window.webkitURL;var t,n=c(this.events,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.on(r,this.options[r])}}catch(e){n.e(e)}finally{n.f()}this.on("uploadprogress",function(){return e.updateTotalUploadProgress()}),this.on("removedfile",function(){return e.updateTotalUploadProgress()}),this.on("canceled",function(t){return e.emit("complete",t)}),this.on("complete",function(t){if(0===e.getAddedFiles().length&&0===e.getUploadingFiles().length&&0===e.getQueuedFiles().length)return setTimeout(function(){return e.emit("queuecomplete")},0)});var i=function(e){if(function(e){if(e.dataTransfer.types)for(var t=0;t")),n+='');var r=o.createElement(n);return"FORM"!==this.element.tagName?(t=o.createElement('
    '))).appendChild(r):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:r}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;if(/(^| )fallback($| )/.test(r.className))return r}}catch(e){n.e(e)}finally{n.f()}},t=0,n=["div","form"];t0){for(var r=["tb","gb","mb","kb","b"],i=0;i=Math.pow(this.options.filesizeBase,4-i)/10){t=e/Math.pow(this.options.filesizeBase,4-i),n=o;break}}t=Math.round(10*t)/10}return"".concat(t," ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n0){var i,o=c(r,!0);try{for(o.s();!(i=o.n()).done;){var s=i.value;s.isFile?s.file(function(e){if(!n.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(t,"/").concat(e.name),n.addFile(e)}):s.isDirectory&&n._addFilesFromDirectory(s,"".concat(t,"/").concat(s.name))}}catch(e){o.e(e)}finally{o.f()}e()}return null},i)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):o.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(e){var t=this;e.upload={uuid:o.uuidv4(),progress:0,total:e.size,bytesSent:0,filename:this._renameFile(e)},this.files.push(e),e.status=o.ADDED,this.emit("addedfile",e),this._enqueueThumbnail(e),this.accept(e,function(n){n?(e.accepted=!1,t._errorProcessing([e],n)):(e.accepted=!0,t.options.autoQueue&&t.enqueueFile(e)),t._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t,n=c(e,!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.enqueueFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==o.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=o.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var e=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var t=this._thumbnailQueue.shift();return this.createThumbnail(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(n){return e.emit("thumbnail",t,n),e._processingThumbnail=!1,e._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===o.UPLOADING&&this.cancelUpload(e),this.files=b(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t,n=c(this.files.slice(),!0);try{for(n.s();!(t=n.n()).done;){var r=t.value;(r.status!==o.UPLOADING||e)&&this.removeFile(r)}}catch(e){n.e(e)}finally{n.f()}return null}},{key:"resizeImage",value:function(e,t,n,r,i){var s=this;return this.createThumbnail(e,t,n,r,!0,function(t,n){if(null==n)return i(e);var r=s.options.resizeMimeType;null==r&&(r=e.type);var a=n.toDataURL(r,s.options.resizeQuality);return"image/jpeg"!==r&&"image/jpg"!==r||(a=E.restore(e.dataURL,a)),i(o.dataURItoBlob(a))})}},{key:"createThumbnail",value:function(e,t,n,r,i,o){var s=this,a=new FileReader;a.onload=function(){e.dataURL=a.result,"image/svg+xml"!==e.type?s.createThumbnailFromUrl(e,t,n,r,i,o):null!=o&&o(a.result)},a.readAsDataURL(e)}},{key:"displayExistingFile",value:function(e,t,n,r){var i=this,o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];this.emit("addedfile",e),this.emit("complete",e),o?(e.dataURL=t,this.createThumbnailFromUrl(e,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,this.options.fixOrientation,function(t){i.emit("thumbnail",e,t),n&&n()},r)):(this.emit("thumbnail",e,t),n&&n())}},{key:"createThumbnailFromUrl",value:function(e,t,n,r,i,o,s){var a=this,l=document.createElement("img");return s&&(l.crossOrigin=s),i="from-image"!=getComputedStyle(document.body).imageOrientation&&i,l.onload=function(){var s=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&i&&(s=function(e){return EXIF.getData(l,function(){return e(EXIF.getTag(this,"Orientation"))})}),s(function(i){e.width=l.width,e.height=l.height;var s=a.options.resize.call(a,e,t,n,r),c=document.createElement("canvas"),u=c.getContext("2d");switch(c.width=s.trgWidth,c.height=s.trgHeight,i>4&&(c.width=s.trgHeight,c.height=s.trgWidth),i){case 2:u.translate(c.width,0),u.scale(-1,1);break;case 3:u.translate(c.width,c.height),u.rotate(Math.PI);break;case 4:u.translate(0,c.height),u.scale(1,-1);break;case 5:u.rotate(.5*Math.PI),u.scale(1,-1);break;case 6:u.rotate(.5*Math.PI),u.translate(0,-c.width);break;case 7:u.rotate(.5*Math.PI),u.translate(c.height,-c.width),u.scale(-1,1);break;case 8:u.rotate(-.5*Math.PI),u.translate(-c.height,0)}x(u,l,null!=s.srcX?s.srcX:0,null!=s.srcY?s.srcY:0,s.srcWidth,s.srcHeight,null!=s.trgX?s.trgX:0,null!=s.trgY?s.trgY:0,s.trgWidth,s.trgHeight);var d=c.toDataURL("image/png");if(null!=o)return o(d,c)})},null!=o&&(l.onerror=o),l.src=e.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(t>=e)){var r=this.getQueuedFiles();if(r.length>0){if(this.options.uploadMultiple)return this.processFiles(r.slice(0,e-t));for(;n1?t-1:0),r=1;rt.options.chunkSize),e[0].upload.totalChunkCount=Math.ceil(r.size/t.options.chunkSize)}if(e[0].upload.chunked){var i=e[0],s=n[0];i.upload.chunks=[];var a=function(){for(var n=0;void 0!==i.upload.chunks[n];)n++;if(!(n>=i.upload.totalChunkCount)){var r=n*t.options.chunkSize,a=Math.min(r+t.options.chunkSize,s.size),l={name:t._getParamName(0),data:s.webkitSlice?s.webkitSlice(r,a):s.slice(r,a),filename:i.upload.filename,chunkIndex:n};i.upload.chunks[n]={file:i,index:n,dataBlock:l,status:o.UPLOADING,progress:0,retries:0},t._uploadData(e,[l])}};if(i.upload.finishedChunkUpload=function(n,r){var s=!0;n.status=o.SUCCESS,n.dataBlock=null,n.xhr=null;for(var l=0;l1?t-1:0),r=1;r=s;a?o++:o--)i[o]=t.charCodeAt(o);return new Blob([r],{type:n})};var b=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},w=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};g.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},g.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},g.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},g.getElements=function(e,t){var n,r;if(e instanceof Array){r=[];try{var i,o=c(e,!0);try{for(o.s();!(i=o.n()).done;)n=i.value,r.push(this.getElement(n,t))}catch(e){o.e(e)}finally{o.f()}}catch(e){r=null}}else if("string"==typeof e){r=[];var s,a=c(document.querySelectorAll(e),!0);try{for(a.s();!(s=a.n()).done;)n=s.value,r.push(n)}catch(e){a.e(e)}finally{a.f()}}else null!=e.nodeType&&(r=[e]);if(null==r||!r.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return r},g.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},g.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n,r=e.type,i=r.replace(/\/.*$/,""),o=c(t,!0);try{for(o.s();!(n=o.n()).done;){var s=n.value;if("."===(s=s.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(s.toLowerCase(),e.name.length-s.length))return!0}else if(/\/\*$/.test(s)){if(i===s.replace(/\/.*$/,""))return!0}else if(r===s)return!0}}catch(e){o.e(e)}finally{o.f()}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new g(this,e)})}),g.ADDED="added",g.QUEUED="queued",g.ACCEPTED=g.QUEUED,g.UPLOADING="uploading",g.PROCESSING=g.UPLOADING,g.CANCELED="canceled",g.ERROR="error",g.SUCCESS="success";var x=function(e,t,n,r,i,o,s,a,l,c){var u=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var r=n.getContext("2d");r.drawImage(e,0,0);for(var i=r.getImageData(1,0,1,t).data,o=0,s=t,a=t;a>o;)0===i[4*(a-1)+3]?s=a:o=a,a=s+o>>1;var l=a/t;return 0===l?1:l}(t);return e.drawImage(t,n,r,i,o,s,a,l,c/u)},E=function(){function e(){d(this,e)}return p(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,r=void 0,i="",o=void 0,s=void 0,a=void 0,l="",c=0;o=(n=e[c++])>>2,s=(3&n)<<4|(r=e[c++])>>4,a=(15&r)<<2|(i=e[c++])>>6,l=63&i,isNaN(r)?a=l=64:isNaN(i)&&(l=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(s)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l),n=r=i="",o=s=a=l="",ce.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,r="",i=void 0,o=void 0,s="",a=0,l=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(a++))<<2|(i=this.KEY_STR.indexOf(e.charAt(a++)))>>4,n=(15&i)<<4|(o=this.KEY_STR.indexOf(e.charAt(a++)))>>2,r=(3&o)<<6|(s=this.KEY_STR.indexOf(e.charAt(a++))),l.push(t),64!==o&&l.push(n),64!==s&&l.push(r),t=n=r="",i=o=s="",at.options.priority?-1:e.options.priority=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[];if(t&&this.autoCleanChannel(),n=this._subscribers.length-1,e)for(;n>=0;n--)this._subscribers[n].fn!==e&&this._subscribers[n].id!==e||(this._subscribers[n].channel=null,this._subscribers.splice(n,1));else this._subscribers=[]},t.prototype.autoCleanChannel=function(){if(0===this._subscribers.length){for(var e in this._channels)if(this._channels.hasOwnProperty(e))return;if(null!=this._parent){var t=this.namespace.split(":"),n=t[t.length-1];this._parent.removeChannel(n)}}},t.prototype.removeChannel=function(e){this.hasChannel(e)&&(this._channels[e]=null,delete this._channels[e],this.autoCleanChannel())},t.prototype.publish=function(e){for(var t,n,r,i=0,o=this._subscribers.length,s=!1;i0)for(;i{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(295),t=n.n(e),r=n(216);window.Cl=window.Cl||{};class i{constructor(e={}){this.options={linksSelector:".js-toggler-link",dataHeaderSelector:"toggler-header-selector",dataContentSelector:"toggler-content-selector",collapsedClass:"js-collapsed",expandedClass:"js-expanded",hiddenClass:"hidden",...e},this.togglerInstances=[],document.querySelectorAll(this.options.linksSelector).forEach(e=>{const t=new o(e,this.options);this.togglerInstances.push(t)})}destroy(){this.links=null,this.togglerInstances.forEach(e=>e.destroy()),this.togglerInstances=[]}}class o{constructor(e,t={}){this.options={...t},this.link=e,this.headerSelector=this.link.dataset[this.options.dataHeaderSelector],this.contentSelector=this.link.dataset[this.options.dataContentSelector],this.header=document.querySelector(this.headerSelector),this.header=this.header||this.link,this.content=document.querySelector(this.contentSelector),this.content&&this._initLink()}_updateClasses(){this.content.classList.contains(this.options.hiddenClass)?(this.header.classList.remove(this.options.expandedClass),this.header.classList.add(this.options.collapsedClass)):(this.header.classList.add(this.options.expandedClass),this.header.classList.remove(this.options.collapsedClass))}_onTogglerClick(e){this.content.classList.toggle(this.options.hiddenClass),this._updateClasses(),e.preventDefault()}_initLink(){this._updateClasses(),this.link.addEventListener("click",e=>this._onTogglerClick(e))}destroy(){this.options=null,this.link=null}}Cl.Toggler=i,Cl.TogglerConstructor=o;const s=i;n(413);var a=n(628),l=n.n(a);document.addEventListener("DOMContentLoaded",()=>{let e=0,t=1;const n=document.querySelector(".js-upload-button");if(!n)return;const r=document.querySelector(".js-upload-button-disabled"),i=n.dataset.url;if(!i)return;const o=document.querySelector(".js-filer-dropzone-upload-welcome"),s=document.querySelector(".js-filer-dropzone-upload-info-container"),a=document.querySelector(".js-filer-dropzone-upload-info"),c=document.querySelector(".js-filer-dropzone-upload-number"),u=".js-filer-dropzone-progress",d=document.querySelector(".js-filer-dropzone-upload-success"),f=document.querySelector(".js-filer-dropzone-upload-canceled"),p=document.querySelector(".js-filer-dropzone-cancel"),h=document.querySelector(".js-filer-dropzone-info-message"),v="hidden",m=parseInt(n.dataset.maxUploaderConnections||3,10),y=parseInt(n.dataset.maxFilesize||0,10);let g=!1;const b=()=>{c&&(c.textContent=`${t-e}/${t}`)},w=()=>{n&&n.remove()},x=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))};let E;Cl.mediator.subscribe("filer-upload-in-progress",w),n.addEventListener("click",e=>{e.preventDefault()}),l().autoDiscover=!1;try{E=new(l())(n,{url:i,paramName:"file",maxFilesize:y,parallelUploads:m,clickable:n,previewTemplate:"
    ",addRemoveLinks:!1,autoProcessQueue:!0})}catch(e){return void console.error("[Filer Upload] Failed to create Dropzone instance:",e)}E.on("addedfile",n=>{Cl.mediator.remove("filer-upload-in-progress",w),Cl.mediator.publish("filer-upload-in-progress"),e++,t=E.files.length,h&&h.classList.remove(v),o&&o.classList.add(v),d&&d.classList.add(v),s&&s.classList.remove(v),p&&p.classList.remove(v),f&&f.classList.add(v),b()}),E.on("uploadprogress",(e,t)=>{const n=Math.round(t),r=`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}`,i=document.getElementById(r);let o;if(i){const e=i.querySelector(u);e&&(e.style.width=`${n}%`)}else if(a){o=a.cloneNode(!0);const t=o.querySelector(".js-filer-dropzone-file-name");t&&(t.textContent=e.name);const i=o.querySelector(u);i&&(i.style.width=`${n}%`),o.classList.remove(v),o.setAttribute("id",r),s&&s.appendChild(o)}}),E.on("success",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),r.error&&(g=!0,window.filerShowError(`${n.name}: ${r.error}`)),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),g?setTimeout(x,1e3):x())}),E.on("error",(n,r)=>{const i=`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}`,s=document.getElementById(i);s&&s.remove(),g=!0,window.filerShowError(`${n.name}: ${r}`),e--,b(),0===e&&(t=1,o&&o.classList.add(v),c&&c.classList.add(v),f&&f.classList.add(v),p&&p.classList.add(v),d&&d.classList.remove(v),setTimeout(x,1e3))}),p&&p.addEventListener("click",e=>{e.preventDefault(),p.classList.add(v),c&&c.classList.add(v),s&&s.classList.add(v),f&&f.classList.remove(v),setTimeout(()=>{window.location.reload()},1e3)}),r&&Cl.filerTooltip&&Cl.filerTooltip(),document.dispatchEvent(new Event("filer-upload-scripts-executed"))}),l()&&(l().autoDiscover=!1),document.addEventListener("DOMContentLoaded",()=>{const e=".js-img-preview",t=".js-filer-dropzone:not(.js-filer-dropzone-base):not(.js-filer-dropzone-folder):not(.js-filer-dropzone-info-message)",n=document.querySelectorAll(t),r=".js-filer-dropzone-progress",i=".js-img-wrapper",o="hidden",s="filer-dropzone-mobile",a="js-object-attached",c=e=>{e.offsetWidth<500?e.classList.add(s):e.classList.remove(s)},u=e=>{try{window.parent.CMS.API.Messages.open({message:e})}catch{window.filerShowError?window.filerShowError(e):alert(e)}},d=function(t){const n=t.dataset.url,s=t.querySelector(".vForeignKeyRawIdAdminField"),d="image"===s?.getAttribute("name"),f=t.querySelector(".js-related-lookup"),p=t.querySelector(".js-related-edit"),h=t.querySelector(".js-filer-dropzone-message"),v=t.querySelector(".filerClearer"),m=t.querySelector(".js-file-selector");t.dropzone||(window.addEventListener("resize",()=>{c(t)}),new(l())(t,{url:n,paramName:"file",maxFiles:1,maxFilesize:t.dataset.maxFilesize,previewTemplate:document.querySelector(".js-filer-dropzone-template")?.innerHTML||"
    ",clickable:!1,addRemoveLinks:!1,init:function(){c(t),this.on("removedfile",()=>{m&&(m.style.display=""),t.classList.remove(a),this.removeAllFiles(),v?.click()}),this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})}),v&&v.addEventListener("click",()=>{t.classList.remove(a)})},maxfilesexceeded:function(){this.removeAllFiles(!0)},drop:function(){this.removeAllFiles(!0),v?.click();const e=t.querySelector(r);e&&e.classList.remove(o),m&&(m.style.display="block"),f?.classList.add("related-lookup-change"),p?.classList.add("related-lookup-change"),h?.classList.add(o),t.classList.remove("dz-drag-hover"),t.classList.add(a)},success:function(n,a){const l=t.querySelector(r);if(l&&l.classList.add(o),n&&"success"===n.status&&a){if(a.file_id&&s){s.value=a.file_id;const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}if(a.thumbnail_180&&d){const n=t.querySelector(e);n&&(n.style.backgroundImage=`url(${a.thumbnail_180})`);const r=t.querySelector(i);r&&r.classList.remove(o)}}else a&&a.error&&u(`${n.name}: ${a.error}`),this.removeAllFiles(!0);this.element.querySelectorAll("img").forEach(e=>{e.addEventListener("dragstart",e=>{e.preventDefault()})})},error:function(e,t,n){n&&n.error&&(t+=` ; ${n.error}`),u(`${e.name}: ${t}`),this.removeAllFiles(!0)},reset:function(){if(d){const n=t.querySelector(i);n&&n.classList.add(o);const r=t.querySelector(e);r&&(r.style.backgroundImage="none")}if(t.classList.remove(a),s&&(s.value=""),f?.classList.remove("related-lookup-change"),p?.classList.remove("related-lookup-change"),h?.classList.remove(o),s){const e=new Event("change",{bubbles:!0});s.dispatchEvent(e)}}}))};n.length&&l()&&(window.filerDropzoneInitialized||(window.filerDropzoneInitialized=!0,l().autoDiscover=!1),n.forEach(d),document.addEventListener("formset:added",e=>{let n,r,i;e.detail&&e.detail.formsetName?(r=parseInt(document.getElementById(`id_${e.detail.formsetName}-TOTAL_FORMS`).value,10)-1,i=document.getElementById(`${e.detail.formsetName}-${r}`),n=i?.querySelectorAll(t)||[]):(i=e.target,n=i?.querySelectorAll(t)||[]),n?.forEach(d)}))}),document.addEventListener("DOMContentLoaded",()=>{let e=0,t=0;const n=[],r=document.querySelector(".js-filer-dropzone-base"),i=".js-filer-dropzone";let o;const s=document.querySelector(".js-filer-dropzone-info-message"),a=document.querySelector(".js-filer-dropzone-folder-name"),c=document.querySelector(".js-filer-dropzone-upload-info-container"),u=document.querySelector(".js-filer-dropzone-upload-info"),d=document.querySelector(".js-filer-dropzone-upload-welcome"),f=document.querySelector(".js-filer-dropzone-upload-number"),p=document.querySelector(".js-filer-upload-count"),h=document.querySelector(".js-filer-upload-text"),v=".js-filer-dropzone-progress",m=document.querySelector(".js-filer-dropzone-upload-success"),y=document.querySelector(".js-filer-dropzone-upload-canceled"),g=document.querySelector(".js-filer-dropzone-cancel"),b="dz-drag-hover",w=document.querySelector(".drag-hover-border"),x="hidden";let E,S,k,L=!1;const A=()=>{const e=window.location.toString();window.location.replace(((e,t,n)=>{const r=new RegExp(`([?&])${t}=.*?(&|$)`,"i"),i=-1!==e.indexOf("?")?"&":"?",o=window.location.hash;return(e=e.replace(/#.*$/,"")).match(r)?e.replace(r,`$1${t}=${n}$2`)+o:e+i+t+"="+n+o})(e,"order_by","-modified_at"))},C=()=>{f&&(f.textContent=`${t-e}/${t}`),h&&h.classList.remove("hidden"),p&&p.classList.remove("hidden")},_=()=>{n.forEach(e=>{e.destroy()})},T=(e,t)=>document.getElementById(`file-${encodeURIComponent(e.name)}${e.size}${e.lastModified}${t}`);if(r){S=r.dataset.url,k=r.dataset.folderName;const e=document.body;e.dataset.url=S,e.dataset.folderName=k,e.dataset.maxFiles=r.dataset.maxFiles,e.dataset.maxFilesize=r.dataset.maxFilesize,e.classList.add("js-filer-dropzone")}Cl.mediator.subscribe("filer-upload-in-progress",_),o=document.querySelectorAll(i),o.length&&l()&&(l().autoDiscover=!1,o.forEach(r=>{if(r.dropzone)return;const p=r.dataset.url,h=new(l())(r,{url:p,paramName:"file",maxFiles:parseInt(r.dataset.maxFiles)||100,maxFilesize:parseInt(r.dataset.maxFilesize),previewTemplate:"
    ",clickable:!1,addRemoveLinks:!1,parallelUploads:r.dataset["max-uploader-connections"]||3,accept:(n,r)=>{let i;if(Cl.mediator.remove("filer-upload-in-progress",_),Cl.mediator.publish("filer-upload-in-progress"),clearTimeout(E),clearTimeout(E),d&&d.classList.add(x),g&&g.classList.remove(x),T(n,p))r("duplicate");else{i=u.cloneNode(!0);const o=i.querySelector(".js-filer-dropzone-file-name");o&&(o.textContent=n.name);const s=i.querySelector(v);s&&(s.style.width="0"),i.setAttribute("id",`file-${encodeURIComponent(n.name)}${n.size}${n.lastModified}${p}`),c&&c.appendChild(i),e++,t++,C(),r()}o.forEach(e=>e.classList.remove("reset-hover")),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b))},dragover:e=>{const t=e.target.closest(i),n=t?.dataset.folderName,l=r.classList.contains("js-filer-dropzone-folder"),c=r.getBoundingClientRect(),u=w?window.getComputedStyle(w):null,d=u?u.borderTopWidth:"0px",f=u?u.borderLeftWidth:"0px",p={top:`${c.top}px`,bottom:`${c.bottom}px`,left:`${c.left}px`,right:`${c.right}px`,width:c.width-2*parseInt(f,10)+"px",height:c.height-2*parseInt(d,10)+"px",display:"block"};l&&w&&Object.assign(w.style,p),o.forEach(e=>e.classList.add("reset-hover")),m&&m.classList.add(x),s&&s.classList.remove(x),r.classList.add(b),r.classList.remove("reset-hover"),a&&n&&(a.textContent=n)},dragend:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},dragleave:()=>{clearTimeout(E),E=setTimeout(()=>{s&&s.classList.add(x)},1e3),s&&s.classList.remove(x),o.forEach(e=>e.classList.remove(b)),w&&Object.assign(w.style,{top:"0",bottom:"0",width:"0",height:"0"})},sending:e=>{const t=T(e,p);t&&t.classList.remove(x)},uploadprogress:(e,t)=>{const n=T(e,p);if(n){const e=n.querySelector(v);e&&(e.style.width=`${t}%`)}},success:(t,n)=>{e--,C();const r=T(t,p);r&&r.remove(),n&&n.error&&(L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.error}`))},queuecomplete:()=>{0===e&&(C(),g&&g.classList.add(x),u&&u.classList.add(x),L?(f&&f.classList.add(x),setTimeout(()=>{A()},1e3)):(m&&m.classList.remove(x),A()))},error:(t,n)=>{if("duplicate"===n)return;e--,C();const r=T(t,p);r&&r.remove(),L=!0,window.filerShowError&&window.filerShowError(`${t.name}: ${n.message||n}`)}});n.push(h),g&&g.addEventListener("click",e=>{e.preventDefault(),g.classList.add(x),y&&y.classList.remove(x),h.removeAllFiles(!0)})}))}),n(117),n(221),n(472),n(902),n(577),window.Cl=window.Cl||{},Cl.mediator=new(t()),Cl.FocalPoint=r.A,Cl.Toggler=s,document.addEventListener("DOMContentLoaded",()=>{let e;window.filerShowError=t=>{const n=document.querySelector(".messagelist"),r=document.querySelector("#header"),i="js-filer-error",o=`
    • {msg}
    `.replace("{msg}",t);n?n.outerHTML=o:r&&r.insertAdjacentHTML("afterend",o),e&&clearTimeout(e),e=setTimeout(()=>{const e=document.querySelector(`.${i}`);e&&e.remove()},5e3)};const t=document.querySelector(".js-filter-files");t&&(t.addEventListener("focus",e=>{const t=e.target.closest(".navigator-top-nav");t&&t.classList.add("search-is-focused")}),t.addEventListener("blur",e=>{const t=e.target.closest(".navigator-top-nav");if(t){const n=t.querySelector(".dropdown-container a");n&&e.relatedTarget===n||t.classList.remove("search-is-focused")}}));const n=document.querySelector(".js-filter-files-container");n&&n.addEventListener("submit",e=>{}),(()=>{const e=document.querySelector(".js-filter-files"),t=".navigator-top-nav",n=document.querySelector(t),r=n?.querySelector(".filter-search-wrapper .filer-dropdown-container");e&&(e.addEventListener("keydown",function(e){e.key;const n=this.closest(t);n&&n.classList.add("search-is-focused")}),r&&(r.addEventListener("show.bs.filer-dropdown",()=>{n&&n.classList.add("search-is-focused")}),r.addEventListener("hide.bs.filer-dropdown",()=>{n&&n.classList.remove("search-is-focused")})))})(),(()=>{const e=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),t=document.querySelector(".actions-wrapper"),n=document.querySelectorAll(".action-select, #action-toggle, #files-action-toggle, #folders-action-toggle, .actions .clear a");setTimeout(()=>{n.forEach(e=>{if(e.checked){const t=e.closest(".list-item");t&&t.classList.add("selected")}}),Array.from(e).some(e=>e.classList.contains("selected"))&&t&&t.classList.add("action-selected")},100),n.forEach(n=>{n.addEventListener("change",function(){const n=this.closest(".list-item");n&&(this.checked?n.classList.add("selected"):n.classList.remove("selected")),setTimeout(()=>{const n=Array.from(e).some(e=>e.classList.contains("selected"));t&&(n?t.classList.add("action-selected"):t.classList.remove("action-selected"))},0)})})})(),(()=>{const e=document.querySelector(".js-actions-menu");if(!e)return;const t=e.querySelector(".filer-dropdown-menu"),n=document.querySelector('.actions select[name="action"]'),r=n?.querySelectorAll("option")||[],i=document.querySelector('.actions button[type="submit"]'),o=document.querySelector(".js-action-delete"),s=document.querySelector(".js-action-copy"),a=document.querySelector(".js-action-move"),l="delete_files_or_folders",c="copy_files_and_folders",u="move_files_and_folders",d=document.querySelectorAll(".navigator-table tr, .navigator-list .list-item"),f=(e,t)=>{t&&r.forEach(r=>{r.value===e&&(t.style.display="",t.addEventListener("click",t=>{if(t.preventDefault(),Array.from(d).some(e=>e.classList.contains("selected"))&&n&&i){n.value=e;const t=n.querySelector(`option[value="${e}"]`);t&&(t.selected=!0),i.click()}}))})};f(l,o),f(c,s),f(u,a),r.forEach((e,n)=>{if(0!==n){const n=document.createElement("li"),r=document.createElement("a");r.href="#",r.textContent=e.textContent,e.value!==l&&e.value!==c&&e.value!==u||r.classList.add("hidden"),n.appendChild(r),t&&t.appendChild(n)}}),t&&t.addEventListener("click",e=>{if("A"===e.target.tagName){const r=e.target.closest("li"),o=Array.from(t.querySelectorAll("li")).indexOf(r)+1;if(e.preventDefault(),n&&i){const e=n.querySelectorAll("option");e[o]&&(n.value=e[o].value,e[o].selected=!0),i.click()}}}),e.addEventListener("click",e=>{Array.from(d).some(e=>e.classList.contains("selected"))||(e.preventDefault(),e.stopPropagation())})})(),(()=>{const e=document.querySelector(".navigator-top-nav");if(!e)return;const t=document.querySelector(".breadcrumbs-container");if(!t)return;const n=t.querySelector(".navigator-breadcrumbs"),r=t.querySelector(".filer-dropdown-container"),i=document.querySelector(".filter-files-container"),o=document.querySelector(".actions-wrapper"),s=document.querySelector(".navigator-button-wrapper"),a=n?.offsetWidth||0,l=r?.offsetWidth||0,c=i?.offsetWidth||0,u=o?.offsetWidth||0,d=s?.offsetWidth||0,f=window.getComputedStyle(e),p=parseInt(f.paddingLeft,10)+parseInt(f.paddingRight,10);let h=e.offsetWidth;const v=80+a+l+c+u+d+p,m="breadcrumb-min-width",y=()=>{h{h=e.offsetWidth,y()})})(),(()=>{const e=document.querySelectorAll(".navigator-list .list-item input.action-select"),t=".navigator-list .navigator-folders-body .list-item input.action-select",n=".navigator-list .navigator-files-body .list-item input.action-select",r=document.querySelector("#files-action-toggle"),i=document.querySelector("#folders-action-toggle");i&&i.addEventListener("click",function(){const e=document.querySelectorAll(t);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),r&&r.addEventListener("click",function(){const e=document.querySelectorAll(n);this.checked?e.forEach(e=>{e.checked||e.click()}):e.forEach(e=>{e.checked&&e.click()})}),e.forEach(e=>{e.addEventListener("click",function(){const e=document.querySelectorAll(n),o=document.querySelectorAll(t);if(this.checked){const t=Array.from(e).every(e=>e.checked),n=Array.from(o).every(e=>e.checked);t&&r&&(r.checked=!0),n&&i&&(i.checked=!0)}else{const t=Array.from(e).some(e=>!e.checked),n=Array.from(o).some(e=>!e.checked);t&&r&&(r.checked=!1),n&&i&&(i.checked=!1)}})});const o=document.querySelector(".navigator .actions .clear a");o&&o.addEventListener("click",()=>{i&&(i.checked=!1),r&&(r.checked=!1)})})(),document.querySelectorAll(".js-copy-url").forEach(e=>{e.addEventListener("click",function(e){const t=new URL(this.dataset.url,document.location.href),n=this.dataset.msg||"URL copied to clipboard",r=document.createElement("template");e.preventDefault(),document.querySelectorAll(".info.filer-tooltip").forEach(e=>{e.remove()}),navigator.clipboard.writeText(t.href),r.innerHTML=`
    ${n}
    `,this.classList.add("filer-tooltip-wrapper"),this.appendChild(r.content.firstChild);const i=this;setTimeout(()=>{const e=i.querySelector(".info");e&&e.remove()},1200)})}),(new r.A).initialize(),new s})})()})(); \ No newline at end of file diff --git a/test_image_upload.py b/test_image_upload.py new file mode 100644 index 000000000..0c1f4cdac --- /dev/null +++ b/test_image_upload.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +"""Test uploading images through the full ajax_upload flow to find what fails.""" +import os +os.environ['DJANGO_SETTINGS_MODULE'] = 'test_settings' +import django; django.setup() +from django.conf import settings; settings.ALLOWED_HOSTS = ['*'] + +from django.core.management import call_command +call_command('migrate', '--run-syncdb', verbosity=0) + +from django.contrib.auth.models import User +from django.core.files.uploadedfile import SimpleUploadedFile +from django.test.client import Client +from django.urls import reverse +from filer.models.filemodels import File +from filer.models.foldermodels import Folder +from filer.models.clipboardmodels import Clipboard, ClipboardItem +from PIL import Image as PILImage +import io, json + +user = User.objects.filter(username='imgtest').first() +if not user: + user = User.objects.create_superuser('imgtest', 'a@a.com', 'secret') + +folder, _ = Folder.objects.get_or_create(name='img_test', owner=user) + +client = Client() +client.login(username='imgtest', password='secret') + +def test_upload(name, data, content_type): + """Test uploading through ajax_upload endpoint.""" + ClipboardItem.objects.filter(clipboard__user=user).delete() + upload = SimpleUploadedFile(name, data, content_type=content_type) + url = reverse('admin:filer-ajax_upload', kwargs={'folder_id': folder.pk}) + response = client.post(url, {'file': upload}) + result = json.loads(response.content.decode()) + success = 'file_id' in result + return success, result + +# Test 1: Normal JPEG +print("=" * 60) +print("Test 1: Standard JPEG image") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='red') +img.save(buf, format='JPEG') +ok, res = test_upload('test1.jpg', buf.getvalue(), 'image/jpeg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 2: WebP image saved as .jpg +print("\nTest 2: WebP image saved with .jpg extension") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='blue') +img.save(buf, format='WEBP') +ok, res = test_upload('test2.jpg', buf.getvalue(), 'image/webp') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 3: WebP image with .webp extension +print("\nTest 3: WebP image with proper .webp extension") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='green') +img.save(buf, format='WEBP') +ok, res = test_upload('test3.webp', buf.getvalue(), 'image/webp') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 4: JPEG image with no extension +print("\nTest 4: JPEG image with no extension") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='yellow') +img.save(buf, format='JPEG') +ok, res = test_upload('image_no_ext', buf.getvalue(), 'image/jpeg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 5: Large JPEG image (high resolution) +print("\nTest 5: Large JPEG (4000x3000)") +buf = io.BytesIO() +img = PILImage.new('RGB', (4000, 3000), color='purple') +img.save(buf, format='JPEG') +ok, res = test_upload('test5_large.jpg', buf.getvalue(), 'image/jpeg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 6: JPEG with long filename +print("\nTest 6: JPEG with very long filename") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='orange') +img.save(buf, format='JPEG') +long_name = 'a' * 200 + '.jpg' +ok, res = test_upload(long_name, buf.getvalue(), 'image/jpeg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 7: JPEG with EXIF data +print("\nTest 7: JPEG with EXIF orientation data") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='cyan') +try: + import piexif + exif_dict = {"0th": {piexif.ImageIFD.Orientation: 6}} + exif_bytes = piexif.dump(exif_dict) + img.save(buf, format='JPEG', exif=exif_bytes) +except ImportError: + print(" (piexif not available, using plain JPEG)") + img.save(buf, format='JPEG') +ok, res = test_upload('test7_exif.jpg', buf.getvalue(), 'image/jpeg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 8: image/jpg non-standard MIME type +print("\nTest 8: Non-standard image/jpg MIME type") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='pink') +img.save(buf, format='JPEG') +ok, res = test_upload('test8.jpg', buf.getvalue(), 'image/jpg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + +# Test 9: JFIF extension +print("\nTest 9: JPEG with .jfif extension") +buf = io.BytesIO() +img = PILImage.new('RGB', (800, 600), color='brown') +img.save(buf, format='JPEG') +ok, res = test_upload('test9.jfif', buf.getvalue(), 'image/jpeg') +print(f" Result: {'PASS' if ok else 'FAIL'} - {res}") + From 5e8e393bccdbed4922745525220e34a1f1f69c6b Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 09:05:00 +0300 Subject: [PATCH 36/51] BEN-2954: bump-my-version added and configed with makefile --- .bumpversion.toml | 35 +++++++++++++++++++++++++++++++++++ Makefile | 29 +++++++++++++++++++---------- 2 files changed, 54 insertions(+), 10 deletions(-) create mode 100755 .bumpversion.toml diff --git a/.bumpversion.toml b/.bumpversion.toml new file mode 100755 index 000000000..278ffb298 --- /dev/null +++ b/.bumpversion.toml @@ -0,0 +1,35 @@ +[tool.bumpversion] +current_version = "3.4.4+pbs.4.dev.gdc8739a0.20260611" +commit = false +tag = false +parse = """(?x) + (?P0|[1-9]\\d*)\\. + (?P0|[1-9]\\d*)\\. + (?P0|[1-9]\\d*) + \\+pbs\\. + (?P0|[1-9]\\d*) + (?: + \\.(?Pdev) + \\.g[0-9a-f]{7,40} + \\.\\d{8} + )? +""" + +serialize = [ + "{major}.{minor}.{patch}+pbs.{pbs}.{prekind}.g{$GITHUB_SHA}.{now:%Y%m%d}", + "{major}.{minor}.{patch}+pbs.{pbs}" +] + + +[tool.bumpversion.parts.prekind] +values = [ + "", + "dev" +] +optional_value = "" + + +[[tool.bumpversion.files]] +filename = "filer/__init__.py" +search = "{current_version}" +replace = "{new_version}" diff --git a/Makefile b/Makefile index 42b7ab51c..7d137356d 100644 --- a/Makefile +++ b/Makefile @@ -3,32 +3,41 @@ help: ## This help. @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST) .DEFAULT_GOAL := help +.PHONY: bump-pbs bump-prekind + IMAGE_NAME := django-filer-test CONTAINER_NAME := django-filer-test-run SHELL:=/bin/bash -## Build the test Docker image -test-build: +test-build: ## Build the test Docker image docker build -f Dockerfile.test -t $(IMAGE_NAME) . -## Run unit tests in a Docker container -test: +test: ## Run unit tests in a Docker container @if [ -z "$$(docker images -q $(IMAGE_NAME) 2>/dev/null)" ]; then \ echo "Image not found, building..."; \ $(MAKE) test-build; \ fi docker run --rm --name $(CONTAINER_NAME) $(IMAGE_NAME) -## Run tests with verbose output and stop on first failure -test-verbose: test-build +test-verbose: test-build ## Run tests with verbose output and stop on first failure docker run --rm --name $(CONTAINER_NAME) $(IMAGE_NAME) \ pytest -vx --ds=filer.test_settings --pyargs filer.tests -## Open a shell in the test container (useful for debugging) -test-shell: test-build +test-shell: test-build ## Open a shell in the test container (useful for debugging) docker run --rm -it --name $(CONTAINER_NAME) $(IMAGE_NAME) /bin/bash -## Remove the test Docker image -test-clean: +test-clean: ## Remove the test Docker image -docker rmi $(IMAGE_NAME) + +bump-pbs: ## Bump PBS number: 3.4.4+pbs.3 -> 3.4.4+pbs.4 + bump-my-version bump --allow-dirty pbs + +bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g.YYYYMMDD + @current=$$(grep "^__version__" filer/__init__.py | sed "s/^__version__ = '//;s/'.*//"); \ + if echo "$$current" | grep -q '\.dev\.'; then \ + echo "Nothing to bump: '$$current' is already a dev release from this commit. To create another dev release you must make at least one new commit first. To create a release bump run 'make bump-pbs'."; \ + exit 1; \ + fi; \ + GITHUB_SHA="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}" bump-my-version bump --allow-dirty prekind + From 3deb34fca99ad8bba3d6a325886e32101c3d3afc Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 09:41:30 +0300 Subject: [PATCH 37/51] BEN-2954: fix version in .bumpversion.toml --- .bumpversion.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bumpversion.toml b/.bumpversion.toml index 278ffb298..f5f14423c 100755 --- a/.bumpversion.toml +++ b/.bumpversion.toml @@ -1,5 +1,5 @@ [tool.bumpversion] -current_version = "3.4.4+pbs.4.dev.gdc8739a0.20260611" +current_version = "3.4.4+pbs.1" commit = false tag = false parse = """(?x) From 913a81a0a0606b1d39e19aaeb5326473ea5f4170 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 09:59:37 +0300 Subject: [PATCH 38/51] BEN-2954: use short sha --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7d137356d..3cff811bc 100644 --- a/Makefile +++ b/Makefile @@ -39,5 +39,6 @@ bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g echo "Nothing to bump: '$$current' is already a dev release from this commit. To create another dev release you must make at least one new commit first. To create a release bump run 'make bump-pbs'."; \ exit 1; \ fi; \ - GITHUB_SHA="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}" bump-my-version bump --allow-dirty prekind + sha="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}"; \ + GITHUB_SHA="$${sha:0:8}" bump-my-version bump --allow-dirty prekind From ea07107e7d2b0c5c82f3d0561e55f40ad9e37e1a Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 10:31:19 +0300 Subject: [PATCH 39/51] BEN-2954: nexus publish commands --- Makefile | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3cff811bc..861f6d461 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ help: ## This help. @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST) .DEFAULT_GOAL := help -.PHONY: bump-pbs bump-prekind +.PHONY: bump-pbs bump-prekind build publish-nexus publish-nexus-dry-run IMAGE_NAME := django-filer-test CONTAINER_NAME := django-filer-test-run @@ -42,3 +42,17 @@ bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g sha="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}"; \ GITHUB_SHA="$${sha:0:8}" bump-my-version bump --allow-dirty prekind + +build: ## Build distribution packages (sdist and wheel) + rm -rf dist/ build/ *.egg-info + python3 -m pip install --upgrade --break-system-packages build + python3 -m build + +publish-nexus: build ## Publish to Nexus using ~/.pypirc config + python3 -m pip install --upgrade --break-system-packages twine + python3 -m twine upload -r nexus dist/* + +publish-nexus-dry-run: build ## Validate packages ready for Nexus (without uploading) + python3 -m pip install --upgrade --break-system-packages twine + python3 -m twine check dist/* + From 7f83356f73e488f4a94f57c6c717348f453eca0e Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 10:57:23 +0300 Subject: [PATCH 40/51] BEN-2954: fix makefile for second prekind bump version --- Makefile | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 861f6d461..79ee7b379 100644 --- a/Makefile +++ b/Makefile @@ -35,12 +35,24 @@ bump-pbs: ## Bump PBS number: 3.4.4+pbs.3 -> 3.4.4+pbs.4 bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g.YYYYMMDD @current=$$(grep "^__version__" filer/__init__.py | sed "s/^__version__ = '//;s/'.*//"); \ + sha="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}"; \ + sha8="$${sha:0:8}"; \ if echo "$$current" | grep -q '\.dev\.'; then \ - echo "Nothing to bump: '$$current' is already a dev release from this commit. To create another dev release you must make at least one new commit first. To create a release bump run 'make bump-pbs'."; \ - exit 1; \ + current_sha=$$(echo "$$current" | sed -nE "s/.*\.dev\.g([0-9a-f]{7,40})\.[0-9]{8}/\1/p"); \ + current_sha8="$${current_sha:0:8}"; \ + if [ "$$current_sha8" = "$$sha8" ]; then \ + echo "Nothing to bump: '$$current' already targets commit '$$sha8'. Create a new commit first or run 'make bump-pbs'."; \ + exit 1; \ + fi; \ + base=$$(echo "$$current" | sed -E "s/\.dev\.g[0-9a-f]+\.[0-9]{8}$$//"); \ + new_version="$$base.dev.g$$sha8.$$(date +%Y%m%d)"; \ + echo "Updating dev release for new commit: $$current -> $$new_version"; \ + bump-my-version bump --allow-dirty --new-version "$$new_version" || exit $$?; \ + sed -i.bak -E "s/^current_version = \".*\"/current_version = \"$$new_version\"/" .bumpversion.toml; \ + rm -f .bumpversion.toml.bak; \ + exit 0; \ fi; \ - sha="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}"; \ - GITHUB_SHA="$${sha:0:8}" bump-my-version bump --allow-dirty prekind + GITHUB_SHA="$$sha8" bump-my-version bump --allow-dirty prekind build: ## Build distribution packages (sdist and wheel) From 1c4c07918042ce39779540a3905d7c17fedc9633 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 11:19:34 +0300 Subject: [PATCH 41/51] BEN-2954: fix prekind second attempt from a different github hash --- Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 79ee7b379..165ac45dd 100644 --- a/Makefile +++ b/Makefile @@ -46,13 +46,13 @@ bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g fi; \ base=$$(echo "$$current" | sed -E "s/\.dev\.g[0-9a-f]+\.[0-9]{8}$$//"); \ new_version="$$base.dev.g$$sha8.$$(date +%Y%m%d)"; \ - echo "Updating dev release for new commit: $$current -> $$new_version"; \ - bump-my-version bump --allow-dirty --new-version "$$new_version" || exit $$?; \ - sed -i.bak -E "s/^current_version = \".*\"/current_version = \"$$new_version\"/" .bumpversion.toml; \ - rm -f .bumpversion.toml.bak; \ - exit 0; \ + else \ + base="$$current"; \ + new_version="$$base.dev.g$$sha8.$$(date +%Y%m%d)"; \ fi; \ - GITHUB_SHA="$$sha8" bump-my-version bump --allow-dirty prekind + echo "Bumping: $$current -> $$new_version"; \ + sed -i.bak "s/__version__ = '$$current'/__version__ = '$$new_version'/" filer/__init__.py && rm -f filer/__init__.py.bak; \ + sed -i.bak -E "s/^current_version = \"[^\"]+\"/current_version = \"$$new_version\"/" .bumpversion.toml && rm -f .bumpversion.toml.bak build: ## Build distribution packages (sdist and wheel) From 68a01890cc01404adf0228b77ec24bfd031ab933 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 11:45:38 +0300 Subject: [PATCH 42/51] BEN-2954: debug file upload --- filer/admin/clipboardadmin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index d4eccbe42..6f7cb3c60 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -122,8 +122,8 @@ def ajax_upload(request, folder_id=None): ): mime_type = guessed_type - logger.debug("[ajax_upload] filename=%s, mime_type=%s, size=%s", - filename, mime_type, getattr(upload, 'size', '?')) + logger.warning("[ajax_upload] filename=%s, mime_type=%s, size=%s", + filename, mime_type, getattr(upload, 'size', '?')) # Get clipboard clipboard = Clipboard.objects.get_or_create(user=request.user)[0] @@ -144,7 +144,7 @@ def ajax_upload(request, folder_id=None): fields=('original_filename', 'owner', 'file') ) break - logger.debug("[ajax_upload] matched file type: %s", FileSubClass.__name__) + logger.warning("[ajax_upload] matched file type: %s", FileSubClass.__name__) uploadform = FileForm({'original_filename': filename, 'owner': request.user.pk}, {'file': upload}) uploadform.request = request From b0545da4dde7af5b2ca0a59a9c58b4add56cbbb8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 12:07:21 +0300 Subject: [PATCH 43/51] BEN-2954: use sha param when executed from GHA in order to create package with django-filer and not bento3 commit sha --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 165ac45dd..41e4579b9 100644 --- a/Makefile +++ b/Makefile @@ -33,9 +33,9 @@ test-clean: ## Remove the test Docker image bump-pbs: ## Bump PBS number: 3.4.4+pbs.3 -> 3.4.4+pbs.4 bump-my-version bump --allow-dirty pbs -bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g.YYYYMMDD +bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g.YYYYMMDD. Pass sha= to override. @current=$$(grep "^__version__" filer/__init__.py | sed "s/^__version__ = '//;s/'.*//"); \ - sha="$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}"; \ + sha="$${sha:-$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}}"; \ sha8="$${sha:0:8}"; \ if echo "$$current" | grep -q '\.dev\.'; then \ current_sha=$$(echo "$$current" | sed -nE "s/.*\.dev\.g([0-9a-f]{7,40})\.[0-9]{8}/\1/p"); \ From a5e264f38e53e5572fe87c58e839a25f8ff401c2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 12:08:56 +0300 Subject: [PATCH 44/51] BEN-2954: use print --- filer/admin/clipboardadmin.py | 21 ++++++++++----------- filer/models/abstract.py | 12 ++++++------ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index 6f7cb3c60..a91dcbd0d 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -1,4 +1,4 @@ -import logging +import sys from django.contrib import admin, messages from django.core.exceptions import ValidationError @@ -77,7 +77,6 @@ def ajax_upload(request, folder_id=None): """ Receives an upload from the uploader. Receives only one file at a time. """ - logger = logging.getLogger(__name__) if not request.user.has_perm("filer.add_file"): messages.error(request, NO_PERMISSIONS) @@ -106,7 +105,7 @@ def ajax_upload(request, folder_id=None): # else process the request as usual upload, filename, is_raw, mime_type = handle_upload(request) except Exception as e: - logger.exception("[ajax_upload] Error handling upload: %s", e) + print(f"[ajax_upload] Error handling upload: {e}", flush=True) return JsonResponse({'error': str(e)}) # Truncate long filenames @@ -122,8 +121,7 @@ def ajax_upload(request, folder_id=None): ): mime_type = guessed_type - logger.warning("[ajax_upload] filename=%s, mime_type=%s, size=%s", - filename, mime_type, getattr(upload, 'size', '?')) + print(f"[ajax_upload] filename={filename}, mime_type={mime_type}, size={getattr(upload, 'size', '?')}", flush=True) # Get clipboard clipboard = Clipboard.objects.get_or_create(user=request.user)[0] @@ -144,7 +142,7 @@ def ajax_upload(request, folder_id=None): fields=('original_filename', 'owner', 'file') ) break - logger.warning("[ajax_upload] matched file type: %s", FileSubClass.__name__) + print(f"[ajax_upload] matched file type: {FileSubClass.__name__}", flush=True) uploadform = FileForm({'original_filename': filename, 'owner': request.user.pk}, {'file': upload}) uploadform.request = request @@ -156,14 +154,15 @@ def ajax_upload(request, folder_id=None): # Enforce the FILER_IS_PUBLIC_DEFAULT file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT except ValidationError as error: - logger.warning("[ajax_upload] Validation error for '%s': %s", filename, error) + print(f"[ajax_upload] Validation error for '{filename}': {error}", flush=True) messages.error(request, str(error)) return JsonResponse({'error': str(error)}) file_obj.folder = folder try: file_obj.save() except Exception as error: - logger.exception("[ajax_upload] Error saving file '%s': %s", filename, error) + print(f"[ajax_upload] Error saving file '{filename}': {error}", flush=True) + import traceback; traceback.print_exc() messages.error(request, str(error)) return JsonResponse({'error': str(error)}) clipboard_item = ClipboardItem( @@ -187,12 +186,12 @@ def ajax_upload(request, folder_id=None): data['original_image'] = file_obj.url return JsonResponse(data) except Exception as error: - logger.exception("[ajax_upload] Error building response for '%s': %s", filename, error) + print(f"[ajax_upload] Error building response for '{filename}': {error}", flush=True) + import traceback; traceback.print_exc() messages.error(request, str(error)) return JsonResponse({"error": str(error)}) else: - logger.warning("[ajax_upload] Form invalid for '%s' (mime=%s, type=%s): %s", - filename, mime_type, FileSubClass.__name__, uploadform.errors.as_text()) + print(f"[ajax_upload] Form invalid for '{filename}' (mime={mime_type}, type={FileSubClass.__name__}): {uploadform.errors.as_text()}", flush=True) for key, error_list in uploadform.errors.items(): for error in error_list: messages.error(request, error) diff --git a/filer/models/abstract.py b/filer/models/abstract.py index d6d552ee2..efa073566 100644 --- a/filer/models/abstract.py +++ b/filer/models/abstract.py @@ -140,12 +140,12 @@ def file_data_changed(self, post_init=False): self._transparent = easy_thumbnails.utils.is_transparent(pil_image) imgfile.seek(0) except Exception as e: - import logging - logging.getLogger(__name__).warning( - "Could not read image dimensions for '%s' (mime=%s): %s: %s", - getattr(self, 'original_filename', '?'), - getattr(self, 'mime_type', '?'), - type(e).__name__, e, + print( + f"[ajax_upload] Could not read image dimensions for " + f"'{getattr(self, 'original_filename', '?')}' " + f"(mime={getattr(self, 'mime_type', '?')}): " + f"{type(e).__name__}: {e}", + flush=True, ) if post_init is False: # in case `imgfile` could not be found, unset dimensions From c52b9ba22dceff6afa063cee20a35fbe1abcbc58 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 12:23:22 +0300 Subject: [PATCH 45/51] BEN-2954: fix stale clipboard --- filer/admin/clipboardadmin.py | 11 ++++++++--- filer/tests/admin.py | 11 +++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index a91dcbd0d..9d2c9032b 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -126,11 +126,16 @@ def ajax_upload(request, folder_id=None): # Get clipboard clipboard = Clipboard.objects.get_or_create(user=request.user)[0] - # Check for duplicate files in clipboard + # Remove any stale clipboard entries with the same filename + # (e.g. from previous failed upload attempts) to allow re-upload existing_in_clipboard = clipboard.files.filter(original_filename=filename) if existing_in_clipboard.exists(): - error_msg = ClipboardAdmin.messages['already-exists'].format(filename) - return JsonResponse({'error': error_msg}) + print(f"[ajax_upload] Removing {existing_in_clipboard.count()} stale clipboard entry for '{filename}'", flush=True) + # Get the actual file pks before clearing the M2M + stale_file_pks = list(existing_in_clipboard.values_list('pk', flat=True)) + ClipboardItem.objects.filter(clipboard=clipboard, file_id__in=stale_file_pks).delete() + from ..models import File as FilerFile + FilerFile.objects.filter(pk__in=stale_file_pks).delete() # find the file type for filer_class in filer_settings.FILER_FILE_MODELS: diff --git a/filer/tests/admin.py b/filer/tests/admin.py index c064f94fb..120e507e8 100644 --- a/filer/tests/admin.py +++ b/filer/tests/admin.py @@ -246,19 +246,18 @@ def test_file_upload_no_duplicate_files(self, extra_headers={}): self.assertEqual(Clipboard.objects.count(), 1) clip = Clipboard.objects.get(id=1) # there is(or should be) just one clipboard self.assertEqual(clip.files.count(), 1) - # upload the same file again. This must fail since the - # clipboard can't contain two files with the same name + # upload the same file again with a fresh file handle. + # The stale clipboard entry should be replaced, not rejected. + file_obj2 = dj_files.File(open(self.filename, 'rb')) response = self.client.post( reverse('admin:filer-ajax_upload'), { 'Filename': self.image_name, - 'Filedata': file_obj, + 'Filedata': file_obj2, 'jsessionid': self.client.session.session_key, }, **extra_headers ) self.assertEqual(Image.objects.count(), 1) - self.assertIn('error', response.content.decode()) - errormsg = ClipboardAdmin.messages['already-exists'].format(self.image_name) - self.assertIn(errormsg, response.content.decode()) + self.assertNotIn('error', response.content.decode()) self.assertEqual(clip.files.count(), 1) def test_filer_ajax_upload_file(self): From 0c382f2fe15cd3da5a60628bc32d9af131336666 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 12:49:03 +0300 Subject: [PATCH 46/51] BEN-2954: remove debug logs --- filer/admin/clipboardadmin.py | 11 ----------- filer/models/abstract.py | 12 ++++++------ 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/filer/admin/clipboardadmin.py b/filer/admin/clipboardadmin.py index 9d2c9032b..fbcc41cf2 100644 --- a/filer/admin/clipboardadmin.py +++ b/filer/admin/clipboardadmin.py @@ -1,4 +1,3 @@ -import sys from django.contrib import admin, messages from django.core.exceptions import ValidationError @@ -105,7 +104,6 @@ def ajax_upload(request, folder_id=None): # else process the request as usual upload, filename, is_raw, mime_type = handle_upload(request) except Exception as e: - print(f"[ajax_upload] Error handling upload: {e}", flush=True) return JsonResponse({'error': str(e)}) # Truncate long filenames @@ -121,7 +119,6 @@ def ajax_upload(request, folder_id=None): ): mime_type = guessed_type - print(f"[ajax_upload] filename={filename}, mime_type={mime_type}, size={getattr(upload, 'size', '?')}", flush=True) # Get clipboard clipboard = Clipboard.objects.get_or_create(user=request.user)[0] @@ -130,7 +127,6 @@ def ajax_upload(request, folder_id=None): # (e.g. from previous failed upload attempts) to allow re-upload existing_in_clipboard = clipboard.files.filter(original_filename=filename) if existing_in_clipboard.exists(): - print(f"[ajax_upload] Removing {existing_in_clipboard.count()} stale clipboard entry for '{filename}'", flush=True) # Get the actual file pks before clearing the M2M stale_file_pks = list(existing_in_clipboard.values_list('pk', flat=True)) ClipboardItem.objects.filter(clipboard=clipboard, file_id__in=stale_file_pks).delete() @@ -147,7 +143,6 @@ def ajax_upload(request, folder_id=None): fields=('original_filename', 'owner', 'file') ) break - print(f"[ajax_upload] matched file type: {FileSubClass.__name__}", flush=True) uploadform = FileForm({'original_filename': filename, 'owner': request.user.pk}, {'file': upload}) uploadform.request = request @@ -159,15 +154,12 @@ def ajax_upload(request, folder_id=None): # Enforce the FILER_IS_PUBLIC_DEFAULT file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT except ValidationError as error: - print(f"[ajax_upload] Validation error for '{filename}': {error}", flush=True) messages.error(request, str(error)) return JsonResponse({'error': str(error)}) file_obj.folder = folder try: file_obj.save() except Exception as error: - print(f"[ajax_upload] Error saving file '{filename}': {error}", flush=True) - import traceback; traceback.print_exc() messages.error(request, str(error)) return JsonResponse({'error': str(error)}) clipboard_item = ClipboardItem( @@ -191,12 +183,9 @@ def ajax_upload(request, folder_id=None): data['original_image'] = file_obj.url return JsonResponse(data) except Exception as error: - print(f"[ajax_upload] Error building response for '{filename}': {error}", flush=True) - import traceback; traceback.print_exc() messages.error(request, str(error)) return JsonResponse({"error": str(error)}) else: - print(f"[ajax_upload] Form invalid for '{filename}' (mime={mime_type}, type={FileSubClass.__name__}): {uploadform.errors.as_text()}", flush=True) for key, error_list in uploadform.errors.items(): for error in error_list: messages.error(request, error) diff --git a/filer/models/abstract.py b/filer/models/abstract.py index efa073566..67e23060b 100644 --- a/filer/models/abstract.py +++ b/filer/models/abstract.py @@ -140,12 +140,12 @@ def file_data_changed(self, post_init=False): self._transparent = easy_thumbnails.utils.is_transparent(pil_image) imgfile.seek(0) except Exception as e: - print( - f"[ajax_upload] Could not read image dimensions for " - f"'{getattr(self, 'original_filename', '?')}' " - f"(mime={getattr(self, 'mime_type', '?')}): " - f"{type(e).__name__}: {e}", - flush=True, + logger.warning( + "Could not read image dimensions for '%s' (mime=%s): %s: %s", + getattr(self, 'original_filename', '?'), + getattr(self, 'mime_type', '?'), + type(e).__name__, + e, ) if post_init is False: # in case `imgfile` could not be found, unset dimensions From 840997d564c57be613626b6809c5a9149b9da5e1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Thu, 11 Jun 2026 12:55:57 +0300 Subject: [PATCH 47/51] BEN-2954: lazy load folder tree --- filer/admin/folderadmin.py | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 8a39324f9..3ebad8917 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -1043,6 +1043,29 @@ def _move_files_and_folders_impl(self, files_queryset, folders_queryset, destina f.parent = destination f.save() + def _validate_destination(self, request, destination, folders_queryset, current_folder, allow_self=False): + """ + Validate that destination is a legitimate target for copy/move without + recursively traversing the entire folder tree. Returns True if valid. + """ + if not destination.has_read_permission(request): + return False + if not destination.has_add_children_permission(request): + return False + if not allow_self and destination == current_folder: + return False + # Cannot move/copy into one of the selected folders or their descendants + selected_pks = set(folders_queryset.values_list('pk', flat=True)) + if destination.pk in selected_pks: + return False + # Check that destination is not a descendant of any selected folder + ancestor = destination.parent + while ancestor is not None: + if ancestor.pk in selected_pks: + return False + ancestor = ancestor.parent + return True + def move_files_and_folders(self, request, files_queryset, folders_queryset): opts = self.model._meta app_label = opts.app_label @@ -1057,7 +1080,6 @@ def move_files_and_folders(self, request, files_queryset, folders_queryset): current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) perms_needed = self._check_move_perms(request, files_queryset, folders_queryset) to_move = self._list_all_to_copy_or_move(request, files_queryset, folders_queryset) - folders = self._list_all_destination_folders(request, folders_queryset, current_folder, False) if request.method == 'POST' and request.POST.get('post'): if perms_needed: @@ -1066,8 +1088,7 @@ def move_files_and_folders(self, request, files_queryset, folders_queryset): destination = self.get_queryset(request).get(pk=request.POST.get('destination')) except self.model.DoesNotExist: raise PermissionDenied - folders_dict = dict(folders) - if destination not in folders_dict or not folders_dict[destination][1]: + if not self._validate_destination(request, destination, folders_queryset, current_folder): raise PermissionDenied # PBS: validate destination is not a core folder @@ -1121,7 +1142,7 @@ def move_files_and_folders(self, request, files_queryset, folders_queryset): "instance": current_folder, "breadcrumbs_action": _("Move files and/or folders"), "to_move": to_move, - "destination_folders": folders, + "destination_folders": [], "files_queryset": files_queryset, "folders_queryset": folders_queryset, "perms_lacking": perms_needed, @@ -1429,7 +1450,6 @@ def copy_files_and_folders(self, request, files_queryset, folders_queryset): current_folder = self._get_current_action_folder(request, files_queryset, folders_queryset) perms_needed = self._check_copy_perms(request, files_queryset, folders_queryset) to_copy = self._list_all_to_copy_or_move(request, files_queryset, folders_queryset) - folders = self._list_all_destination_folders(request, folders_queryset, current_folder, False) if request.method == 'POST' and request.POST.get('post'): if perms_needed: @@ -1440,8 +1460,7 @@ def copy_files_and_folders(self, request, files_queryset, folders_queryset): destination = self.get_queryset(request).get(pk=request.POST.get('destination')) except self.model.DoesNotExist: raise PermissionDenied - folders_dict = dict(folders) - if destination not in folders_dict or not folders_dict[destination][1]: + if not self._validate_destination(request, destination, folders_queryset, current_folder): raise PermissionDenied # PBS: validate destination is not a core folder @@ -1486,7 +1505,7 @@ def copy_files_and_folders(self, request, files_queryset, folders_queryset): "instance": current_folder, "breadcrumbs_action": _("Copy files and/or folders"), "to_copy": to_copy, - "destination_folders": folders, + "destination_folders": [], "selected_destination_folder": selected_destination_folder, "copy_form": form, "files_queryset": files_queryset, From a1ba3a68d86fd821f0da88051f2c9b96f3520ba3 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Mon, 15 Jun 2026 15:01:11 +0300 Subject: [PATCH 48/51] BEN-2954: fallback improved --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 41e4579b9..7202313c9 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ bump-pbs: ## Bump PBS number: 3.4.4+pbs.3 -> 3.4.4+pbs.4 bump-prekind: ## Bump prekind dev version: 3.4.4+pbs.3 -> 3.4.4+pbs.3.dev.g.YYYYMMDD. Pass sha= to override. @current=$$(grep "^__version__" filer/__init__.py | sed "s/^__version__ = '//;s/'.*//"); \ - sha="$${sha:-$${GITHUB_SHA:-$$(git rev-parse --short=8 HEAD)}}"; \ + sha="$${sha:-$$(git rev-parse --short=8 HEAD)}"; \ sha8="$${sha:0:8}"; \ if echo "$$current" | grep -q '\.dev\.'; then \ current_sha=$$(echo "$$current" | sed -nE "s/.*\.dev\.g([0-9a-f]{7,40})\.[0-9]{8}/\1/p"); \ From df51be834a1d62db3940bbe2c0d32f4a42d9bf67 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 16 Jun 2026 10:26:55 +0300 Subject: [PATCH 49/51] BEN-2954: make uploads looser due to pillow limitations --- filer/models/abstract.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/filer/models/abstract.py b/filer/models/abstract.py index 67e23060b..f4747fd23 100644 --- a/filer/models/abstract.py +++ b/filer/models/abstract.py @@ -162,18 +162,19 @@ def clean(self): # Only check pixel size for new uploads (no pk yet) if self.file and FILER_MAX_IMAGE_PIXELS and not self.pk: if self._width is None or self._height is None: - # Image dimensions could not be determined – this could mean - # the image format is not recognized by Pillow or the image is - # too large for Pillow to handle. - msg = _( - "Image \"%(filename)s\" could not be processed: format not recognized or image " - "too large. Supported formats: JPEG, PNG, GIF, WebP, SVG. " - "Max resolution: %(max_pixels)d million pixels." - ) % dict( - filename=self.original_filename or '?', - max_pixels=FILER_MAX_IMAGE_PIXELS // 1000000, + # Image dimensions could not be determined – this can happen + # for valid images that Pillow cannot fully parse (e.g. unusual + # JPEG markers, CMYK colour space, progressive encoding, etc.). + # Do NOT reject the upload; just skip the pixel-limit check and + # log a warning so operators can investigate if needed. + logger.warning( + "Skipping pixel-limit check for '%s' (mime=%s): " + "image dimensions could not be determined.", + getattr(self, 'original_filename', '?'), + getattr(self, 'mime_type', '?'), ) - raise ValidationError(str(msg), code="image_size") + super().clean() + return width, height = max(1, self.width), max(1, self.height) pixels: int = width * height From b8be6e2c4413fd1a610f1acc38797c6c36771c71 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Tue, 16 Jun 2026 11:07:59 +0300 Subject: [PATCH 50/51] BEN-2954: role restriction --- filer/admin/folderadmin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/filer/admin/folderadmin.py b/filer/admin/folderadmin.py index 3ebad8917..482d98b44 100644 --- a/filer/admin/folderadmin.py +++ b/filer/admin/folderadmin.py @@ -1366,13 +1366,13 @@ def enable_restriction(self, request, files_qs, folders_qs): return self.files_toggle_restriction( request, True, files_qs, folders_qs) - enable_restriction.short_description = _("Enable restriction for selected files and/or folders") + enable_restriction.short_description = _("Enable role restriction for selected files and/or folders") def disable_restriction(self, request, files_qs, folders_qs): return self.files_toggle_restriction( request, False, files_qs, folders_qs) - disable_restriction.short_description = _("Disable restriction for selected files and/or folders") + disable_restriction.short_description = _("Disable role restriction for selected files and/or folders") def _generate_new_filename(self, filename, suffix): basename, extension = os.path.splitext(filename) From 4811f1f61bcf65de9aef72678fcf7499c208eba7 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Wed, 17 Jun 2026 12:46:11 +0300 Subject: [PATCH 51/51] BEN-2954: developer guide readme --- README_PBS.md | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 README_PBS.md diff --git a/README_PBS.md b/README_PBS.md new file mode 100644 index 000000000..40ba51006 --- /dev/null +++ b/README_PBS.md @@ -0,0 +1,150 @@ +# PBS Fork – Developer Guide + +## Versioning Scheme + +This fork uses a PBS-specific versioning scheme: + +``` ++pbs. +``` + +Example: `3.4.4+pbs.1`, `3.4.4+pbs.2` + +Development (pre-release) versions append a dev suffix: + +``` ++pbs..dev.g.YYYYMMDD +``` + +Example: `3.4.4+pbs.1.dev.g1a2b3c4d.20260617` + +The version is stored in `filer/__init__.py` and read dynamically by `pyproject.toml`. + +--- + +## Makefile Targets + +Run `make help` to see all available targets. Summary: + +| Target | Description | +|--------|-------------| +| `make help` | Show all available targets | +| `make test-build` | Build the test Docker image | +| `make test` | Run unit tests in a Docker container (builds image if missing) | +| `make test-verbose` | Run tests with verbose output, stop on first failure | +| `make test-shell` | Open a shell in the test container (for debugging) | +| `make test-clean` | Remove the test Docker image | +| `make bump-pbs` | Bump the PBS version number (e.g. `+pbs.1` → `+pbs.2`) | +| `make bump-prekind` | Create a dev pre-release version from the current commit | +| `make build` | Build sdist and wheel packages into `dist/` | +| `make publish-nexus` | Build and upload packages to Nexus | +| `make publish-nexus-dry-run` | Build and validate packages without uploading | + +--- + +## How to Publish a New Version + +### Prerequisites + +- Python 3 installed +- `bump-my-version` installed (`pip install bump-my-version`) +- `~/.pypirc` configured with a `[nexus]` section containing your repository URL and credentials + +### Steps + +#### 1. Run tests + +```bash +make test +``` + +Ensure all tests pass before proceeding. + +#### 2. Bump the PBS version + +```bash +make bump-pbs +``` + +This increments the PBS number (e.g. `3.4.4+pbs.1` → `3.4.4+pbs.2`) in both `filer/__init__.py` and `.bumpversion.toml`. + +#### 3. Commit and push + +```bash +git add filer/__init__.py .bumpversion.toml +git commit -m "Bump to $(grep __version__ filer/__init__.py | sed "s/.*'//;s/'.*//")" +git push +``` + +#### 4. Publish to Nexus + +```bash +make publish-nexus +``` + +This will: +1. Clean previous build artifacts +2. Build source distribution and wheel (`python3 -m build`) +3. Upload to Nexus using `twine` with the `[nexus]` section from `~/.pypirc` + +#### 5. (Optional) Validate without uploading + +```bash +make publish-nexus-dry-run +``` + +Runs `twine check` on the built packages to verify they are well-formed. + +--- + +## Publishing a Dev (Pre-release) Version + +Use this when you need to test unreleased changes without a formal PBS bump: + +```bash +make bump-prekind +``` + +This creates a version like `3.4.4+pbs.1.dev.g1a2b3c4d.20260617` based on the current HEAD commit and date. + +You can override the commit SHA: + +```bash +make bump-prekind sha=abc12345 +``` + +Then publish normally: + +```bash +make publish-nexus +``` + +> **Note:** To bump again on the same commit, you must first run `make bump-pbs` to move to the next PBS number. + +--- + +## Publishing via GitHub Actions (Bento3) + +You can also publish a new version using the **bento3** GitHub Actions workflow: + +🔗 [publish_django_filer.yml](https://github.com/pbs-digital/bento3/actions/workflows/publish_django_filer.yml) + +Trigger the workflow manually from the Actions tab. This is the recommended approach for CI-driven releases. + +--- + +## `~/.pypirc` Configuration (for local publishing) + +Ensure your `~/.pypirc` contains a `[nexus]` entry: + +```ini +[distutils] +index-servers = + nexus + +[nexus] +repository = https://your-nexus-instance/repository/pypi-hosted/ +username = your-username +password = your-password-or-token +``` +