diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..f9586e8 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,18 @@ +version: 2 +updates: + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "github-actions" + directory: "/.github/workflows" + schedule: + interval: "daily" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "npm" + directory: "/backend/" + schedule: + interval: "daily" diff --git a/.github/workflows/close-issue-if-noresponse.yml b/.github/workflows/close-issue-if-noresponse.yml new file mode 100644 index 0000000..64d4756 --- /dev/null +++ b/.github/workflows/close-issue-if-noresponse.yml @@ -0,0 +1,38 @@ +name: No Response + +# Both `issue_comment` and `scheduled` event types are required for this Action +# to work properly. +on: + issue_comment: + types: [created] + schedule: + # Schedule for five minutes after the hour, every hour + - cron: '5 * * * *' + +# By specifying the access of one of the scopes, all of those that are not +# specified are set to 'none'. +permissions: + issues: write + +jobs: + noResponse: + runs-on: ubuntu-latest + if: ${{ github.repository == 'Tzahi12345/YoutubeDL-Material' }} + steps: + - uses: lee-dohm/no-response@v0.5.0 + with: + token: ${{ github.token }} + # Comment to post when closing an Issue for lack of response. Set to `false` to disable + closeComment: > + This issue has been automatically closed because there has been no response + to our request for more information from the original author. With only the + information that is currently in the issue, we don't have enough information + to take action. Please reach out if you have or find the answers we need so + that we can investigate further. We will re-open this issue if you provide us + with the requested information with a comment under this issue. + Thank you for your understanding and for trying to help make this application + a better one! + # Number of days of inactivity before an issue is closed for lack of response. + daysUntilClose: 21 + # Label requiring a response. + responseRequiredLabel: "💬 response-needed" diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index 3063a97..f819f65 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -6,19 +6,25 @@ on: tags: description: 'Docker tags' required: true + release: + types: [published] jobs: build-and-push: runs-on: ubuntu-latest + steps: - name: checkout code uses: actions/checkout@v2 + - name: Set hash id: vars run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + - name: Get current date id: date run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - name: create-json id: create-json uses: jsdaniell/create-json@1.1.2 @@ -26,15 +32,49 @@ jobs: name: "version.json" json: '{"type": "docker", "tag": "latest", "commit": "${{ steps.vars.outputs.sha_short }}", "date": "${{ steps.date.outputs.date }}"}' dir: 'backend/' + + - name: Set image tag + id: tags + run: | + if [ ${{ github.event.action }} == "workflow_dispatch" ]; then + echo "::set-output name=tags::${{ github.event.inputs.tags }}" + elif [ ${{ github.event.action }} == "release" ]; then + echo "::set-output name=tags::${{ github.event.release.tag_name }}" + else + echo "Unknown workflow trigger: ${{ github.event.action }}! Cannot determine default tag." + exit 1 + fi + + - name: Generate Docker image metadata + id: docker-meta + uses: docker/metadata-action@v4 + with: + images: | + ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }} + ghcr.io/${{ github.repository_owner }}/${{ secrets.DOCKERHUB_REPO }} + tags: | + raw=${{ steps.tags.outputs.tags }} + raw=latest + - name: setup platform emulator uses: docker/setup-qemu-action@v1 + - name: setup multi-arch docker build uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: build & push images uses: docker/build-push-action@v2 with: @@ -42,4 +82,5 @@ jobs: file: ./Dockerfile platforms: linux/amd64,linux/arm,linux/arm64/v8 push: true - tags: ${{ github.event.inputs.tags }} + tags: ${{ steps.docker-meta.outputs.tags }} + labels: ${{ steps.docker-meta.outputs.labels }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6cd9cc6..e59052f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,12 +20,15 @@ jobs: steps: - name: checkout code uses: actions/checkout@v2 + - name: Set hash id: vars run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" + - name: Get current date id: date run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - name: create-json id: create-json uses: jsdaniell/create-json@1.1.2 @@ -33,15 +36,42 @@ jobs: name: "version.json" json: '{"type": "docker", "tag": "${{secrets.DOCKERHUB_MASTER_TAG}}", "commit": "${{ steps.vars.outputs.sha_short }}", "date": "${{ steps.date.outputs.date }}"}' dir: 'backend/' + - name: setup platform emulator uses: docker/setup-qemu-action@v1 + - name: setup multi-arch docker build uses: docker/setup-buildx-action@v1 + + - name: Generate Docker image metadata + id: docker-meta + uses: docker/metadata-action@v4 + # Defaults: + # DOCKERHUB_USERNAME : tzahi12345 + # DOCKERHUB_REPO : youtubedl-material + # DOCKERHUB_MASTER_TAG: nightly + with: + images: | + ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }} + ghcr.io/${{ github.repository_owner }}/${{ secrets.DOCKERHUB_REPO }} + tags: | + type=raw,${{secrets.DOCKERHUB_MASTER_TAG}}-{{ date 'YYYY-MM-DD' }} + type=raw,${{secrets.DOCKERHUB_MASTER_TAG}} + type=sha,prefix=sha-,format=short + - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: build & push images uses: docker/build-push-action@v2 with: @@ -49,8 +79,5 @@ jobs: file: ./Dockerfile platforms: linux/amd64,linux/arm,linux/arm64/v8 push: true - # Defaults: - # DOCKERHUB_USERNAME : tzahi12345 - # DOCKERHUB_REPO : youtubedl-material - # DOCKERHUB_MASTER_TAG: nightly - tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }}:${{secrets.DOCKERHUB_MASTER_TAG}} + tags: ${{ steps.docker-meta.outputs.tags }} + labels: ${{ steps.docker-meta.outputs.labels }} diff --git a/src/assets/i18n/messages.ca.xlf b/src/assets/i18n/messages.ca.xlf index 0093b91..ba0c194 100644 --- a/src/assets/i18n/messages.ca.xlf +++ b/src/assets/i18n/messages.ca.xlf @@ -1392,7 +1392,7 @@ Allow subscriptions setting - Base bath for subscriptions + Subscriptions base path Camí base de subscripcions src/app/settings/settings.component.html @@ -3009,8 +3009,8 @@ Skip ad button - Download for has been queued! - La descàrrega de s'ha posat a la cua! + Download for has been queued! + La descàrrega de s'ha posat a la cua! src/app/main/main.component.ts 469 @@ -3071,8 +3071,8 @@ Installation type - Error for - Error a + Error for + Error a src/app/components/downloads/downloads.component.ts 238 @@ -3104,6 +3104,296 @@ 130 + + Tasks + Tasques + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + Last ran + Última vegada que es va executar + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + N/A + N/A + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Last confirmed + Últim confirmat + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + Clear duplicate files from DB: + Esborrar els fitxers duplicats a la BD: + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Clear missing files from DB: + Esborrar els fitxers que falten a la BD: + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Update binary to: + Actualitzar el binari a: + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Run + Executar + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Schedule + Planificació + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Restore DB from backup + Restaurar la BD des de la còpia de seguretat + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Reset tasks + Restablir tasques + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + Successfully ran task! + S'ha realitzat correctament la tasca! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Failed to run task! + No s'ha pogut executar la tasca! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Failed to confirm task! + No s'ha pogut confirmar la tasca! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Reset tasks + Restablir tasques + + src/app/components/tasks/tasks.component.ts + 132 + + + + Would you like to reset your tasks? All your schedules will be removed as well. + Vols restablir les teves tasques? També s'eliminaran totes els teves planificacions. + + src/app/components/tasks/tasks.component.ts + 133 + + + + Reset + Restablir + + src/app/components/tasks/tasks.component.ts + 134 + + + + Scheduled for + Planificat per a + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + + + Not scheduled + No planificat + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Restore + Restaurar + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Enabled + Habilitat + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Recurring + Recurrent + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + + + Update + Actualitzar + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + + + Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,, + Arguments personalitzats globals per a les baixades a la pàgina d'inici. (Definiu els arguments per a les subscripcions per a cadascuna de les subscripcions per separat!) Els arguments es delimiten mitjançant dues comes, així: ,, + + src/app/settings/settings.component.html + 128 + + Custom args setting input hint + + + Busy + Ocupat + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Status + Estat + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Failed to reset tasks! + No s'han pogut restablir les tasques! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + No tasks available! + No hi ha tasques disponibles! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Tasks successfully reset! + Les tasques s'han restablert correctament! + + src/app/components/tasks/tasks.component.ts + 142 + + + + Successfully confirmed task! + S'ha confirmat correctament la tasca! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Update task schedule + Actualitzar la planificació de tasques + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 1 + + Update task schedule + diff --git a/src/assets/i18n/messages.fr.xlf b/src/assets/i18n/messages.fr.xlf index f517f89..119f134 100644 --- a/src/assets/i18n/messages.fr.xlf +++ b/src/assets/i18n/messages.fr.xlf @@ -732,8 +732,8 @@ Allow subscriptions setting - Base bath for subscriptions - Chemin de base pour les abonnements + Subscriptions base path + Le chemin de base pour les abonnements app/settings/settings.component.html 72 @@ -2834,8 +2834,8 @@ Autoplay checkbox - Download for has been queued! - Le téléchargement à était ajouté à la queue ! + Download for has been queued! + Le téléchargement à était ajouté à la queue ! src/app/main/main.component.ts 469 @@ -2961,8 +2961,8 @@ - Error for - Erreur pour + Error for + Erreur pour src/app/components/downloads/downloads.component.ts 238 @@ -3165,6 +3165,278 @@ Skip ad button + + Tasks + Tâches + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + N/A + N/D + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Last confirmed + Dernière confirmation + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + Reset tasks + Rétablir les tâches + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + Reset tasks + Rétablir les tâches + + src/app/components/tasks/tasks.component.ts + 132 + + + + No tasks available! + Aucun tâche disponible ! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Successfully ran task! + Tâche lancée avec succès ! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Successfully confirmed task! + Tâche confirmée avec succès ! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Tasks successfully reset! + Tâche rétablie avec succès ! + + src/app/components/tasks/tasks.component.ts + 142 + + + + Restore DB from backup + Restaurer la base depuis une sauvegarde + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Clear missing files from DB: + Effacer les fichiers manquants de la base : + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Clear duplicate files from DB: + Effacer les fichiers doublons de la base : + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Failed to run task! + Échec de lancement de la tâche ! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Failed to confirm task! + Échec de confirmation de la tâche ! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Failed to reset tasks! + Échec de rétablissement de la tâche ! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + Update binary to: + Envoyer les binaires à : + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Would you like to reset your tasks? All your schedules will be removed as well. + Voulez-vous rétablir vos tâches ? Tous les programmations seront supprimées aussi. + + src/app/components/tasks/tasks.component.ts + 133 + + + + Update + Mettre à jour + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + + + Recurring + Récurrent + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + + + Run + Lancer + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Last ran + Dernier lancement + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + Not scheduled + Non programmé + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Status + Status + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Busy + Occupé + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Enabled + Actif + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Restore + Restorer + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Reset + Rétablir + + src/app/components/tasks/tasks.component.ts + 134 + + + + Schedule + Programmé + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Scheduled for + Programmé pour + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + diff --git a/src/assets/i18n/messages.it.xlf b/src/assets/i18n/messages.it.xlf index 9f86229..d02bf02 100644 --- a/src/assets/i18n/messages.it.xlf +++ b/src/assets/i18n/messages.it.xlf @@ -1,4 +1,4 @@ - + @@ -727,7 +727,7 @@ Subscriptions base path - Percorso salvataggio playlist sottoscritte + Percorso predefinito iscrizioni app/settings/settings.component.html 52 @@ -2477,6 +2477,876 @@ Max quality placeholder + + Database location: + Posizione database: + + src/app/settings/settings.component.html + 311 + + Database location label + + + Restart server + Riavvia server + + src/app/settings/settings.component.html + 418 + + Restart server button + + + Stage + Fase + + src/app/components/downloads/downloads.component.html + 36 + + Stage + + + Progress + Avanzamento + + src/app/components/downloads/downloads.component.html + 42 + + Progress + + + Watch content + Guarda il contenuto + + src/app/components/downloads/downloads.component.html + 64 + + Watch content + + + Show error + Mostra errore + + src/app/components/downloads/downloads.component.html + 65 + + Show error + + + Clear + Pulisci + + src/app/components/downloads/downloads.component.html + 68 + + Clear + + + Restart + Riavvia + + src/app/components/downloads/downloads.component.html + 66 + + Restart + + + Pause all downloads + Metti in pausa tutti i downloads + + src/app/components/downloads/downloads.component.html + 83 + + Pause all downloads + + + Resume all downloads + Riprendi tutti i downloads + + src/app/components/downloads/downloads.component.html + 84 + + Resume all downloads + + + Add to playlist + Aggiungi a playlist + + src/app/components/unified-file-card/unified-file-card.component.html + 26 + + Add to playlist menu item + + + Resume + Riprendi + + src/app/components/downloads/downloads.component.html + 60 + + Resume + + + Title + Titolo + + src/app/components/downloads/downloads.component.html + 13 + + + src/app/components/tasks/tasks.component.html + 6 + + Title + + + Actions + Azioni + + src/app/components/downloads/downloads.component.html + 55 + + + src/app/components/tasks/tasks.component.html + 49 + + Actions + + + Busy + Occupato + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Scheduled for + Programmato per + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + + + Date + Data + + src/app/components/downloads/downloads.component.html + 7 + + Date + + + Pause + Pausa + + src/app/components/downloads/downloads.component.html + 59 + + Pause + + + Complete + Completato + + src/app/components/downloads/downloads.component.ts + 61 + + + + Error for + Errore per + + src/app/components/downloads/downloads.component.ts + 238 + + + + Copied to clipboard! + Copiato negli appunti! + + src/app/components/downloads/downloads.component.ts + 249 + + + + Video only + Solo video + + src/app/components/recent-videos/recent-videos.component.html + 55 + + Video only + + + No tasks available! + Nessuna attività disponibile! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Not scheduled + Non programmato + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Recurring + Ricorrente + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + + + With this setting enabled, if a single video matches a category, the entire playlist will receive that category. + Con questa impostazione abilitata, se un singolo video corrisponde a una categoria, l'intera playlist riceverà quella categoria. + + src/app/settings/settings.component.html + 152 + + Allow playlist categorization setting tooltip + + + Allow autoplay + Concedi riproduzione automatica + + src/app/settings/settings.component.html + 223 + + Allow autoplay setting + + + Audio only + Solo audio + + src/app/components/recent-videos/recent-videos.component.html + 56 + + Audio only + + + Installation type: + Tipo installazione: + + src/app/dialogs/about-dialog/about-dialog.component.html + 25 + + Installation type + + + Commit hash: + Hash commit: + + src/app/dialogs/about-dialog/about-dialog.component.html + 31 + + Commit hash + + + Tasks + Attività + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + Subscription + Iscrizione + + src/app/components/downloads/downloads.component.html + 23 + + Subscription + + + Clear finished downloads + Pulisci i downloads terminati + + src/app/components/downloads/downloads.component.html + 85 + + Clear finished downloads + + + Creating download + Creando download + + src/app/components/downloads/downloads.component.ts + 58 + + + + Getting info + Ottenendo informazioni + + src/app/components/downloads/downloads.component.ts + 59 + + + + Downloading file + Scaricando il file + + src/app/components/downloads/downloads.component.ts + 60 + + + + Clear finished downloads + Pulisci i downloads terminati + + src/app/components/downloads/downloads.component.ts + 129 + + + + Would you like to clear your finished downloads? + Vuoi pulire i tuoi downloads terminati? + + src/app/components/downloads/downloads.component.ts + 130 + + + + Clear + Pulisci + + src/app/components/downloads/downloads.component.ts + 131 + + + + Copy to clipboard + Copia negli appunti + + src/app/components/downloads/downloads.component.ts + 240 + + + + Close + Chiudi + + src/app/components/downloads/downloads.component.ts + 241 + + + + File type + Tipo file + + src/app/components/recent-videos/recent-videos.component.html + 52 + + File type + + + Both + Entrambi + + src/app/components/recent-videos/recent-videos.component.html + 54 + + Both + + + Skip ad + Salta pubblicità + + src/app/components/skip-ad-button/skip-ad-button.component.html + 1 + + Skip ad button + + + Last ran + Ultima esecuzione + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + N/A + N/A + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Last confirmed + Ultimo confermato + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + Status + Stato + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Clear duplicate files from DB: + Pulisci i files duplicati dal DB: + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Clear missing files from DB: + Pulisci i files mancanti dal DB: + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Update binary to: + Aggiorna binario a: + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Run + Esegui + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Schedule + Programma + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Restore DB from backup + Ripristina DB da salvataggio + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Reset tasks + Ripristina attività + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + Successfully ran task! + Attività eseguita con successo! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Failed to run task! + Errore nell'esecuzione dell'attività! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Successfully confirmed task! + Attività confermata con successo! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Failed to confirm task! + Errore nel confermare l'attività! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Reset tasks + Ripristina attività + + src/app/components/tasks/tasks.component.ts + 132 + + + + Would you like to reset your tasks? All your schedules will be removed as well. + Vuoi ripristinare le tue attività? Saranno rimosse pure tutte le tue programmazioni. + + src/app/components/tasks/tasks.component.ts + 133 + + + + Reset + Ripristina + + src/app/components/tasks/tasks.component.ts + 134 + + + + Tasks successfully reset! + Attività ripristinata con successo! + + src/app/components/tasks/tasks.component.ts + 142 + + + + Failed to reset tasks! + Errore nel ripristinare l'attività! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + Docker tag: + Tag docker: + + src/app/dialogs/about-dialog/about-dialog.component.html + 28 + + Docker tag + + + Build date: + Data build: + + src/app/dialogs/about-dialog/about-dialog.component.html + 33 + + Build date + + + Randomize order when playing + Ordine casuale durante la riproduzione + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 13 + + Randomize order when playing checkbox label + + + Restore + Ripristina + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Share file + Condividi file + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 3 + + Share video dialog title + + + Update task schedule + Aggiorna programmazione attività + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 1 + + Update task schedule + + + Enabled + Abilitato + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Update + Aggiorna + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + + + Autoplay + Riproduzione automatica + + src/app/main/main.component.html + 70,72 + + Autoplay checkbox + + + Replace args + Rimpiazza gli argomenti + + src/app/main/main.component.html + 116,118 + + Replace args + + + Crop file + Ritaglia file + + src/app/main/main.component.html + 160,162 + + Crop video checkbox + + + Crop from (seconds) + Ritaglia da (secondi) + + src/app/main/main.component.html + 164,166 + + Crop from placeholder + + + Crop to (seconds) + Ritaglia a (secondi) + + src/app/main/main.component.html + 169,171 + + Crop to placeholder + + + Download for has been queued! + Il download per è stato aggiunto alla coda! + + src/app/main/main.component.ts + 403 + + + + Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,, + Argomenti personalizzati globali per i downloads nella pagina principale. (Imposta gli argomenti per ogni iscrizione separatamente!) Gli argomenti sono delimitati usando due virgole così: ,, + + src/app/settings/settings.component.html + 128 + + Custom args setting input hint + + + Allow playlist categorization + Consenti categorizzazione playlist + + src/app/settings/settings.component.html + 152 + + Allow playlist categorization setting label + + + Max concurrent downloads + Numero massimo di downloads simultanei + + src/app/settings/settings.component.html + 177 + + Max concurrent downloads + + + Limits the amount of downloads that can be simultaneously downloaded. Use -1 for no limit. + Limita il numero di downloads che possono essere scaricati simultaneamente. Usa -1 per nessun limite. + + src/app/settings/settings.component.html + 178 + + Max concurrent downloads input hint + + + Download rate limit + Limite di velocità di download + + src/app/settings/settings.component.html + 183 + + Download rate limit input placeholder + + + Rate limits your downloads to the specified amount. Ex: 200K + Limita la velocità di download al limite specificato. Per esempio: 200K + + src/app/settings/settings.component.html + 184 + + Download rate limit input hint + + + Enables a button to skip ads when viewing supported videos. + Abilita un pulsante per saltare le pubblicità quando si guardano i video supportati. + + src/app/settings/settings.component.html + 271 + + SponsorBlock API tooltip + + + Use SponsorBlock API + Usa API SponsorBlock + + src/app/settings/settings.component.html + 271 + + Use SponsorBlock API setting + + + Generates NFO files with every download, primarily used by Kodi. + Genera files NFO per ogni download, usati principalmente da Kodi. + + src/app/settings/settings.component.html + 274 + + Generate NFO files tooltip + + + Generate NFO files + Genera files NFO + + src/app/settings/settings.component.html + 274 + + Generate NFO files setting + + + Database + Database + + src/app/settings/settings.component.html + 305 + + Database settings label + + + Records per table + Records per tabella + + src/app/settings/settings.component.html + 312 + + Records per table label + + + MongoDB Connection String + Stringa di Connessione MongoDB + + src/app/settings/settings.component.html + 320 + + MongoDB Connection String + + + Example: + Esempio: + + src/app/settings/settings.component.html + 321 + + MongoDB Connection String setting hint AKA preamble + + + Test connection string + Prova stringa di connessione + + src/app/settings/settings.component.html + 325 + + Test connection string button + + + Transfer DB to + Trasferisci DB a + + src/app/settings/settings.component.html + 329 + + Transfer DB button + + + Database information could not be retrieved. Check the server logs for more information. + Impossibile recuperare le informazioni del database. Controllare i registri del server per ulteriori informazioni. + + src/app/settings/settings.component.html + 333 + + Database info not retrieved error message + + + You must enable multi-user mode to access this tab. + È necessario abilitare la modalità multi-utente per accedere a questa scheda. + + src/app/settings/settings.component.ts + 48 + + diff --git a/src/assets/i18n/messages.mk.xlf b/src/assets/i18n/messages.mk.xlf index 66cfc31..5fd69ee 100644 --- a/src/assets/i18n/messages.mk.xlf +++ b/src/assets/i18n/messages.mk.xlf @@ -1,4 +1,4 @@ - + @@ -91,8 +91,8 @@ Settings menu label - Download for has been queued! - Превземањето за е ставено во редицата за чекање! + Download for has been queued! + Превземањето за е ставено во редицата за чекање! src/app/main/main.component.ts 469 @@ -2496,8 +2496,8 @@ - Error for - Грешка за + Error for + Грешка за src/app/components/downloads/downloads.component.ts 238 @@ -3035,6 +3035,296 @@ Video duration label + + Last ran + Последно извршување + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + N/A + N/A + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Last confirmed + Последно потврдено + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + Status + Статус + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Busy + Зафанато + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Scheduled for + Закажано за + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + + + Not scheduled + Не закажано + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Clear missing files from DB: + Исчисти ги непостоечките фајлови од базата со податоци: + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Update binary to: + Ажурирај ја програмата: + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Schedule + Закажи + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Run + Стартувај + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Restore DB from backup + Враќање на базата со податоци од резервна копија + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Reset tasks + Ресетирајте ги задачите + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + No tasks available! + Нема достапни задачи! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Successfully ran task! + Задачата е успешно извршена! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Successfully confirmed task! + Задачата е успешно потврдена! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Would you like to reset your tasks? All your schedules will be removed as well. + Дали сакате да ги ресетирате вашите задачи? Сите ваши распореди исто така ќе бидат отстранети. + + src/app/components/tasks/tasks.component.ts + 133 + + + + Reset + Ресетирај + + src/app/components/tasks/tasks.component.ts + 134 + + + + Tasks successfully reset! + Задачите успешно се ресетираа! + + src/app/components/tasks/tasks.component.ts + 142 + + + + Failed to reset tasks! + Не успеа да се ресетираат задачите! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + Restore + Врати + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Update task schedule + Ажурирајте го распоредот на задачи + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 1 + + Update task schedule + + + Enabled + Овозможено + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Recurring + Повторливи + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + + + Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,, + Глобални сопствени аргументи за преземања на почетната страница. (Поставете аргументи за претплати за секоја претплата посебно!) Аргументите се разграничуваат со користење на две запирки, на пример: ,, + + src/app/settings/settings.component.html + 128 + + Custom args setting input hint + + + Clear duplicate files from DB: + Исчисти ги дупликат фајловите од базата со податоци: + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Tasks + Задачи + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + Reset tasks + Ресетирајте ги задачите + + src/app/components/tasks/tasks.component.ts + 132 + + + + Failed to run task! + Не успеа да се изврши задачата! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Failed to confirm task! + Задачата не успеа да се потврди! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Update + Ажурирање + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + diff --git a/src/assets/i18n/messages.pt-BR.xlf b/src/assets/i18n/messages.pt-BR.xlf new file mode 100644 index 0000000..84eef35 --- /dev/null +++ b/src/assets/i18n/messages.pt-BR.xlf @@ -0,0 +1,2877 @@ + + + + + + Profile + + src/app/app.component.html + 19 + + Profile menu label + + + Dark + + src/app/app.component.html + 23 + + + src/app/settings/settings.component.html + 67 + + Dark mode toggle label + + + About + + src/app/app.component.html + 32 + + About menu label + + + Home + + src/app/app.component.html + 43 + + Navigation menu Home Page title + + + Login + + src/app/app.component.html + 44 + + + src/app/components/login/login.component.html + 34 + + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 20 + + Navigation menu Login Page title + + + Subscriptions + + src/app/app.component.html + 45 + + Navigation menu Subscriptions Page title + + + Downloads + + src/app/app.component.html + 46 + + Navigation menu Downloads Page title + + + Tasks + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + Settings + + src/app/app.component.html + 50 + + + src/app/settings/settings.component.html + 1 + + Settings menu label + + + Date + + src/app/components/downloads/downloads.component.html + 7 + + Date + + + Title + + src/app/components/downloads/downloads.component.html + 13 + + + src/app/components/tasks/tasks.component.html + 6 + + Title + + + Subscription + + src/app/components/downloads/downloads.component.html + 23 + + Subscription + + + Stage + + src/app/components/downloads/downloads.component.html + 36 + + Stage + + + Progress + + src/app/components/downloads/downloads.component.html + 42 + + Progress + + + Actions + + src/app/components/downloads/downloads.component.html + 55 + + + src/app/components/tasks/tasks.component.html + 49 + + Actions + + + Pause + + src/app/components/downloads/downloads.component.html + 59 + + Pause + + + Resume + + src/app/components/downloads/downloads.component.html + 60 + + Resume + + + Cancel + + src/app/components/downloads/downloads.component.html + 61 + + + src/app/components/modify-users/modify-users.component.html + 61 + + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 84,85 + + + src/app/dialogs/confirm-dialog/confirm-dialog.component.html + 16 + + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 54 + + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 66 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 24 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 79 + + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 51 + + + src/app/settings/settings.component.html + 492 + + Cancel + + + Watch content + + src/app/components/downloads/downloads.component.html + 64 + + Watch content + + + Show error + + src/app/components/downloads/downloads.component.html + 65 + + Show error + + + Restart + + src/app/components/downloads/downloads.component.html + 66 + + Restart + + + Clear + + src/app/components/downloads/downloads.component.html + 68 + + Clear + + + Pause all downloads + + src/app/components/downloads/downloads.component.html + 83 + + Pause all downloads + + + Resume all downloads + + src/app/components/downloads/downloads.component.html + 84 + + Resume all downloads + + + Clear finished downloads + + src/app/components/downloads/downloads.component.html + 85 + + Clear finished downloads + + + No downloads available! + + src/app/components/downloads/downloads.component.html + 90 + + No downloads label + + + Creating download + + src/app/components/downloads/downloads.component.ts + 58 + + + + Getting info + + src/app/components/downloads/downloads.component.ts + 59 + + + + Downloading file + + src/app/components/downloads/downloads.component.ts + 60 + + + + Complete + + src/app/components/downloads/downloads.component.ts + 61 + + + + Clear finished downloads + + src/app/components/downloads/downloads.component.ts + 129 + + + + Would you like to clear your finished downloads? + + src/app/components/downloads/downloads.component.ts + 130 + + + + Clear + + src/app/components/downloads/downloads.component.ts + 131 + + + + Error for + + src/app/components/downloads/downloads.component.ts + 238 + + + + Copy to clipboard + + src/app/components/downloads/downloads.component.ts + 240 + + + + Close + + src/app/components/downloads/downloads.component.ts + 241 + + + + Copied to clipboard! + + src/app/components/downloads/downloads.component.ts + 249 + + + + Register + + src/app/components/login/login.component.html + 38 + + + src/app/dialogs/add-user-dialog/add-user-dialog.component.html + 17 + + Register + + + Lines: + + src/app/components/logs-viewer/logs-viewer.component.html + 22 + + Label for lines select in logger view + + + Clear logs + + src/app/components/logs-viewer/logs-viewer.component.html + 34 + + Clear logs button + + + Manage role + + src/app/components/manage-role/manage-role.component.html + 1 + + Manage role dialog title + + + Yes + + src/app/components/manage-role/manage-role.component.html + 9 + + + src/app/components/manage-user/manage-user.component.html + 20 + + Yes + + + No + + src/app/components/manage-role/manage-role.component.html + 10 + + + src/app/components/manage-user/manage-user.component.html + 21 + + No + + + Close + + src/app/components/manage-role/manage-role.component.html + 18 + + + src/app/components/manage-user/manage-user.component.html + 30 + + + src/app/dialogs/about-dialog/about-dialog.component.html + 70 + + + src/app/dialogs/add-user-dialog/add-user-dialog.component.html + 18 + + + src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html + 40 + + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 29 + + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 23 + + + src/app/dialogs/update-progress-dialog/update-progress-dialog.component.html + 17 + + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 27 + + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 35 + + Close + + + Manage user + + src/app/components/manage-user/manage-user.component.html + 1 + + + src/app/components/modify-users/modify-users.component.html + 70 + + Manage user dialog title + + + User UID: + + src/app/components/manage-user/manage-user.component.html + 4 + + User UID + + + New password + + src/app/components/manage-user/manage-user.component.html + 8 + + New password placeholder + + + Set new password + + src/app/components/manage-user/manage-user.component.html + 10 + + Set new password + + + Use role default + + src/app/components/manage-user/manage-user.component.html + 19 + + Use role default + + + Search + + src/app/components/modify-users/modify-users.component.html + 7 + + + src/app/components/recent-videos/recent-videos.component.html + 24 + + + src/app/subscription/subscription/subscription.component.html + 33 + + search field description + + + User name + + src/app/components/modify-users/modify-users.component.html + 17 + + Username users table header + + + Role + + src/app/components/modify-users/modify-users.component.html + 35 + + Role users table header + + + Actions + + src/app/components/modify-users/modify-users.component.html + 55 + + Actions users table header + + + Save + + src/app/components/modify-users/modify-users.component.html + 58 + + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 56 + + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 68 + + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 43 + + + src/app/settings/settings.component.html + 489 + + save user edit action button tooltip + + + Edit user + + src/app/components/modify-users/modify-users.component.html + 66 + + edit user action button tooltip + + + Delete user + + src/app/components/modify-users/modify-users.component.html + 73 + + delete user action button tooltip + + + Add Users + + src/app/components/modify-users/modify-users.component.html + 90 + + Add users button + + + Edit Role + + src/app/components/modify-users/modify-users.component.html + 95 + + Edit role + + + My videos + + src/app/components/recent-videos/recent-videos.component.html + 20 + + My videos title + + + No videos found. + + src/app/components/recent-videos/recent-videos.component.html + 38 + + No videos found + + + File type + + src/app/components/recent-videos/recent-videos.component.html + 52 + + File type + + + Both + + src/app/components/recent-videos/recent-videos.component.html + 54 + + Both + + + Video only + + src/app/components/recent-videos/recent-videos.component.html + 55 + + Video only + + + Audio only + + src/app/components/recent-videos/recent-videos.component.html + 56 + + Audio only + + + See more. + + src/app/components/see-more/see-more.component.html + 4,6 + + See more + + + See less. + + src/app/components/see-more/see-more.component.html + 7,9 + + See less + + + Skip ad + + src/app/components/skip-ad-button/skip-ad-button.component.html + 1 + + Skip ad button + + + Last ran + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + N/A + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Last confirmed + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + Status + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Busy + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Scheduled for + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + + + Not scheduled + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Clear missing files from DB: + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Clear duplicate files from DB: + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Update binary to: + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Run + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Schedule + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Restore DB from backup + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Reset tasks + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + No tasks available! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Successfully ran task! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Failed to run task! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Successfully confirmed task! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Failed to confirm task! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Reset tasks + + src/app/components/tasks/tasks.component.ts + 132 + + + + Would you like to reset your tasks? All your schedules will be removed as well. + + src/app/components/tasks/tasks.component.ts + 133 + + + + Reset + + src/app/components/tasks/tasks.component.ts + 134 + + + + Tasks successfully reset! + + src/app/components/tasks/tasks.component.ts + 142 + + + + Failed to reset tasks! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + Download Twitch Chat + + src/app/components/twitch-chat/twitch-chat.component.html + 10 + + Download Twitch Chat button + + + Auto-generated + + src/app/components/unified-file-card/unified-file-card.component.html + 5 + + Auto-generated label + + + Open file + + src/app/components/unified-file-card/unified-file-card.component.html + 18 + + Open file button + + + Open file in new tab + + src/app/components/unified-file-card/unified-file-card.component.html + 19 + + Open file in new tab + + + Info + + src/app/components/unified-file-card/unified-file-card.component.html + 24 + + + src/app/subscription/subscription-file-card/subscription-file-card.component.html + 7 + + Video info button + + + Go to subscription + + src/app/components/unified-file-card/unified-file-card.component.html + 25 + + Go to subscription menu item + + + Add to playlist + + src/app/components/unified-file-card/unified-file-card.component.html + 26 + + Add to playlist menu item + + + Delete and redownload + + src/app/components/unified-file-card/unified-file-card.component.html + 34 + + + src/app/subscription/subscription-file-card/subscription-file-card.component.html + 8 + + Delete and redownload subscription video button + + + Delete forever + + src/app/components/unified-file-card/unified-file-card.component.html + 37 + + + src/app/subscription/subscription-file-card/subscription-file-card.component.html + 9 + + Delete forever subscription video button + + + Delete + + src/app/components/unified-file-card/unified-file-card.component.html + 39 + + + src/app/components/unified-file-card/unified-file-card.component.html + 45 + + Delete video button + + + Delete and blacklist + + src/app/components/unified-file-card/unified-file-card.component.html + 40 + + Delete and blacklist video button + + + Edit + + src/app/components/unified-file-card/unified-file-card.component.html + 43 + + Playlist edit button + + + Create a playlist + + src/app/create-playlist/create-playlist.component.html + 1 + + Create a playlist dialog title + + + Name + + src/app/create-playlist/create-playlist.component.html + 6 + + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 5 + + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 8 + + Playlist name placeholder + + + Type + + src/app/create-playlist/create-playlist.component.html + 11 + + Type select + + + Audio + + src/app/create-playlist/create-playlist.component.html + 12 + + Audio + + + Video + + src/app/create-playlist/create-playlist.component.html + 13 + + Video + + + Audio files + + src/app/create-playlist/create-playlist.component.html + 19 + + Audio files title + + + Videos + + src/app/create-playlist/create-playlist.component.html + 20 + + + src/app/subscription/subscription/subscription.component.html + 29 + + Videos title + + + About YoutubeDL-Material + + src/app/dialogs/about-dialog/about-dialog.component.html + 1 + + About dialog title + + + is an open-source YouTube downloader built under Google's Material Design specifications. You can seamlessly download your favorite videos as video or audio files, and even subscribe to your favorite channels and playlists to keep updated with their new videos. + + src/app/dialogs/about-dialog/about-dialog.component.html + 12 + + About first paragraph + + + has some awesome features included! An extensive API, Docker support, and localization (translation) support. Read up on all the supported features by clicking on the GitHub icon above. + + src/app/dialogs/about-dialog/about-dialog.component.html + 15 + + About second paragraph + + + Installed version: + + src/app/dialogs/about-dialog/about-dialog.component.html + 20 + + Version label + + + Checking for updates... + + src/app/dialogs/about-dialog/about-dialog.component.html + 20 + + Checking for updates text + + + Update available + + src/app/dialogs/about-dialog/about-dialog.component.html + 21 + + View latest update + + + You can update from the settings menu. + + src/app/dialogs/about-dialog/about-dialog.component.html + 21 + + Update through settings menu hint + + + Installation type: + + src/app/dialogs/about-dialog/about-dialog.component.html + 25 + + Installation type + + + Docker tag: + + src/app/dialogs/about-dialog/about-dialog.component.html + 28 + + Docker tag + + + Commit hash: + + src/app/dialogs/about-dialog/about-dialog.component.html + 31 + + Commit hash + + + Build date: + + src/app/dialogs/about-dialog/about-dialog.component.html + 33 + + Build date + + + Found a bug or have a suggestion? + + src/app/dialogs/about-dialog/about-dialog.component.html + 36 + + About bug prefix + + + Click here + + src/app/dialogs/about-dialog/about-dialog.component.html + 36 + + + src/app/settings/settings.component.html + 283 + + + src/app/settings/settings.component.html + 289 + + About bug click here + + + to create an issue! + + src/app/dialogs/about-dialog/about-dialog.component.html + 36 + + About bug suffix + + + Register a user + + src/app/dialogs/add-user-dialog/add-user-dialog.component.html + 1 + + Register user dialog title + + + User name + + src/app/dialogs/add-user-dialog/add-user-dialog.component.html + 6 + + User name placeholder + + + Password + + src/app/dialogs/add-user-dialog/add-user-dialog.component.html + 11 + + + src/app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html + 10 + + + src/app/main/main.component.html + 154,156 + + Password placeholder + + + Modify youtube-dl args + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 1,6 + + Modify args title + + + Simulated new args + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 8,9 + + Simulated args title + + + Add an arg + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 34,37 + + Add arg card title + + + Search by category + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 60,63 + + Search args by category button + + + Use arg value + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 64,66 + + Use arg value checkbox + + + Arg value + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 68,69 + + Arg value placeholder + + + Add arg + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 73,77 + + Search args by category button + + + Modify + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 85,86 + + Arg modifier modify button + + + Upload new cookies + + src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html + 1 + + Cookies uploader dialog title + + + Drag and Drop + + src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html + 11 + + Drag and Drop + + + NOTE: Uploading new cookies will override your previous cookies. Also note that cookies are instance-wide, not per-user. + + src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html + 20 + + Cookies upload warning + + + Editing category + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 1 + + Editing category dialog title + + + Rules + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 10 + + Rules + + + Add new rule + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 39 + + Add new rule tooltip + + + Custom file output + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 44 + + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 53 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 66 + + Category custom file output placeholder + + + Documentation + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 47 + + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 56 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 69 + + + src/app/main/main.component.html + 137,138 + + + src/app/settings/settings.component.html + 119 + + Custom output template documentation link + + + Path is relative to the config download path. Don't include extension. + + src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html + 48 + + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 57 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 70 + + + src/app/main/main.component.html + 138,140 + + Custom Output input hint + + + Editing + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 1 + + Edit subscription dialog title prefix + + + (Paused) + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 1 + + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 1 + + + src/app/subscription/subscription/subscription.component.html + 5 + + + src/app/subscriptions/subscriptions.component.html + 12 + + + src/app/subscriptions/subscriptions.component.html + 34 + + Paused suffix + + + Paused + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 7 + + Paused subscription setting + + + Download all uploads + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 10 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 23 + + Download all uploads subscription setting + + + Download videos uploaded in the last + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 13 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 26 + + Download time range prefix + + + Audio-only mode + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 27 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 47 + + Streaming-only mode + + + Max quality + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 32 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 40 + + Max quality placeholder + + + Streaming-only mode + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 39 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 52 + + Streaming-only mode + + + Custom args + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 44 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 57 + + + src/app/main/main.component.html + 120,122 + + Subscription custom args placeholder + + + These are added after the standard args. + + src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html + 47 + + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 60 + + Custom args hint + + + Modify playlist + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 1 + + Modify playlist dialog title + + + Randomize order when playing + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 13 + + Randomize order when playing checkbox label + + + Normal order  + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 18 + + Normal order + + + Reverse order  + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 19 + + Reverse order + + + Add content + + src/app/dialogs/modify-playlist/modify-playlist.component.html + 24 + + Add content + + + Restore + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Create admin account + + src/app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html + 1 + + Create admin account dialog title + + + No default admin account detected. This will create and set the password for an admin account with the user name as 'admin'. + + src/app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html + 5 + + No default admin detected explanation + + + Create + + src/app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html + 17 + + Create + + + Share playlist + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 2 + + Share playlist dialog title + + + Share file + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 3 + + Share video dialog title + + + Enable sharing + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 9 + + Enable sharing checkbox + + + Use timestamp + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 12 + + Use timestamp + + + Seconds + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 14 + + Seconds + + + Copy to clipboard + + src/app/dialogs/share-media-dialog/share-media-dialog.component.html + 23 + + Copy to clipboard button + + + Subscribe to playlist or channel + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 1 + + Subscribe dialog title + + + URL + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 8 + + + src/app/settings/settings.component.html + 10 + + Subscription URL input placeholder + + + The playlist or channel URL + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 9 + + Subscription URL input hint + + + Custom name + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 19 + + Subscription custom name placeholder + + + Subscribe + + src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html + 81 + + Subscribe button + + + Type: + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 5 + + Subscription type property + + + URL: + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 9 + + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 9 + + Subscription URL property + + + ID: + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 13 + + Subscription ID property + + + Archive: + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 17 + + Subscription ID property + + + Export Archive + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 24 + + Export Archive button + + + Unsubscribe + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html + 26 + + Unsubscribe button + + + Updater + + src/app/dialogs/update-progress-dialog/update-progress-dialog.component.html + 1 + + Update progress dialog title + + + Update task schedule + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 1 + + Update task schedule + + + Enabled + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Recurring + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + + + Update + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + + + Your Profile + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 1 + + User profile dialog title + + + Name: + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 6 + + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 5 + + Name + + + UID: + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 9 + + UID + + + Created: + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 12 + + Created + + + You are not logged in. + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 19 + + Not logged in notification + + + Logout + + src/app/dialogs/user-profile-dialog/user-profile-dialog.component.html + 28 + + Logout + + + Uploader: + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 13 + + Video ID property + + + File size: + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 17 + + Video file size property + + + Path: + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 21 + + Video path property + + + Upload Date: + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 25 + + Video upload date property + + + Category: + + src/app/dialogs/video-info-dialog/video-info-dialog.component.html + 29 + + Category property + + + Quality + + src/app/main/main.component.html + 19,20 + + Quality select label + + + Use URL + + src/app/main/main.component.html + 51,53 + + YT search Use URL button for searched video + + + View + + src/app/main/main.component.html + 55,57 + + YT search View button for searched video + + + Only Audio + + src/app/main/main.component.html + 65,67 + + Only Audio checkbox + + + Autoplay + + src/app/main/main.component.html + 70,72 + + Autoplay checkbox + + + Download + + src/app/main/main.component.html + 79,82 + + Main download button + + + Cancel + + src/app/main/main.component.html + 84,87 + + Cancel download button + + + Advanced + + src/app/main/main.component.html + 96,99 + + Advanced download mode panel + + + Simulated command: + + src/app/main/main.component.html + 102,104 + + Simulated command label + + + Use custom args + + src/app/main/main.component.html + 110,112 + + Use custom args checkbox + + + Replace args + + src/app/main/main.component.html + 116,118 + + Replace args + + + No need to include URL, just everything after. Args are delimited using two commas like so: ,, + + src/app/main/main.component.html + 123,125 + + Custom Args input hint + + + Use custom output + + src/app/main/main.component.html + 131,133 + + Use custom output checkbox + + + Custom output + + src/app/main/main.component.html + 135,136 + + Custom output placeholder + + + Use authentication + + src/app/main/main.component.html + 145,147 + + Use authentication checkbox + + + Username + + src/app/main/main.component.html + 149,151 + + YT Username placeholder + + + Crop file + + src/app/main/main.component.html + 160,162 + + Crop video checkbox + + + Crop from (seconds) + + src/app/main/main.component.html + 164,166 + + Crop from placeholder + + + Crop to (seconds) + + src/app/main/main.component.html + 169,171 + + Crop to placeholder + + + Download for has been queued! + + src/app/main/main.component.ts + 403 + + + + views + + src/app/player/player.component.html + 16 + + View count label + + + Main + + src/app/settings/settings.component.html + 4 + + Main settings label + + + URL this app will be accessed from, without the port. + + src/app/settings/settings.component.html + 11 + + URL setting input hint + + + Port + + src/app/settings/settings.component.html + 16 + + Port input placeholder + + + The desired port. Default is 17442. + + src/app/settings/settings.component.html + 17 + + Port setting input hint + + + Multi-user mode + + src/app/settings/settings.component.html + 26 + + Multi user mode setting + + + Users base path + + src/app/settings/settings.component.html + 30 + + Users base path placeholder + + + Base path for users and their downloaded videos. + + src/app/settings/settings.component.html + 31 + + Users base path hint + + + Allow subscriptions + + src/app/settings/settings.component.html + 40 + + Allow subscriptions setting + + + Subscriptions base path + + src/app/settings/settings.component.html + 44 + + Subscriptions base path input setting placeholder + + + Base path for videos from your subscribed channels and playlists. It is relative to YTDL-Material's root folder. + + src/app/settings/settings.component.html + 45 + + Subscriptions base path setting input hint + + + Check interval + + src/app/settings/settings.component.html + 50 + + Check interval input setting placeholder + + + Unit is seconds, only include numbers. + + src/app/settings/settings.component.html + 51 + + Check interval setting input hint + + + Sometimes new videos are downloaded before being fully processed. This setting will mean new videos will be checked for a higher quality version the following day. + + src/app/settings/settings.component.html + 55 + + Redownload fresh uploads tooltip + + + Redownload fresh uploads + + src/app/settings/settings.component.html + 55 + + Redownload fresh uploads + + + Theme + + src/app/settings/settings.component.html + 64 + + Theme select label + + + Default + + src/app/settings/settings.component.html + 66 + + Default theme label + + + Allow theme change + + src/app/settings/settings.component.html + 72 + + Allow theme change setting + + + Language + + src/app/settings/settings.component.html + 81 + + Language select label + + + Downloader + + src/app/settings/settings.component.html + 96 + + Downloader settings label + + + Audio folder path + + src/app/settings/settings.component.html + 103 + + Audio folder path input placeholder + + + Path for audio only downloads. It is relative to YTDL-Material's root folder. + + src/app/settings/settings.component.html + 104 + + Aduio path setting input hint + + + Video folder path + + src/app/settings/settings.component.html + 110 + + Video folder path input placeholder + + + Path for video downloads. It is relative to YTDL-Material's root folder. + + src/app/settings/settings.component.html + 111 + + Video path setting input hint + + + Default file output + + src/app/settings/settings.component.html + 117 + + Default file output placeholder + + + Path is relative to the above download paths. Don't include extension. + + src/app/settings/settings.component.html + 120 + + Custom Output input hint + + + Global custom args + + src/app/settings/settings.component.html + 127 + + Custom args input placeholder + + + Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,, + + src/app/settings/settings.component.html + 128 + + Custom args setting input hint + + + Categories + + src/app/settings/settings.component.html + 138 + + Categories + + + With this setting enabled, if a single video matches a category, the entire playlist will receive that category. + + src/app/settings/settings.component.html + 152 + + Allow playlist categorization setting tooltip + + + Allow playlist categorization + + src/app/settings/settings.component.html + 152 + + Allow playlist categorization setting label + + + Use youtube-dl archive + + src/app/settings/settings.component.html + 160 + + Use youtubedl archive setting + + + Include thumbnail + + src/app/settings/settings.component.html + 164 + + Include thumbnail setting + + + Include metadata + + src/app/settings/settings.component.html + 168 + + Include metadata setting + + + Max concurrent downloads + + src/app/settings/settings.component.html + 177 + + Max concurrent downloads + + + Limits the amount of downloads that can be simultaneously downloaded. Use -1 for no limit. + + src/app/settings/settings.component.html + 178 + + Max concurrent downloads input hint + + + Download rate limit + + src/app/settings/settings.component.html + 183 + + Download rate limit input placeholder + + + Rate limits your downloads to the specified amount. Ex: 200K + + src/app/settings/settings.component.html + 184 + + Download rate limit input hint + + + Kill all downloads + + src/app/settings/settings.component.html + 193 + + Kill all downloads button + + + Extra + + src/app/settings/settings.component.html + 200 + + Extra settings label + + + Top title + + src/app/settings/settings.component.html + 206 + + Top title input placeholder + + + File manager enabled + + src/app/settings/settings.component.html + 211 + + File manager enabled setting + + + Downloads manager enabled + + src/app/settings/settings.component.html + 214 + + Downloads manager enabled setting + + + Allow quality select + + src/app/settings/settings.component.html + 217 + + Allow quality seelct setting + + + Download only mode + + src/app/settings/settings.component.html + 220 + + Download only mode setting + + + Allow autoplay + + src/app/settings/settings.component.html + 223 + + Allow autoplay setting + + + Enable Public API + + src/app/settings/settings.component.html + 231 + + Enable Public API key setting + + + Public API Key + + src/app/settings/settings.component.html + 236 + + Public API Key setting placeholder + + + View documentation + + src/app/settings/settings.component.html + 237 + + View API docs setting hint + + + This will delete your old API key! + + src/app/settings/settings.component.html + 241 + + delete api key tooltip + + + Generate + + src/app/settings/settings.component.html + 241 + + Generate key button + + + Use YouTube API + + src/app/settings/settings.component.html + 250 + + Use YouTube API setting + + + Youtube API Key + + src/app/settings/settings.component.html + 254 + + Youtube API Key setting placeholder + + + Generating a key is easy! + + src/app/settings/settings.component.html + 255 + + + src/app/settings/settings.component.html + 267 + + Youtube API Key setting hint + + + Use Twitch API + + src/app/settings/settings.component.html + 259 + + Use Twitch API setting + + + Auto-download Twitch Chat + + src/app/settings/settings.component.html + 262 + + Auto download Twitch Chat setting + + + Twitch API Key + + src/app/settings/settings.component.html + 266 + + Twitch API Key setting placeholder + + + Also known as a Client ID. + + src/app/settings/settings.component.html + 267 + + Twitch API Key setting hint AKA preamble + + + Enables a button to skip ads when viewing supported videos. + + src/app/settings/settings.component.html + 271 + + SponsorBlock API tooltip + + + Use SponsorBlock API + + src/app/settings/settings.component.html + 271 + + Use SponsorBlock API setting + + + Generates NFO files with every download, primarily used by Kodi. + + src/app/settings/settings.component.html + 274 + + Generate NFO files tooltip + + + Generate NFO files + + src/app/settings/settings.component.html + 274 + + Generate NFO files setting + + + to download the official YoutubeDL-Material Chrome extension manually. + + src/app/settings/settings.component.html + 283 + + Chrome click here suffix + + + You must manually load the extension and modify the extension's settings to set the frontend URL. + + src/app/settings/settings.component.html + 284 + + Chrome setup suffix + + + to install the official YoutubeDL-Material Firefox extension right off the Firefox extensions page. + + src/app/settings/settings.component.html + 289 + + Firefox click here suffix + + + Detailed setup instructions. + + src/app/settings/settings.component.html + 290 + + Firefox setup prefix link + + + Not much is required other than changing the extension's settings to set the frontend URL. + + src/app/settings/settings.component.html + 290 + + Firefox setup suffix + + + Drag the link below to your bookmarks, and you're good to go! Just navigate to the YouTube video you'd like to download, and click the bookmark. + + src/app/settings/settings.component.html + 295 + + Bookmarklet instructions + + + Generate 'audio only' bookmarklet + + src/app/settings/settings.component.html + 296 + + Generate audio only bookmarklet checkbox + + + Database + + src/app/settings/settings.component.html + 305 + + Database settings label + + + Database location: + + src/app/settings/settings.component.html + 311 + + Database location label + + + Records per table + + src/app/settings/settings.component.html + 312 + + Records per table label + + + MongoDB Connection String + + src/app/settings/settings.component.html + 320 + + MongoDB Connection String + + + Example: + + src/app/settings/settings.component.html + 321 + + MongoDB Connection String setting hint AKA preamble + + + Test connection string + + src/app/settings/settings.component.html + 325 + + Test connection string button + + + Transfer DB to + + src/app/settings/settings.component.html + 329 + + Transfer DB button + + + Database information could not be retrieved. Check the server logs for more information. + + src/app/settings/settings.component.html + 333 + + Database info not retrieved error message + + + Advanced + + src/app/settings/settings.component.html + 341 + + Host settings label + + + Select a downloader + + src/app/settings/settings.component.html + 347 + + Default downloader select label + + + Use default downloading agent + + src/app/settings/settings.component.html + 356 + + Use default downloading agent setting + + + Select a download agent + + src/app/settings/settings.component.html + 360 + + Custom downloader select label + + + Log Level + + src/app/settings/settings.component.html + 374 + + Log Level label + + + Login expiration + + src/app/settings/settings.component.html + 386 + + Login expiration select label + + + Allow advanced download + + src/app/settings/settings.component.html + 397 + + Allow advanced downloading setting + + + Use Cookies + + src/app/settings/settings.component.html + 405 + + Use cookies setting + + + Set Cookies + + src/app/settings/settings.component.html + 406 + + Set cookies button + + + Restart server + + src/app/settings/settings.component.html + 418 + + Restart server button + + + Users + + src/app/settings/settings.component.html + 427 + + Users settings label + + + Allow user registration + + src/app/settings/settings.component.html + 433 + + Allow registration setting + + + Auth method + + src/app/settings/settings.component.html + 437 + + Auth method select + + + Internal + + src/app/settings/settings.component.html + 439 + + Internal auth method + + + LDAP + + src/app/settings/settings.component.html + 442 + + LDAP auth method + + + LDAP URL + + src/app/settings/settings.component.html + 449 + + LDAP URL + + + Bind DN + + src/app/settings/settings.component.html + 454 + + Bind DN + + + Bind Credentials + + src/app/settings/settings.component.html + 459 + + Bind Credentials + + + Search Base + + src/app/settings/settings.component.html + 464 + + Search Base + + + Search Filter + + src/app/settings/settings.component.html + 469 + + Search Filter + + + Logs + + src/app/settings/settings.component.html + 478 + + Logs settings label + + + You must enable multi-user mode to access this tab. + + src/app/settings/settings.component.ts + 48 + + + + Length: + + src/app/subscription/subscription-file-card/subscription-file-card.component.html + 3 + + Video duration label + + + Your subscriptions + + src/app/subscriptions/subscriptions.component.html + 3 + + Subscriptions title + + + Channels + + src/app/subscriptions/subscriptions.component.html + 8 + + Subscriptions channels title + + + Name not available. Channel retrieval in progress. + + src/app/subscriptions/subscriptions.component.html + 14 + + Subscription playlist not available text + + + You have no channel subscriptions. + + src/app/subscriptions/subscriptions.component.html + 27 + + No channel subscriptions text + + + Playlists + + src/app/subscriptions/subscriptions.component.html + 30 + + Subscriptions playlists title + + + Name not available. Playlist retrieval in progress. + + src/app/subscriptions/subscriptions.component.html + 36 + + Subscription playlist not available text + + + You have no playlist subscriptions. + + src/app/subscriptions/subscriptions.component.html + 49 + + No playlist subscriptions text + + + Select a version: + + src/app/updater/updater.component.html + 3 + + Select a version + + + + diff --git a/src/assets/i18n/messages.pt.xlf b/src/assets/i18n/messages.pt.xlf index f3404b0..aaf2d4f 100644 --- a/src/assets/i18n/messages.pt.xlf +++ b/src/assets/i18n/messages.pt.xlf @@ -3104,6 +3104,15 @@ Skip ad button + + Tasks + Tarefas + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + diff --git a/src/assets/i18n/messages.ru.xlf b/src/assets/i18n/messages.ru.xlf index 98528a4..1da0ade 100644 --- a/src/assets/i18n/messages.ru.xlf +++ b/src/assets/i18n/messages.ru.xlf @@ -13,7 +13,7 @@ Name - Имя + Название app/create-playlist/create-playlist.component.html 5 @@ -124,7 +124,7 @@ Modify - Модифицировать + Изменить app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html 85 @@ -289,7 +289,7 @@ Path is relative to the config download path. Don't include extension. - Путь является относительным к пути загрузки конфигурации. Не включайте расширение. + Путь является относительным к пути загрузки конфигурации. Не включайте расширение. app/main/main.component.html 131 @@ -336,9 +336,7 @@ YT Password placeholder - - Audio - + Audio app/main/main.component.html @@ -347,9 +345,7 @@ Audio files title - - Your audio files are here - + Your audio files are here app/main/main.component.html @@ -375,9 +371,7 @@ Playlists title - - No playlists available. Create one from your downloading audio files by clicking the blue plus button. - + No playlists available. Create one from your downloading audio files by clicking the blue plus button. app/main/main.component.html @@ -386,9 +380,7 @@ No video playlists available text - - Video - + Video app/main/main.component.html @@ -397,9 +389,7 @@ Video files title - - Your video files are here - + Your video files are here app/main/main.component.html @@ -408,9 +398,7 @@ Video files description - - No playlists available. Create one from your downloading video files by clicking the blue plus button. - + No playlists available. Create one from your downloading video files by clicking the blue plus button. app/main/main.component.html @@ -433,7 +421,7 @@ URL: - URL-адрес: + Ссылка: app/dialogs/video-info-dialog/video-info-dialog.component.html 9 @@ -523,7 +511,7 @@ Modify playlist - Изменить список воспроизведения + Изменить плейлист app/dialogs/modify-playlist/modify-playlist.component.html 1 @@ -602,7 +590,7 @@ Upload new cookies - Загрузка новых файлов cookie + Загрузка новых cookie app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html 1 @@ -642,7 +630,7 @@ URL - URL-адрес + Ссылка app/settings/settings.component.html 18 @@ -744,7 +732,7 @@ Allow subscriptions setting - Base bath for subscriptions + Subscriptions base path Базовый путь для подписок app/settings/settings.component.html @@ -1283,7 +1271,7 @@ is an open-source YouTube downloader built under Google's Material Design specifications. You can seamlessly download your favorite videos as video or audio files, and even subscribe to your favorite channels and playlists to keep updated with their new videos. - это загрузчик YouTube с открытым исходным кодом, созданный в соответствии со спецификациями Material Design от Google. Вы можете легко загружать любимые видеоролики в виде видео- или аудиофайлов и даже подписываться на любимые каналы и плейлисты, чтобы быть в курсе их новых видео. + это загрузчик YouTube с открытым исходным кодом, созданный в соответствии со спецификациями Material Design от Google. Вы можете легко загружать любимые видеоролики в виде видео- или аудиофайлов и даже подписываться на любимые каналы и плейлисты, чтобы быть в курсе новых видео. app/dialogs/about-dialog/about-dialog.component.html 12 @@ -1346,7 +1334,7 @@ to create an issue! - чтобы создать проблему! + чтобы описать проблему! app/dialogs/about-dialog/about-dialog.component.html 25 @@ -1417,7 +1405,7 @@ Create admin account - Создайте учетную запись администратора + Создание учетной записи администратора app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html 1 @@ -1426,7 +1414,7 @@ No default admin account detected. This will create and set the password for an admin account with the user name as 'admin'. - Учетная запись администратора по умолчанию не обнаружена. Это создаст и установит пароль для учетной записи администратора с именем пользователя 'admin'. + Учетная запись администратора по умолчанию не обнаружена. Это создаст и установит пароль для учетной записи администратора с именем пользователя 'admin'. app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html 5 @@ -1453,7 +1441,7 @@ About - О + О программе app/app.component.html 32 @@ -1462,7 +1450,7 @@ Home - Дом + Домашняя страница app/app.component.html 43 @@ -1525,7 +1513,7 @@ Use timestamp - Используйте метку времени + Использовать метку времени app/dialogs/share-media-dialog/share-media-dialog.component.html 13 @@ -1619,7 +1607,7 @@ The playlist or channel URL - URL-адрес списка воспроизведения или канала + Ссылка на плейлист или канал app/dialogs/subscribe-dialog/subscribe-dialog.component.html 9 @@ -1637,7 +1625,7 @@ Download all uploads - Загрузить все загруженные файлы + Загрузить все загруженные файлы app/dialogs/subscribe-dialog/subscribe-dialog.component.html 23 @@ -1646,7 +1634,7 @@ Download videos uploaded in the last - Скачать видео, загруженное за последние время + Скачать видео, загруженные за последнее время app/dialogs/subscribe-dialog/subscribe-dialog.component.html 26 @@ -1655,7 +1643,7 @@ Audio-only mode - Только аудио режим + Только звук app/dialogs/subscribe-dialog/subscribe-dialog.component.html 38 @@ -1664,7 +1652,7 @@ Streaming-only mode - Режим только для потокового вещания + Только потоковое вещание app/dialogs/subscribe-dialog/subscribe-dialog.component.html 43 @@ -1682,7 +1670,7 @@ Custom file output - Пользовательский вывод файлов + Пользовательский файл для вывода app/dialogs/subscribe-dialog/subscribe-dialog.component.html 57 @@ -1727,7 +1715,7 @@ Unsubscribe - Отписаться от рассылки + Отписаться app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html 26 @@ -1929,7 +1917,7 @@ Set new password - Установите новый пароль + Задать новый пароль app/components/manage-user/manage-user.component.html 10 @@ -2045,7 +2033,7 @@ See less. - Смотреть меньше. + Закрыть. src/app/components/see-more/see-more.component.html 8,9 @@ -2054,7 +2042,7 @@ See more. - См. подробнее. + Раскрыть. src/app/components/see-more/see-more.component.html 5,6 @@ -2099,7 +2087,7 @@ Clear logs - Очистить журналы + Очистить журнал src/app/components/logs-viewer/logs-viewer.component.html 34 @@ -2404,7 +2392,7 @@ Download Twitch Chat - Скачать Чат Twitch + Скачать чат Twitch src/app/components/twitch-chat/twitch-chat.component.html 10 @@ -2431,7 +2419,7 @@ Editing category - Категория редактирования + Редактирование категории src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html 1 @@ -2449,7 +2437,7 @@ Editing - Редактирование + Правка src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html 1 @@ -2494,7 +2482,7 @@ Add content - Добавить содержание + Добавить содержание src/app/dialogs/modify-playlist/modify-playlist.component.html 19 @@ -2503,7 +2491,7 @@ NOTE: Uploading new cookies will override your previous cookies. Also note that cookies are instance-wide, not per-user. - ПРИМЕЧАНИЕ: Загрузка новых файлов cookie отменяет предыдущие файлы cookie. Также обратите внимание, что файлы cookie используются в масштабах всего экземпляра, а не каждого пользователя. + ПРИМЕЧАНИЕ: Загрузка новых cookie отменяет предыдущие cookie. Также обратите внимание, что cookie используются в масштабах всего экземпляра, а не каждого пользователя. src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html 20 @@ -2546,7 +2534,7 @@ Max quality - Максимальное качество + Лучшее качество src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html 40 @@ -2760,8 +2748,8 @@ Download rate limit input hint - Download for has been queued! - Загрузка для выла добавлена в очередь! + Download for has been queued! + Загрузка для была добавлена в очередь! src/app/main/main.component.ts 469 @@ -2885,7 +2873,7 @@ Build date: - Дата постройки: + Дата сборки: src/app/dialogs/about-dialog/about-dialog.component.html 33 @@ -2894,7 +2882,7 @@ Clear - Стереть + Очистить src/app/components/downloads/downloads.component.ts 131 @@ -2902,7 +2890,7 @@ Complete - Закончено + Завершено src/app/components/downloads/downloads.component.ts 61 @@ -2910,7 +2898,7 @@ Clear finished downloads - Очистить законченны загрузки + Очистить завершённые загрузки src/app/components/downloads/downloads.component.ts 129 @@ -2960,7 +2948,7 @@ Clear - Стереть + Очистить src/app/components/downloads/downloads.component.html 68 @@ -3033,8 +3021,8 @@ Progress - Error for - Ошибка для + Error for + Ошибка с src/app/components/downloads/downloads.component.ts 238 @@ -3118,7 +3106,7 @@ Docker tag: - Тег Docker: + Метка Docker: src/app/dialogs/about-dialog/about-dialog.component.html 28 @@ -3176,6 +3164,296 @@ Commit hash + + Tasks + Задачи + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + N/A + Неизвестно + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Last ran + Последний запуск + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + Last confirmed + Последние подтверждённые + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + Status + Статус + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Busy + Занято + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Scheduled for + Отложено для + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + + + Not scheduled + Не отложено + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Clear missing files from DB: + Очистка потерянных файлов из базы данных: + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Clear duplicate files from DB: + Очистка дубликатов файлов из базы данных: + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Update binary to: + Обновить бинарный файл на: + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Run + Запустить + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Schedule + Отложить + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Restore DB from backup + Восстановить базу данных из резервной копии + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Reset tasks + Сбросить задачи + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + No tasks available! + Нет доступных задач! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Successfully ran task! + Задача успешно запущена! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Failed to run task! + Не удалось запустить задачу! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Successfully confirmed task! + Задача успешно подтверждена! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Would you like to reset your tasks? All your schedules will be removed as well. + Хотите ли вы сбросить ваши задачи? Все отложенные задачи также будут удалены. + + src/app/components/tasks/tasks.component.ts + 133 + + + + Restore + Восстановить + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Update task schedule + Обновить расписание задачи + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 1 + + Update task schedule + + + Enabled + Включено + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Recurring + Повторяющиеся + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + + + Update + Обновить + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + + + Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,, + Глобальные пользовательские аргументы для загрузок на домашней странице. (Установите аргументы подписок для каждой подписки отдельно!) Аргументы разделяются, используя две запятые, как здесь: ,, + + src/app/settings/settings.component.html + 128 + + Custom args setting input hint + + + Reset tasks + Сбросить задачи + + src/app/components/tasks/tasks.component.ts + 132 + + + + Failed to confirm task! + Не удалось подтвердить задачу! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Reset + Сбросить + + src/app/components/tasks/tasks.component.ts + 134 + + + + Failed to reset tasks! + Не удалось сбросить задачи! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + Tasks successfully reset! + Задачи успешно сброшены! + + src/app/components/tasks/tasks.component.ts + 142 + + diff --git a/src/assets/i18n/messages.zh.xlf b/src/assets/i18n/messages.zh.xlf index 5ed8f19..aaa108c 100644 --- a/src/assets/i18n/messages.zh.xlf +++ b/src/assets/i18n/messages.zh.xlf @@ -289,7 +289,7 @@ Path is relative to the config download path. Don't include extension. - 该路径是相对于配置下载路径的,省略文件扩展名 + 该路径是相对于配置中的下载路径,省略文件扩展名。 app/main/main.component.html 131 @@ -1863,7 +1863,7 @@ No downloads available! - 没有下载可用! + 无可用下载! app/components/downloads/downloads.component.html 25 @@ -2312,7 +2312,7 @@ See less. - 查看更少 + 查看更少。 src/app/components/see-more/see-more.component.html 8,9 @@ -2361,7 +2361,7 @@ Also known as a Client ID. - 也称为客户ID + 也称为客户ID。 src/app/settings/settings.component.html 249 @@ -2496,7 +2496,7 @@ No videos found. - 找不到视频 + 找不到视频。 src/app/components/recent-videos/recent-videos.component.html 38 @@ -2602,7 +2602,7 @@ Transfer DB to - 数据库转移到 + 转移数据库到 src/app/settings/settings.component.html 308 @@ -2629,7 +2629,7 @@ MongoDB Connection String - MongoDB 连接字符串 + MongoDB URI 连接 src/app/settings/settings.component.html 299 @@ -2717,6 +2717,732 @@ Crop video checkbox + + Clear finished downloads + 清空已完成任务 + + src/app/components/downloads/downloads.component.ts + 129 + + + + Copy to clipboard + 复制到剪切板 + + src/app/components/downloads/downloads.component.ts + 240 + + + + Clear + 清空 + + src/app/components/downloads/downloads.component.ts + 131 + + + + Error for + 报错 + + src/app/components/downloads/downloads.component.ts + 238 + + + + Close + 关闭 + + src/app/components/downloads/downloads.component.ts + 241 + + + + Copied to clipboard! + 已复制到剪切板! + + src/app/components/downloads/downloads.component.ts + 249 + + + + Date + 日期 + + src/app/components/downloads/downloads.component.html + 7 + + Date + + + Pause + 暂停 + + src/app/components/downloads/downloads.component.html + 59 + + Pause + + + Resume + 继续 + + src/app/components/downloads/downloads.component.html + 60 + + Resume + + + Failed to reset tasks! + 重置失败! + + src/app/components/tasks/tasks.component.ts + 144 + + + src/app/components/tasks/tasks.component.ts + 147 + + + + Autoplay + 自动播放 + + src/app/main/main.component.html + 70,72 + + Autoplay checkbox + + + Replace args + 替换参数 + + src/app/main/main.component.html + 116,118 + + Replace args + + + Generates NFO files with every download, primarily used by Kodi. + 每次下载创建一个主要由 Kodi 使用的 NFO 文件。 + + src/app/settings/settings.component.html + 274 + + Generate NFO files tooltip + + + You must enable multi-user mode to access this tab. + 启用多用户模式来访问此页面。 + + src/app/settings/settings.component.ts + 48 + + + + Enables a button to skip ads when viewing supported videos. + 观看视频时启用跳过广告按钮。 + + src/app/settings/settings.component.html + 271 + + SponsorBlock API tooltip + + + Title + 标题 + + src/app/components/downloads/downloads.component.html + 13 + + + src/app/components/tasks/tasks.component.html + 6 + + Title + + + Subscription + 订阅 + + src/app/components/downloads/downloads.component.html + 23 + + Subscription + + + Progress + 进度 + + src/app/components/downloads/downloads.component.html + 42 + + Progress + + + Actions + 操作 + + src/app/components/downloads/downloads.component.html + 55 + + + src/app/components/tasks/tasks.component.html + 49 + + Actions + + + Stage + 状态 + + src/app/components/downloads/downloads.component.html + 36 + + Stage + + + Resume all downloads + 全部开始 + + src/app/components/downloads/downloads.component.html + 84 + + Resume all downloads + + + Restart + 重新开始 + + src/app/components/downloads/downloads.component.html + 66 + + Restart + + + Clear finished downloads + 清空已完成任务 + + src/app/components/downloads/downloads.component.html + 85 + + Clear finished downloads + + + Pause all downloads + 全部暂停 + + src/app/components/downloads/downloads.component.html + 83 + + Pause all downloads + + + Add to playlist + 添加到播放列表 + + src/app/components/unified-file-card/unified-file-card.component.html + 26 + + Add to playlist menu item + + + Tasks + 任务 + + src/app/app.component.html + 47 + + Navigation menu Tasks Page title + + + Clear + 清空 + + src/app/components/downloads/downloads.component.html + 68 + + Clear + + + Creating download + 新建下载 + + src/app/components/downloads/downloads.component.ts + 58 + + + + Getting info + 获取信息 + + src/app/components/downloads/downloads.component.ts + 59 + + + + Complete + 完成 + + src/app/components/downloads/downloads.component.ts + 61 + + + + Would you like to clear your finished downloads? + 是否要清空已完成的下载任务? + + src/app/components/downloads/downloads.component.ts + 130 + + + + Show error + 查看错误 + + src/app/components/downloads/downloads.component.html + 65 + + Show error + + + Watch content + 查看内容 + + src/app/components/downloads/downloads.component.html + 64 + + Watch content + + + Downloading file + 下载中 + + src/app/components/downloads/downloads.component.ts + 60 + + + + File type + 文件类型 + + src/app/components/recent-videos/recent-videos.component.html + 52 + + File type + + + Video only + 只视频 + + src/app/components/recent-videos/recent-videos.component.html + 55 + + Video only + + + Audio only + 仅音频 + + src/app/components/recent-videos/recent-videos.component.html + 56 + + Audio only + + + Skip ad + 跳过广告 + + src/app/components/skip-ad-button/skip-ad-button.component.html + 1 + + Skip ad button + + + Last ran + 上次运行 + + src/app/components/tasks/tasks.component.html + 16 + + Last ran + + + Status + 状态 + + src/app/components/tasks/tasks.component.html + 34 + + Status + + + Busy + 繁忙 + + src/app/components/tasks/tasks.component.html + 36 + + Busy + + + Clear duplicate files from DB: + 清除数据库中重复的文件: + + src/app/components/tasks/tasks.component.html + 60 + + Clear duplicate files from DB + + + Clear missing files from DB: + 清除数据库中缺失的文件: + + src/app/components/tasks/tasks.component.html + 57 + + Clear missing files from DB + + + Update binary to: + 升级二进制文件: + + src/app/components/tasks/tasks.component.html + 63 + + Update binary to + + + Schedule + 计划 + + src/app/components/tasks/tasks.component.html + 72 + + Schedule + + + Restore DB from backup + 从备份中恢复数据库 + + src/app/components/tasks/tasks.component.html + 89 + + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 1 + + Restore DB from backup button + + + Reset tasks + 重设任务 + + src/app/components/tasks/tasks.component.html + 90 + + Reset tasks button + + + Run + 运行 + + src/app/components/tasks/tasks.component.html + 69 + + Run + + + Last confirmed + 上次确认 + + src/app/components/tasks/tasks.component.html + 25 + + Last confirmed + + + No tasks available! + 无可用任务! + + src/app/components/tasks/tasks.component.html + 94 + + No tasks label + + + Successfully ran task! + 运行成功! + + src/app/components/tasks/tasks.component.ts + 78 + + + + Failed to run task! + 运行失败! + + src/app/components/tasks/tasks.component.ts + 79 + + + src/app/components/tasks/tasks.component.ts + 81 + + + + Reset tasks + 重置任务 + + src/app/components/tasks/tasks.component.ts + 132 + + + + Would you like to reset your tasks? All your schedules will be removed as well. + 是否确认重置所有任务?您的所有计划都将被移除。 + + src/app/components/tasks/tasks.component.ts + 133 + + + + Reset + 重置 + + src/app/components/tasks/tasks.component.ts + 134 + + + + Tasks successfully reset! + 重置成功! + + src/app/components/tasks/tasks.component.ts + 142 + + + + Failed to confirm task! + 任务确认失败! + + src/app/components/tasks/tasks.component.ts + 90 + + + src/app/components/tasks/tasks.component.ts + 92 + + + + Successfully confirmed task! + 任务确认成功! + + src/app/components/tasks/tasks.component.ts + 89 + + + + Installation type: + 安装类型: + + src/app/dialogs/about-dialog/about-dialog.component.html + 25 + + Installation type + + + Docker tag: + Docker 标签: + + src/app/dialogs/about-dialog/about-dialog.component.html + 28 + + Docker tag + + + Commit hash: + Commit hash: + + src/app/dialogs/about-dialog/about-dialog.component.html + 31 + + Commit hash + + + Build date: + 构建日期: + + src/app/dialogs/about-dialog/about-dialog.component.html + 33 + + Build date + + + Restore + 恢复 + + src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html + 25 + + Restore button + + + Enabled + 已启用 + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 7 + + Enabled + + + Update task schedule + 更新任务计划 + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 1 + + Update task schedule + + + Update + 更新 + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 52 + + Update button + + + Download for has been queued! + 下载已添加到队列中! + + src/app/main/main.component.ts + 403 + + + + Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,, + 用于主页下载的全局性自定义变量。(为每个订阅单独设置变量!)变量间使用两个逗号来分隔,例如:, , + + src/app/settings/settings.component.html + 128 + + Custom args setting input hint + + + Max concurrent downloads + 同时下载任务数 + + src/app/settings/settings.component.html + 177 + + Max concurrent downloads + + + Limits the amount of downloads that can be simultaneously downloaded. Use -1 for no limit. + 限制同时下载数。-1 表示无限制。 + + src/app/settings/settings.component.html + 178 + + Max concurrent downloads input hint + + + Download rate limit + 下载限速 + + src/app/settings/settings.component.html + 183 + + Download rate limit input placeholder + + + Rate limits your downloads to the specified amount. Ex: 200K + 将您的最大下载速率限制为指定数字。例如:200K + + src/app/settings/settings.component.html + 184 + + Download rate limit input hint + + + Allow autoplay + 允许自动播放 + + src/app/settings/settings.component.html + 223 + + Allow autoplay setting + + + Use SponsorBlock API + 使用 SponsorBlock API + + src/app/settings/settings.component.html + 271 + + Use SponsorBlock API setting + + + Generate NFO files + 生成 NFO 文件 + + src/app/settings/settings.component.html + 274 + + Generate NFO files setting + + + Both + 全部 + + src/app/components/recent-videos/recent-videos.component.html + 54 + + Both + + + N/A + N/A + + src/app/components/tasks/tasks.component.html + 19 + + + src/app/components/tasks/tasks.component.html + 28 + + N/A + + + Scheduled for + 计划于 + + src/app/components/tasks/tasks.component.html + 38 + + Scheduled + + + Not scheduled + 尚未计划 + + src/app/components/tasks/tasks.component.html + 42 + + Not scheduled + + + Recurring + 重复 + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html + 10 + + Recurring + diff --git a/src/bootstrap.min.css b/src/bootstrap.min.css new file mode 100644 index 0000000..6561b6f --- /dev/null +++ b/src/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/src/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 new file mode 100644 index 0000000..fc71d94 Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 differ diff --git a/src/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 new file mode 100644 index 0000000..020729e Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu4mxK.woff2 differ diff --git a/src/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 new file mode 100644 index 0000000..47da362 Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 differ diff --git a/src/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 new file mode 100644 index 0000000..22ddee9 Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu72xKOzY.woff2 differ diff --git a/src/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 new file mode 100644 index 0000000..8a8de61 Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 differ diff --git a/src/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 new file mode 100644 index 0000000..6284d2e Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 differ diff --git a/src/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 b/src/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 new file mode 100644 index 0000000..72ce0e9 Binary files /dev/null and b/src/fonts/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 differ diff --git a/src/fonts/fonts.css b/src/fonts/fonts.css new file mode 100644 index 0000000..1b4e892 --- /dev/null +++ b/src/fonts/fonts.css @@ -0,0 +1,68 @@ +/* cyrillic-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu72xKOzY.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format("woff2"); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format("woff2"); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format("woff2"); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, + U+01AF-01B0, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format("woff2"); + unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, + U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Roboto"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(/fonts//KFOmCnqEu92Fr1Mu4mxK.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, + U+FEFF, U+FFFD; +} diff --git a/src/index.html b/src/index.html index 4bc4bbb..30a1ce7 100644 --- a/src/index.html +++ b/src/index.html @@ -1,17 +1,17 @@ - + - - - YoutubeDLMaterial - + + + YoutubeDLMaterial + - - - - - - - - - + + + + + + + + +