├── .dockerignore ├── .gitignore ├── Dockerfile ├── README.md ├── __init__.py ├── db └── database.py ├── main.py ├── models └── models.py ├── requirements.txt ├── schema └── schema.py ├── services └── db_service.py ├── static ├── css │ ├── fontawesome-free │ │ ├── css │ │ │ ├── all.css │ │ │ ├── all.min.css │ │ │ ├── brands.css │ │ │ ├── brands.min.css │ │ │ ├── fontawesome.css │ │ │ ├── fontawesome.min.css │ │ │ ├── regular.css │ │ │ ├── regular.min.css │ │ │ ├── solid.css │ │ │ ├── solid.min.css │ │ │ ├── svg-with-js.css │ │ │ ├── svg-with-js.min.css │ │ │ ├── v4-shims.css │ │ │ └── v4-shims.min.css │ │ └── webfonts │ │ │ ├── fa-brands-400.eot │ │ │ ├── fa-brands-400.svg │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-brands-400.woff │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.eot │ │ │ ├── fa-regular-400.svg │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-regular-400.woff │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-solid-900.eot │ │ │ ├── fa-solid-900.svg │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff │ │ │ └── fa-solid-900.woff2 │ └── site.css ├── fontawesome-free │ ├── css │ │ ├── all.css │ │ ├── all.min.css │ │ ├── brands.css │ │ ├── brands.min.css │ │ ├── fontawesome.css │ │ ├── fontawesome.min.css │ │ ├── regular.css │ │ ├── regular.min.css │ │ ├── solid.css │ │ ├── solid.min.css │ │ ├── svg-with-js.css │ │ ├── svg-with-js.min.css │ │ ├── v4-shims.css │ │ └── v4-shims.min.css │ └── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ └── fa-solid-900.woff2 ├── img │ └── bars.svg └── js │ ├── htmx.js │ └── htmx.min.js ├── templates ├── authors │ ├── authors.html │ └── partials │ │ ├── add_authors_form.html │ │ ├── authors_books.html │ │ ├── show_add_author_form.html │ │ └── show_books.html ├── books │ ├── books.html │ └── partials │ │ ├── add_books_form.html │ │ ├── search_results.html │ │ └── show_add_form.html ├── home │ └── index.html └── shared │ └── _layout.html └── viewmodels ├── authors ├── addauthorviewmodel.py ├── authorbooks.py └── showauthors.py ├── books ├── addbookviewmodel.py ├── searchbooks.py └── showbooks.py ├── home └── homeviewmodel.py └── shared └── viewmodelbase.py /.dockerignore: -------------------------------------------------------------------------------- 1 | *__pychache__ 2 | node_modules 3 | npm-debug.log 4 | Dockerfile* 5 | docker-compose* 6 | .git 7 | .gitignore 8 | README.md 9 | LICENSE 10 | .vscode 11 | .vscode 12 | .env 13 | env 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | # Database 132 | sql_app.db 133 | 134 | # PyCharm junk 135 | .DS_Store 136 | .idea 137 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.8 2 | 3 | WORKDIR /code 4 | 5 | COPY . /code/ 6 | 7 | ENV SQLALCHEMY_DATABASE_URL "sqlite:////code/sql_app.db" 8 | 9 | RUN pip install --no-cache-dir --upgrade pip && pip install --no-cache-dir -r requirements.txt 10 | 11 | ENV PYTHONPATH "/code:${PYTHONPATH}" 12 | 13 | EXPOSE 8000 14 | 15 | CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fast-HTMX 2 | 3 | ## Description 4 | Fast-HTMX is a demo project of [FastAPI](https://fastapi.tiangolo.com) and [HTMX](https://htmx.org). The purpose of this project 5 | is to illustrate how to create a website with no JavaScript, using only HTML, CSS, and 6 | Python. HTMX is a plugin that allows this to be possible. 7 | 8 | ## HTMX Attributes 9 | The following HTMX attributes are used in this project: 10 | 11 | - hx-get 12 | - hx-post 13 | - hx-trigger 14 | - hx-target 15 | - hx-push-url 16 | - hx-indicator 17 | - hx-swap 18 | 19 | ## Structure 20 | db - Database setup 21 | 22 | models - Data models 23 | 24 | schema - Pydantic models 25 | 26 | services - Database services 27 | 28 | static - Static files 29 | 30 | templates - Contains files for each page and partials for all partial pages that are related to the main page of the directory which it is under. 31 | 32 | viewmodels - View models for gathering data for pages and partials. 33 | 34 | main.py - Main operational file for running FastAPI. 35 | 36 | ## How to run 37 | - Create virtual environment 38 | - Activate virtual environment 39 | - Install requirements `pip3 install -r requirements.txt` 40 | - Run project `python3 -m uvicorn main:app --reload` 41 | ### Using Docker 42 | - Build image `docker build -t fast-htmx .` 43 | - Create Database `touch sql_app.db` 44 | - Run container `docker run -v $(pwd)/sql_app.db:/code/sql_app.db -d --name fast-htmx -p 8000:8000 fast-htmx` -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/__init__.py -------------------------------------------------------------------------------- /db/database.py: -------------------------------------------------------------------------------- 1 | from os import getenv 2 | from sqlalchemy import create_engine 3 | from sqlalchemy.ext.declarative import declarative_base 4 | from sqlalchemy.orm import sessionmaker 5 | 6 | SQLALCHEMY_DATABASE_URL = getenv("SQLALCHEMY_DATABASE_URL", "sqlite:///./sql_app.db") 7 | 8 | engine = create_engine( 9 | SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} 10 | ) 11 | SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) 12 | 13 | Base = declarative_base() 14 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | from fastapi import FastAPI, Depends, HTTPException, Request, Form 2 | from fastapi.responses import RedirectResponse 3 | from fastapi.staticfiles import StaticFiles 4 | from fastapi.templating import Jinja2Templates 5 | from sqlalchemy.orm import Session 6 | 7 | from db.database import SessionLocal, engine 8 | from schema import schema 9 | from models import models 10 | from services import db_service as dbs 11 | 12 | from viewmodels.books import addbookviewmodel, showbooks, searchbooks 13 | from viewmodels.authors import showauthors, authorbooks 14 | from viewmodels.home import homeviewmodel 15 | 16 | 17 | models.Base.metadata.create_all(bind=engine) 18 | 19 | app = FastAPI() 20 | app.mount("/static", StaticFiles(directory="static"), name="static") 21 | 22 | templates = Jinja2Templates(directory="templates") 23 | 24 | 25 | # Dependency 26 | def get_db(): 27 | db = SessionLocal() 28 | try: 29 | yield db 30 | finally: 31 | db.close() 32 | 33 | 34 | @app.get("/") 35 | def home_page(request: Request, db: Session = Depends((get_db))): 36 | vm = homeviewmodel.HomeViewModel(db=db) 37 | books = vm.books 38 | return templates.TemplateResponse('home/index.html', {"request": request, "books": books}) 39 | 40 | 41 | @app.get("/author/add") 42 | def authors_add(request: Request): 43 | return templates.TemplateResponse('authors/partials/add_authors_form.html', {"request": request}) 44 | 45 | 46 | @app.post("/authors/add") 47 | def create_author(request: Request, email: str = Form(...), first_name: str = Form(...), last_name: str = Form(...), db: Session = Depends(get_db)): 48 | db_author = dbs.get_author_by_email(db, email=email) 49 | if db_author: 50 | raise HTTPException(status_code=400, detail="Email already registered") 51 | author = schema.AuthorCreate(last_name=last_name, first_name=first_name, email=email) 52 | dbs.create_author(db=db, author=author) 53 | url = request.headers.get('HX-Current-URL').split('/')[-1] 54 | if request.headers.get('HX-Request') and url == 'authors': 55 | return templates.TemplateResponse('authors/partials/show_add_author_form.html', {"request": request}) 56 | elif request.headers.get('HX-Request') and url == '': 57 | return templates.TemplateResponse('books/partials/show_add_form.html', {"request": request}) 58 | else: 59 | pass 60 | return RedirectResponse(url="/", status_code=302) 61 | 62 | 63 | @app.get("/authors/cancel_add") 64 | def cancel_author(request: Request): 65 | url = request.headers.get('HX-Current-URL').split('/')[-1] 66 | if url == 'authors': 67 | return templates.TemplateResponse('authors/partials/show_add_author_form.html', {"request": request}) 68 | return templates.TemplateResponse('books/partials/show_add_form.html', {"request": request}) 69 | 70 | 71 | @app.get("/authors/close_books/{author_id}") 72 | def close_authors_books(request: Request, author_id: int): 73 | return templates.TemplateResponse('authors/partials/show_books.html', {"request": request, "author_id": author_id}) 74 | 75 | 76 | @app.get("/authors") 77 | def show_authors(request: Request, db: Session = Depends(get_db)): 78 | vm = showauthors.ShowAuthorsViewModel(db=db) 79 | authors = vm.authors 80 | return templates.TemplateResponse('authors/authors.html', {"request": request, "authors": authors}) 81 | 82 | 83 | @app.get("/author/books/{author_id}") 84 | def authors_books(request: Request, author_id: int, db: Session = Depends(get_db)): 85 | vm = authorbooks.AuthorBooksViewModel(db=db, author_id=author_id) 86 | books = vm.books 87 | return templates.TemplateResponse('authors/partials/authors_books.html', 88 | {"request": request, "books": books, "author_id": author_id}) 89 | 90 | 91 | @app.get("/books/add") 92 | def add_book(request: Request, db: Session = Depends(get_db)): 93 | vm = addbookviewmodel.AddBookViewModel(db=db) 94 | data = vm.to_dict() 95 | return templates.TemplateResponse('books/partials/add_books_form.html', {"request": request, "data": data}) 96 | 97 | 98 | @app.post("/books/add") 99 | def book_add(title: str = Form(...), pages: str = Form(...), author_id: str = Form(...), db: Session = Depends(get_db)): 100 | db_book = dbs.get_book(db, title=title) 101 | if db_book: 102 | raise HTTPException(status_code=400, detail="Book already exists.") 103 | book = schema.CreateBook 104 | book.title = title 105 | book.author_id = int(author_id) 106 | book.pages = int(pages) 107 | dbs.create_book(db, book=book) 108 | return RedirectResponse(url="/", status_code=302) 109 | 110 | 111 | @app.get("/books/cancel_add") 112 | def cancel_add(request: Request): 113 | return templates.TemplateResponse('books/partials/show_add_form.html', {"request": request}) 114 | 115 | 116 | @app.get("/books") 117 | def get_books(request: Request, db: Session = Depends(get_db)): 118 | vm = showbooks.ShowBooksViewModel(db=db) 119 | books = vm.books 120 | return templates.TemplateResponse('books/books.html', {"request": request, "books": books, "search_text": ""}) 121 | 122 | 123 | @app.get("/books/search") 124 | def search_books(request: Request, search_text: str, db: Session = Depends(get_db)): 125 | vm = searchbooks.SearchViewModel(db=db, search_text=search_text) 126 | if request.headers.get('HX-Request'): 127 | return templates.TemplateResponse("books/partials/search_results.html", {"request": request, "books": vm.books}) 128 | return templates.TemplateResponse('books/books.html', {"request": request, "books": vm.books, "search_text": search_text}) 129 | -------------------------------------------------------------------------------- /models/models.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import Boolean, Column, ForeignKey, Integer, String 2 | from sqlalchemy.orm import relationship 3 | 4 | from db.database import Base 5 | 6 | 7 | class Authors(Base): 8 | __tablename__ = "authors" 9 | 10 | id = Column(Integer, primary_key=True, index=True) 11 | first_name = Column(String, index=True) 12 | last_name = Column(String, index=True) 13 | email = Column(String, unique=True, index=True) 14 | 15 | books = relationship("Books", back_populates="author") 16 | 17 | 18 | class Books(Base): 19 | __tablename__ = "books" 20 | 21 | id = Column(Integer, primary_key=True, index=True) 22 | title = Column(String, index=True) 23 | pages = Column(String, index=True) 24 | author_id = Column(Integer, ForeignKey("authors.id")) 25 | 26 | author = relationship("Authors", back_populates="books") 27 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | fastapi>=0.70.0 2 | Jinja2>=3.0.2 3 | SQLAlchemy>=1.4.25 4 | python-multipart==0.0.5 5 | uvicorn>=0.15.0 6 | -------------------------------------------------------------------------------- /schema/schema.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from pydantic import BaseModel 4 | 5 | 6 | class BookBase(BaseModel): 7 | title: str 8 | pages: int 9 | author_id: int 10 | 11 | 12 | class CreateBook(BookBase): 13 | pass 14 | 15 | 16 | class Book(BookBase): 17 | id: str 18 | 19 | class Config: 20 | orm_mode = True 21 | 22 | 23 | class AuthorBase(BaseModel): 24 | first_name: str 25 | last_name: str 26 | email: str 27 | 28 | 29 | class AuthorCreate(AuthorBase): 30 | pass 31 | 32 | 33 | class Author(AuthorBase): 34 | id: int 35 | books: List[Book] = [] 36 | 37 | class Config: 38 | orm_mode = True 39 | -------------------------------------------------------------------------------- /services/db_service.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from schema.schema import Author, AuthorCreate, Book, CreateBook 6 | from models import models 7 | 8 | 9 | def get_author(db: Session, author_id: int): 10 | return db.query(models.Authors).filter(models.Authors.id == author_id).first() 11 | 12 | 13 | def get_authors(db: Session, skip: int = 0, limit: int = 100): 14 | return db.query(models.Authors).offset(skip).limit(limit).all() 15 | 16 | 17 | def get_all_authors(db: Session): 18 | return db.query(models.Authors).all() 19 | 20 | def create_author(db: Session, author: AuthorCreate): 21 | print(f"create author {author}") 22 | db_author = models.Authors(first_name=author.first_name, last_name=author.last_name, email=author.email) 23 | db.add(db_author) 24 | db.commit() 25 | db.refresh(db_author) 26 | return db_author 27 | 28 | 29 | def get_author_by_email(db: Session, email: str): 30 | return db.query(models.Authors).filter(models.Authors.email == email).first() 31 | 32 | 33 | def get_book(db: Session, title: str): 34 | return db.query(models.Books).filter(models.Books.title == title).first() 35 | 36 | 37 | def create_book(db: Session, book: CreateBook): 38 | print(f"create book {book}") 39 | db_book = models.Books(title=book.title, pages=book.pages, author_id=book.author_id) 40 | db.add(db_book) 41 | db.commit() 42 | db.refresh(db_book) 43 | return db_book 44 | 45 | 46 | def list_books(db: Session, skip: int = 0, limit: int = 1000): 47 | books = db.query(models.Books).offset(skip).limit(limit).all() 48 | authors = db.query(models.Authors).all() 49 | for book in books: 50 | for author in authors: 51 | if book.author_id == author.id: 52 | book.author_name = author.first_name + " " + author.last_name 53 | return books 54 | 55 | 56 | def search_books(db: Session, search_text: str): 57 | results: List[Book] = [] 58 | 59 | if not search_text or not search_text.strip(): 60 | return results 61 | 62 | for book in list_books(db=db): 63 | text = f"{book.title} {book.author_name}".lower() 64 | if search_text in text: 65 | results.append(book) 66 | return results 67 | -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Brands'; 7 | font-style: normal; 8 | font-weight: 400; 9 | font-display: block; 10 | src: url("../webfonts/fa-brands-400.eot"); 11 | src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } 12 | 13 | .fab { 14 | font-family: 'Font Awesome 5 Brands'; 15 | font-weight: 400; } 16 | -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/brands.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400} -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 400; 9 | font-display: block; 10 | src: url("../webfonts/fa-regular-400.eot"); 11 | src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } 12 | 13 | .far { 14 | font-family: 'Font Awesome 5 Free'; 15 | font-weight: 400; } 16 | -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/regular.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400} -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 900; 9 | font-display: block; 10 | src: url("../webfonts/fa-solid-900.eot"); 11 | src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } 12 | 13 | .fa, 14 | .fas { 15 | font-family: 'Font Awesome 5 Free'; 16 | font-weight: 900; } 17 | -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/solid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900} -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/svg-with-js.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | svg:not(:root).svg-inline--fa { 6 | overflow: visible; } 7 | 8 | .svg-inline--fa { 9 | display: inline-block; 10 | font-size: inherit; 11 | height: 1em; 12 | overflow: visible; 13 | vertical-align: -.125em; } 14 | .svg-inline--fa.fa-lg { 15 | vertical-align: -.225em; } 16 | .svg-inline--fa.fa-w-1 { 17 | width: 0.0625em; } 18 | .svg-inline--fa.fa-w-2 { 19 | width: 0.125em; } 20 | .svg-inline--fa.fa-w-3 { 21 | width: 0.1875em; } 22 | .svg-inline--fa.fa-w-4 { 23 | width: 0.25em; } 24 | .svg-inline--fa.fa-w-5 { 25 | width: 0.3125em; } 26 | .svg-inline--fa.fa-w-6 { 27 | width: 0.375em; } 28 | .svg-inline--fa.fa-w-7 { 29 | width: 0.4375em; } 30 | .svg-inline--fa.fa-w-8 { 31 | width: 0.5em; } 32 | .svg-inline--fa.fa-w-9 { 33 | width: 0.5625em; } 34 | .svg-inline--fa.fa-w-10 { 35 | width: 0.625em; } 36 | .svg-inline--fa.fa-w-11 { 37 | width: 0.6875em; } 38 | .svg-inline--fa.fa-w-12 { 39 | width: 0.75em; } 40 | .svg-inline--fa.fa-w-13 { 41 | width: 0.8125em; } 42 | .svg-inline--fa.fa-w-14 { 43 | width: 0.875em; } 44 | .svg-inline--fa.fa-w-15 { 45 | width: 0.9375em; } 46 | .svg-inline--fa.fa-w-16 { 47 | width: 1em; } 48 | .svg-inline--fa.fa-w-17 { 49 | width: 1.0625em; } 50 | .svg-inline--fa.fa-w-18 { 51 | width: 1.125em; } 52 | .svg-inline--fa.fa-w-19 { 53 | width: 1.1875em; } 54 | .svg-inline--fa.fa-w-20 { 55 | width: 1.25em; } 56 | .svg-inline--fa.fa-pull-left { 57 | margin-right: .3em; 58 | width: auto; } 59 | .svg-inline--fa.fa-pull-right { 60 | margin-left: .3em; 61 | width: auto; } 62 | .svg-inline--fa.fa-border { 63 | height: 1.5em; } 64 | .svg-inline--fa.fa-li { 65 | width: 2em; } 66 | .svg-inline--fa.fa-fw { 67 | width: 1.25em; } 68 | 69 | .fa-layers svg.svg-inline--fa { 70 | bottom: 0; 71 | left: 0; 72 | margin: auto; 73 | position: absolute; 74 | right: 0; 75 | top: 0; } 76 | 77 | .fa-layers { 78 | display: inline-block; 79 | height: 1em; 80 | position: relative; 81 | text-align: center; 82 | vertical-align: -.125em; 83 | width: 1em; } 84 | .fa-layers svg.svg-inline--fa { 85 | -webkit-transform-origin: center center; 86 | transform-origin: center center; } 87 | 88 | .fa-layers-text, .fa-layers-counter { 89 | display: inline-block; 90 | position: absolute; 91 | text-align: center; } 92 | 93 | .fa-layers-text { 94 | left: 50%; 95 | top: 50%; 96 | -webkit-transform: translate(-50%, -50%); 97 | transform: translate(-50%, -50%); 98 | -webkit-transform-origin: center center; 99 | transform-origin: center center; } 100 | 101 | .fa-layers-counter { 102 | background-color: #ff253a; 103 | border-radius: 1em; 104 | -webkit-box-sizing: border-box; 105 | box-sizing: border-box; 106 | color: #fff; 107 | height: 1.5em; 108 | line-height: 1; 109 | max-width: 5em; 110 | min-width: 1.5em; 111 | overflow: hidden; 112 | padding: .25em; 113 | right: 0; 114 | text-overflow: ellipsis; 115 | top: 0; 116 | -webkit-transform: scale(0.25); 117 | transform: scale(0.25); 118 | -webkit-transform-origin: top right; 119 | transform-origin: top right; } 120 | 121 | .fa-layers-bottom-right { 122 | bottom: 0; 123 | right: 0; 124 | top: auto; 125 | -webkit-transform: scale(0.25); 126 | transform: scale(0.25); 127 | -webkit-transform-origin: bottom right; 128 | transform-origin: bottom right; } 129 | 130 | .fa-layers-bottom-left { 131 | bottom: 0; 132 | left: 0; 133 | right: auto; 134 | top: auto; 135 | -webkit-transform: scale(0.25); 136 | transform: scale(0.25); 137 | -webkit-transform-origin: bottom left; 138 | transform-origin: bottom left; } 139 | 140 | .fa-layers-top-right { 141 | right: 0; 142 | top: 0; 143 | -webkit-transform: scale(0.25); 144 | transform: scale(0.25); 145 | -webkit-transform-origin: top right; 146 | transform-origin: top right; } 147 | 148 | .fa-layers-top-left { 149 | left: 0; 150 | right: auto; 151 | top: 0; 152 | -webkit-transform: scale(0.25); 153 | transform: scale(0.25); 154 | -webkit-transform-origin: top left; 155 | transform-origin: top left; } 156 | 157 | .fa-lg { 158 | font-size: 1.33333em; 159 | line-height: 0.75em; 160 | vertical-align: -.0667em; } 161 | 162 | .fa-xs { 163 | font-size: .75em; } 164 | 165 | .fa-sm { 166 | font-size: .875em; } 167 | 168 | .fa-1x { 169 | font-size: 1em; } 170 | 171 | .fa-2x { 172 | font-size: 2em; } 173 | 174 | .fa-3x { 175 | font-size: 3em; } 176 | 177 | .fa-4x { 178 | font-size: 4em; } 179 | 180 | .fa-5x { 181 | font-size: 5em; } 182 | 183 | .fa-6x { 184 | font-size: 6em; } 185 | 186 | .fa-7x { 187 | font-size: 7em; } 188 | 189 | .fa-8x { 190 | font-size: 8em; } 191 | 192 | .fa-9x { 193 | font-size: 9em; } 194 | 195 | .fa-10x { 196 | font-size: 10em; } 197 | 198 | .fa-fw { 199 | text-align: center; 200 | width: 1.25em; } 201 | 202 | .fa-ul { 203 | list-style-type: none; 204 | margin-left: 2.5em; 205 | padding-left: 0; } 206 | .fa-ul > li { 207 | position: relative; } 208 | 209 | .fa-li { 210 | left: -2em; 211 | position: absolute; 212 | text-align: center; 213 | width: 2em; 214 | line-height: inherit; } 215 | 216 | .fa-border { 217 | border: solid 0.08em #eee; 218 | border-radius: .1em; 219 | padding: .2em .25em .15em; } 220 | 221 | .fa-pull-left { 222 | float: left; } 223 | 224 | .fa-pull-right { 225 | float: right; } 226 | 227 | .fa.fa-pull-left, 228 | .fas.fa-pull-left, 229 | .far.fa-pull-left, 230 | .fal.fa-pull-left, 231 | .fab.fa-pull-left { 232 | margin-right: .3em; } 233 | 234 | .fa.fa-pull-right, 235 | .fas.fa-pull-right, 236 | .far.fa-pull-right, 237 | .fal.fa-pull-right, 238 | .fab.fa-pull-right { 239 | margin-left: .3em; } 240 | 241 | .fa-spin { 242 | -webkit-animation: fa-spin 2s infinite linear; 243 | animation: fa-spin 2s infinite linear; } 244 | 245 | .fa-pulse { 246 | -webkit-animation: fa-spin 1s infinite steps(8); 247 | animation: fa-spin 1s infinite steps(8); } 248 | 249 | @-webkit-keyframes fa-spin { 250 | 0% { 251 | -webkit-transform: rotate(0deg); 252 | transform: rotate(0deg); } 253 | 100% { 254 | -webkit-transform: rotate(360deg); 255 | transform: rotate(360deg); } } 256 | 257 | @keyframes fa-spin { 258 | 0% { 259 | -webkit-transform: rotate(0deg); 260 | transform: rotate(0deg); } 261 | 100% { 262 | -webkit-transform: rotate(360deg); 263 | transform: rotate(360deg); } } 264 | 265 | .fa-rotate-90 { 266 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; 267 | -webkit-transform: rotate(90deg); 268 | transform: rotate(90deg); } 269 | 270 | .fa-rotate-180 { 271 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; 272 | -webkit-transform: rotate(180deg); 273 | transform: rotate(180deg); } 274 | 275 | .fa-rotate-270 { 276 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; 277 | -webkit-transform: rotate(270deg); 278 | transform: rotate(270deg); } 279 | 280 | .fa-flip-horizontal { 281 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; 282 | -webkit-transform: scale(-1, 1); 283 | transform: scale(-1, 1); } 284 | 285 | .fa-flip-vertical { 286 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; 287 | -webkit-transform: scale(1, -1); 288 | transform: scale(1, -1); } 289 | 290 | .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { 291 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; 292 | -webkit-transform: scale(-1, -1); 293 | transform: scale(-1, -1); } 294 | 295 | :root .fa-rotate-90, 296 | :root .fa-rotate-180, 297 | :root .fa-rotate-270, 298 | :root .fa-flip-horizontal, 299 | :root .fa-flip-vertical, 300 | :root .fa-flip-both { 301 | -webkit-filter: none; 302 | filter: none; } 303 | 304 | .fa-stack { 305 | display: inline-block; 306 | height: 2em; 307 | position: relative; 308 | width: 2.5em; } 309 | 310 | .fa-stack-1x, 311 | .fa-stack-2x { 312 | bottom: 0; 313 | left: 0; 314 | margin: auto; 315 | position: absolute; 316 | right: 0; 317 | top: 0; } 318 | 319 | .svg-inline--fa.fa-stack-1x { 320 | height: 1em; 321 | width: 1.25em; } 322 | 323 | .svg-inline--fa.fa-stack-2x { 324 | height: 2em; 325 | width: 2.5em; } 326 | 327 | .fa-inverse { 328 | color: #fff; } 329 | 330 | .sr-only { 331 | border: 0; 332 | clip: rect(0, 0, 0, 0); 333 | height: 1px; 334 | margin: -1px; 335 | overflow: hidden; 336 | padding: 0; 337 | position: absolute; 338 | width: 1px; } 339 | 340 | .sr-only-focusable:active, .sr-only-focusable:focus { 341 | clip: auto; 342 | height: auto; 343 | margin: 0; 344 | overflow: visible; 345 | position: static; 346 | width: auto; } 347 | 348 | .svg-inline--fa .fa-primary { 349 | fill: var(--fa-primary-color, currentColor); 350 | opacity: 1; 351 | opacity: var(--fa-primary-opacity, 1); } 352 | 353 | .svg-inline--fa .fa-secondary { 354 | fill: var(--fa-secondary-color, currentColor); 355 | opacity: 0.4; 356 | opacity: var(--fa-secondary-opacity, 0.4); } 357 | 358 | .svg-inline--fa.fa-swap-opacity .fa-primary { 359 | opacity: 0.4; 360 | opacity: var(--fa-secondary-opacity, 0.4); } 361 | 362 | .svg-inline--fa.fa-swap-opacity .fa-secondary { 363 | opacity: 1; 364 | opacity: var(--fa-primary-opacity, 1); } 365 | 366 | .svg-inline--fa mask .fa-primary, 367 | .svg-inline--fa mask .fa-secondary { 368 | fill: black; } 369 | 370 | .fad.fa-inverse { 371 | color: #fff; } 372 | -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/svg-with-js.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff} -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/v4-shims.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .fa.fa-glass:before { 6 | content: "\f000"; } 7 | 8 | .fa.fa-meetup { 9 | font-family: 'Font Awesome 5 Brands'; 10 | font-weight: 400; } 11 | 12 | .fa.fa-star-o { 13 | font-family: 'Font Awesome 5 Free'; 14 | font-weight: 400; } 15 | 16 | .fa.fa-star-o:before { 17 | content: "\f005"; } 18 | 19 | .fa.fa-remove:before { 20 | content: "\f00d"; } 21 | 22 | .fa.fa-close:before { 23 | content: "\f00d"; } 24 | 25 | .fa.fa-gear:before { 26 | content: "\f013"; } 27 | 28 | .fa.fa-trash-o { 29 | font-family: 'Font Awesome 5 Free'; 30 | font-weight: 400; } 31 | 32 | .fa.fa-trash-o:before { 33 | content: "\f2ed"; } 34 | 35 | .fa.fa-file-o { 36 | font-family: 'Font Awesome 5 Free'; 37 | font-weight: 400; } 38 | 39 | .fa.fa-file-o:before { 40 | content: "\f15b"; } 41 | 42 | .fa.fa-clock-o { 43 | font-family: 'Font Awesome 5 Free'; 44 | font-weight: 400; } 45 | 46 | .fa.fa-clock-o:before { 47 | content: "\f017"; } 48 | 49 | .fa.fa-arrow-circle-o-down { 50 | font-family: 'Font Awesome 5 Free'; 51 | font-weight: 400; } 52 | 53 | .fa.fa-arrow-circle-o-down:before { 54 | content: "\f358"; } 55 | 56 | .fa.fa-arrow-circle-o-up { 57 | font-family: 'Font Awesome 5 Free'; 58 | font-weight: 400; } 59 | 60 | .fa.fa-arrow-circle-o-up:before { 61 | content: "\f35b"; } 62 | 63 | .fa.fa-play-circle-o { 64 | font-family: 'Font Awesome 5 Free'; 65 | font-weight: 400; } 66 | 67 | .fa.fa-play-circle-o:before { 68 | content: "\f144"; } 69 | 70 | .fa.fa-repeat:before { 71 | content: "\f01e"; } 72 | 73 | .fa.fa-rotate-right:before { 74 | content: "\f01e"; } 75 | 76 | .fa.fa-refresh:before { 77 | content: "\f021"; } 78 | 79 | .fa.fa-list-alt { 80 | font-family: 'Font Awesome 5 Free'; 81 | font-weight: 400; } 82 | 83 | .fa.fa-dedent:before { 84 | content: "\f03b"; } 85 | 86 | .fa.fa-video-camera:before { 87 | content: "\f03d"; } 88 | 89 | .fa.fa-picture-o { 90 | font-family: 'Font Awesome 5 Free'; 91 | font-weight: 400; } 92 | 93 | .fa.fa-picture-o:before { 94 | content: "\f03e"; } 95 | 96 | .fa.fa-photo { 97 | font-family: 'Font Awesome 5 Free'; 98 | font-weight: 400; } 99 | 100 | .fa.fa-photo:before { 101 | content: "\f03e"; } 102 | 103 | .fa.fa-image { 104 | font-family: 'Font Awesome 5 Free'; 105 | font-weight: 400; } 106 | 107 | .fa.fa-image:before { 108 | content: "\f03e"; } 109 | 110 | .fa.fa-pencil:before { 111 | content: "\f303"; } 112 | 113 | .fa.fa-map-marker:before { 114 | content: "\f3c5"; } 115 | 116 | .fa.fa-pencil-square-o { 117 | font-family: 'Font Awesome 5 Free'; 118 | font-weight: 400; } 119 | 120 | .fa.fa-pencil-square-o:before { 121 | content: "\f044"; } 122 | 123 | .fa.fa-share-square-o { 124 | font-family: 'Font Awesome 5 Free'; 125 | font-weight: 400; } 126 | 127 | .fa.fa-share-square-o:before { 128 | content: "\f14d"; } 129 | 130 | .fa.fa-check-square-o { 131 | font-family: 'Font Awesome 5 Free'; 132 | font-weight: 400; } 133 | 134 | .fa.fa-check-square-o:before { 135 | content: "\f14a"; } 136 | 137 | .fa.fa-arrows:before { 138 | content: "\f0b2"; } 139 | 140 | .fa.fa-times-circle-o { 141 | font-family: 'Font Awesome 5 Free'; 142 | font-weight: 400; } 143 | 144 | .fa.fa-times-circle-o:before { 145 | content: "\f057"; } 146 | 147 | .fa.fa-check-circle-o { 148 | font-family: 'Font Awesome 5 Free'; 149 | font-weight: 400; } 150 | 151 | .fa.fa-check-circle-o:before { 152 | content: "\f058"; } 153 | 154 | .fa.fa-mail-forward:before { 155 | content: "\f064"; } 156 | 157 | .fa.fa-expand:before { 158 | content: "\f424"; } 159 | 160 | .fa.fa-compress:before { 161 | content: "\f422"; } 162 | 163 | .fa.fa-eye { 164 | font-family: 'Font Awesome 5 Free'; 165 | font-weight: 400; } 166 | 167 | .fa.fa-eye-slash { 168 | font-family: 'Font Awesome 5 Free'; 169 | font-weight: 400; } 170 | 171 | .fa.fa-warning:before { 172 | content: "\f071"; } 173 | 174 | .fa.fa-calendar:before { 175 | content: "\f073"; } 176 | 177 | .fa.fa-arrows-v:before { 178 | content: "\f338"; } 179 | 180 | .fa.fa-arrows-h:before { 181 | content: "\f337"; } 182 | 183 | .fa.fa-bar-chart { 184 | font-family: 'Font Awesome 5 Free'; 185 | font-weight: 400; } 186 | 187 | .fa.fa-bar-chart:before { 188 | content: "\f080"; } 189 | 190 | .fa.fa-bar-chart-o { 191 | font-family: 'Font Awesome 5 Free'; 192 | font-weight: 400; } 193 | 194 | .fa.fa-bar-chart-o:before { 195 | content: "\f080"; } 196 | 197 | .fa.fa-twitter-square { 198 | font-family: 'Font Awesome 5 Brands'; 199 | font-weight: 400; } 200 | 201 | .fa.fa-facebook-square { 202 | font-family: 'Font Awesome 5 Brands'; 203 | font-weight: 400; } 204 | 205 | .fa.fa-gears:before { 206 | content: "\f085"; } 207 | 208 | .fa.fa-thumbs-o-up { 209 | font-family: 'Font Awesome 5 Free'; 210 | font-weight: 400; } 211 | 212 | .fa.fa-thumbs-o-up:before { 213 | content: "\f164"; } 214 | 215 | .fa.fa-thumbs-o-down { 216 | font-family: 'Font Awesome 5 Free'; 217 | font-weight: 400; } 218 | 219 | .fa.fa-thumbs-o-down:before { 220 | content: "\f165"; } 221 | 222 | .fa.fa-heart-o { 223 | font-family: 'Font Awesome 5 Free'; 224 | font-weight: 400; } 225 | 226 | .fa.fa-heart-o:before { 227 | content: "\f004"; } 228 | 229 | .fa.fa-sign-out:before { 230 | content: "\f2f5"; } 231 | 232 | .fa.fa-linkedin-square { 233 | font-family: 'Font Awesome 5 Brands'; 234 | font-weight: 400; } 235 | 236 | .fa.fa-linkedin-square:before { 237 | content: "\f08c"; } 238 | 239 | .fa.fa-thumb-tack:before { 240 | content: "\f08d"; } 241 | 242 | .fa.fa-external-link:before { 243 | content: "\f35d"; } 244 | 245 | .fa.fa-sign-in:before { 246 | content: "\f2f6"; } 247 | 248 | .fa.fa-github-square { 249 | font-family: 'Font Awesome 5 Brands'; 250 | font-weight: 400; } 251 | 252 | .fa.fa-lemon-o { 253 | font-family: 'Font Awesome 5 Free'; 254 | font-weight: 400; } 255 | 256 | .fa.fa-lemon-o:before { 257 | content: "\f094"; } 258 | 259 | .fa.fa-square-o { 260 | font-family: 'Font Awesome 5 Free'; 261 | font-weight: 400; } 262 | 263 | .fa.fa-square-o:before { 264 | content: "\f0c8"; } 265 | 266 | .fa.fa-bookmark-o { 267 | font-family: 'Font Awesome 5 Free'; 268 | font-weight: 400; } 269 | 270 | .fa.fa-bookmark-o:before { 271 | content: "\f02e"; } 272 | 273 | .fa.fa-twitter { 274 | font-family: 'Font Awesome 5 Brands'; 275 | font-weight: 400; } 276 | 277 | .fa.fa-facebook { 278 | font-family: 'Font Awesome 5 Brands'; 279 | font-weight: 400; } 280 | 281 | .fa.fa-facebook:before { 282 | content: "\f39e"; } 283 | 284 | .fa.fa-facebook-f { 285 | font-family: 'Font Awesome 5 Brands'; 286 | font-weight: 400; } 287 | 288 | .fa.fa-facebook-f:before { 289 | content: "\f39e"; } 290 | 291 | .fa.fa-github { 292 | font-family: 'Font Awesome 5 Brands'; 293 | font-weight: 400; } 294 | 295 | .fa.fa-credit-card { 296 | font-family: 'Font Awesome 5 Free'; 297 | font-weight: 400; } 298 | 299 | .fa.fa-feed:before { 300 | content: "\f09e"; } 301 | 302 | .fa.fa-hdd-o { 303 | font-family: 'Font Awesome 5 Free'; 304 | font-weight: 400; } 305 | 306 | .fa.fa-hdd-o:before { 307 | content: "\f0a0"; } 308 | 309 | .fa.fa-hand-o-right { 310 | font-family: 'Font Awesome 5 Free'; 311 | font-weight: 400; } 312 | 313 | .fa.fa-hand-o-right:before { 314 | content: "\f0a4"; } 315 | 316 | .fa.fa-hand-o-left { 317 | font-family: 'Font Awesome 5 Free'; 318 | font-weight: 400; } 319 | 320 | .fa.fa-hand-o-left:before { 321 | content: "\f0a5"; } 322 | 323 | .fa.fa-hand-o-up { 324 | font-family: 'Font Awesome 5 Free'; 325 | font-weight: 400; } 326 | 327 | .fa.fa-hand-o-up:before { 328 | content: "\f0a6"; } 329 | 330 | .fa.fa-hand-o-down { 331 | font-family: 'Font Awesome 5 Free'; 332 | font-weight: 400; } 333 | 334 | .fa.fa-hand-o-down:before { 335 | content: "\f0a7"; } 336 | 337 | .fa.fa-arrows-alt:before { 338 | content: "\f31e"; } 339 | 340 | .fa.fa-group:before { 341 | content: "\f0c0"; } 342 | 343 | .fa.fa-chain:before { 344 | content: "\f0c1"; } 345 | 346 | .fa.fa-scissors:before { 347 | content: "\f0c4"; } 348 | 349 | .fa.fa-files-o { 350 | font-family: 'Font Awesome 5 Free'; 351 | font-weight: 400; } 352 | 353 | .fa.fa-files-o:before { 354 | content: "\f0c5"; } 355 | 356 | .fa.fa-floppy-o { 357 | font-family: 'Font Awesome 5 Free'; 358 | font-weight: 400; } 359 | 360 | .fa.fa-floppy-o:before { 361 | content: "\f0c7"; } 362 | 363 | .fa.fa-navicon:before { 364 | content: "\f0c9"; } 365 | 366 | .fa.fa-reorder:before { 367 | content: "\f0c9"; } 368 | 369 | .fa.fa-pinterest { 370 | font-family: 'Font Awesome 5 Brands'; 371 | font-weight: 400; } 372 | 373 | .fa.fa-pinterest-square { 374 | font-family: 'Font Awesome 5 Brands'; 375 | font-weight: 400; } 376 | 377 | .fa.fa-google-plus-square { 378 | font-family: 'Font Awesome 5 Brands'; 379 | font-weight: 400; } 380 | 381 | .fa.fa-google-plus { 382 | font-family: 'Font Awesome 5 Brands'; 383 | font-weight: 400; } 384 | 385 | .fa.fa-google-plus:before { 386 | content: "\f0d5"; } 387 | 388 | .fa.fa-money { 389 | font-family: 'Font Awesome 5 Free'; 390 | font-weight: 400; } 391 | 392 | .fa.fa-money:before { 393 | content: "\f3d1"; } 394 | 395 | .fa.fa-unsorted:before { 396 | content: "\f0dc"; } 397 | 398 | .fa.fa-sort-desc:before { 399 | content: "\f0dd"; } 400 | 401 | .fa.fa-sort-asc:before { 402 | content: "\f0de"; } 403 | 404 | .fa.fa-linkedin { 405 | font-family: 'Font Awesome 5 Brands'; 406 | font-weight: 400; } 407 | 408 | .fa.fa-linkedin:before { 409 | content: "\f0e1"; } 410 | 411 | .fa.fa-rotate-left:before { 412 | content: "\f0e2"; } 413 | 414 | .fa.fa-legal:before { 415 | content: "\f0e3"; } 416 | 417 | .fa.fa-tachometer:before { 418 | content: "\f3fd"; } 419 | 420 | .fa.fa-dashboard:before { 421 | content: "\f3fd"; } 422 | 423 | .fa.fa-comment-o { 424 | font-family: 'Font Awesome 5 Free'; 425 | font-weight: 400; } 426 | 427 | .fa.fa-comment-o:before { 428 | content: "\f075"; } 429 | 430 | .fa.fa-comments-o { 431 | font-family: 'Font Awesome 5 Free'; 432 | font-weight: 400; } 433 | 434 | .fa.fa-comments-o:before { 435 | content: "\f086"; } 436 | 437 | .fa.fa-flash:before { 438 | content: "\f0e7"; } 439 | 440 | .fa.fa-clipboard { 441 | font-family: 'Font Awesome 5 Free'; 442 | font-weight: 400; } 443 | 444 | .fa.fa-paste { 445 | font-family: 'Font Awesome 5 Free'; 446 | font-weight: 400; } 447 | 448 | .fa.fa-paste:before { 449 | content: "\f328"; } 450 | 451 | .fa.fa-lightbulb-o { 452 | font-family: 'Font Awesome 5 Free'; 453 | font-weight: 400; } 454 | 455 | .fa.fa-lightbulb-o:before { 456 | content: "\f0eb"; } 457 | 458 | .fa.fa-exchange:before { 459 | content: "\f362"; } 460 | 461 | .fa.fa-cloud-download:before { 462 | content: "\f381"; } 463 | 464 | .fa.fa-cloud-upload:before { 465 | content: "\f382"; } 466 | 467 | .fa.fa-bell-o { 468 | font-family: 'Font Awesome 5 Free'; 469 | font-weight: 400; } 470 | 471 | .fa.fa-bell-o:before { 472 | content: "\f0f3"; } 473 | 474 | .fa.fa-cutlery:before { 475 | content: "\f2e7"; } 476 | 477 | .fa.fa-file-text-o { 478 | font-family: 'Font Awesome 5 Free'; 479 | font-weight: 400; } 480 | 481 | .fa.fa-file-text-o:before { 482 | content: "\f15c"; } 483 | 484 | .fa.fa-building-o { 485 | font-family: 'Font Awesome 5 Free'; 486 | font-weight: 400; } 487 | 488 | .fa.fa-building-o:before { 489 | content: "\f1ad"; } 490 | 491 | .fa.fa-hospital-o { 492 | font-family: 'Font Awesome 5 Free'; 493 | font-weight: 400; } 494 | 495 | .fa.fa-hospital-o:before { 496 | content: "\f0f8"; } 497 | 498 | .fa.fa-tablet:before { 499 | content: "\f3fa"; } 500 | 501 | .fa.fa-mobile:before { 502 | content: "\f3cd"; } 503 | 504 | .fa.fa-mobile-phone:before { 505 | content: "\f3cd"; } 506 | 507 | .fa.fa-circle-o { 508 | font-family: 'Font Awesome 5 Free'; 509 | font-weight: 400; } 510 | 511 | .fa.fa-circle-o:before { 512 | content: "\f111"; } 513 | 514 | .fa.fa-mail-reply:before { 515 | content: "\f3e5"; } 516 | 517 | .fa.fa-github-alt { 518 | font-family: 'Font Awesome 5 Brands'; 519 | font-weight: 400; } 520 | 521 | .fa.fa-folder-o { 522 | font-family: 'Font Awesome 5 Free'; 523 | font-weight: 400; } 524 | 525 | .fa.fa-folder-o:before { 526 | content: "\f07b"; } 527 | 528 | .fa.fa-folder-open-o { 529 | font-family: 'Font Awesome 5 Free'; 530 | font-weight: 400; } 531 | 532 | .fa.fa-folder-open-o:before { 533 | content: "\f07c"; } 534 | 535 | .fa.fa-smile-o { 536 | font-family: 'Font Awesome 5 Free'; 537 | font-weight: 400; } 538 | 539 | .fa.fa-smile-o:before { 540 | content: "\f118"; } 541 | 542 | .fa.fa-frown-o { 543 | font-family: 'Font Awesome 5 Free'; 544 | font-weight: 400; } 545 | 546 | .fa.fa-frown-o:before { 547 | content: "\f119"; } 548 | 549 | .fa.fa-meh-o { 550 | font-family: 'Font Awesome 5 Free'; 551 | font-weight: 400; } 552 | 553 | .fa.fa-meh-o:before { 554 | content: "\f11a"; } 555 | 556 | .fa.fa-keyboard-o { 557 | font-family: 'Font Awesome 5 Free'; 558 | font-weight: 400; } 559 | 560 | .fa.fa-keyboard-o:before { 561 | content: "\f11c"; } 562 | 563 | .fa.fa-flag-o { 564 | font-family: 'Font Awesome 5 Free'; 565 | font-weight: 400; } 566 | 567 | .fa.fa-flag-o:before { 568 | content: "\f024"; } 569 | 570 | .fa.fa-mail-reply-all:before { 571 | content: "\f122"; } 572 | 573 | .fa.fa-star-half-o { 574 | font-family: 'Font Awesome 5 Free'; 575 | font-weight: 400; } 576 | 577 | .fa.fa-star-half-o:before { 578 | content: "\f089"; } 579 | 580 | .fa.fa-star-half-empty { 581 | font-family: 'Font Awesome 5 Free'; 582 | font-weight: 400; } 583 | 584 | .fa.fa-star-half-empty:before { 585 | content: "\f089"; } 586 | 587 | .fa.fa-star-half-full { 588 | font-family: 'Font Awesome 5 Free'; 589 | font-weight: 400; } 590 | 591 | .fa.fa-star-half-full:before { 592 | content: "\f089"; } 593 | 594 | .fa.fa-code-fork:before { 595 | content: "\f126"; } 596 | 597 | .fa.fa-chain-broken:before { 598 | content: "\f127"; } 599 | 600 | .fa.fa-shield:before { 601 | content: "\f3ed"; } 602 | 603 | .fa.fa-calendar-o { 604 | font-family: 'Font Awesome 5 Free'; 605 | font-weight: 400; } 606 | 607 | .fa.fa-calendar-o:before { 608 | content: "\f133"; } 609 | 610 | .fa.fa-maxcdn { 611 | font-family: 'Font Awesome 5 Brands'; 612 | font-weight: 400; } 613 | 614 | .fa.fa-html5 { 615 | font-family: 'Font Awesome 5 Brands'; 616 | font-weight: 400; } 617 | 618 | .fa.fa-css3 { 619 | font-family: 'Font Awesome 5 Brands'; 620 | font-weight: 400; } 621 | 622 | .fa.fa-ticket:before { 623 | content: "\f3ff"; } 624 | 625 | .fa.fa-minus-square-o { 626 | font-family: 'Font Awesome 5 Free'; 627 | font-weight: 400; } 628 | 629 | .fa.fa-minus-square-o:before { 630 | content: "\f146"; } 631 | 632 | .fa.fa-level-up:before { 633 | content: "\f3bf"; } 634 | 635 | .fa.fa-level-down:before { 636 | content: "\f3be"; } 637 | 638 | .fa.fa-pencil-square:before { 639 | content: "\f14b"; } 640 | 641 | .fa.fa-external-link-square:before { 642 | content: "\f360"; } 643 | 644 | .fa.fa-compass { 645 | font-family: 'Font Awesome 5 Free'; 646 | font-weight: 400; } 647 | 648 | .fa.fa-caret-square-o-down { 649 | font-family: 'Font Awesome 5 Free'; 650 | font-weight: 400; } 651 | 652 | .fa.fa-caret-square-o-down:before { 653 | content: "\f150"; } 654 | 655 | .fa.fa-toggle-down { 656 | font-family: 'Font Awesome 5 Free'; 657 | font-weight: 400; } 658 | 659 | .fa.fa-toggle-down:before { 660 | content: "\f150"; } 661 | 662 | .fa.fa-caret-square-o-up { 663 | font-family: 'Font Awesome 5 Free'; 664 | font-weight: 400; } 665 | 666 | .fa.fa-caret-square-o-up:before { 667 | content: "\f151"; } 668 | 669 | .fa.fa-toggle-up { 670 | font-family: 'Font Awesome 5 Free'; 671 | font-weight: 400; } 672 | 673 | .fa.fa-toggle-up:before { 674 | content: "\f151"; } 675 | 676 | .fa.fa-caret-square-o-right { 677 | font-family: 'Font Awesome 5 Free'; 678 | font-weight: 400; } 679 | 680 | .fa.fa-caret-square-o-right:before { 681 | content: "\f152"; } 682 | 683 | .fa.fa-toggle-right { 684 | font-family: 'Font Awesome 5 Free'; 685 | font-weight: 400; } 686 | 687 | .fa.fa-toggle-right:before { 688 | content: "\f152"; } 689 | 690 | .fa.fa-eur:before { 691 | content: "\f153"; } 692 | 693 | .fa.fa-euro:before { 694 | content: "\f153"; } 695 | 696 | .fa.fa-gbp:before { 697 | content: "\f154"; } 698 | 699 | .fa.fa-usd:before { 700 | content: "\f155"; } 701 | 702 | .fa.fa-dollar:before { 703 | content: "\f155"; } 704 | 705 | .fa.fa-inr:before { 706 | content: "\f156"; } 707 | 708 | .fa.fa-rupee:before { 709 | content: "\f156"; } 710 | 711 | .fa.fa-jpy:before { 712 | content: "\f157"; } 713 | 714 | .fa.fa-cny:before { 715 | content: "\f157"; } 716 | 717 | .fa.fa-rmb:before { 718 | content: "\f157"; } 719 | 720 | .fa.fa-yen:before { 721 | content: "\f157"; } 722 | 723 | .fa.fa-rub:before { 724 | content: "\f158"; } 725 | 726 | .fa.fa-ruble:before { 727 | content: "\f158"; } 728 | 729 | .fa.fa-rouble:before { 730 | content: "\f158"; } 731 | 732 | .fa.fa-krw:before { 733 | content: "\f159"; } 734 | 735 | .fa.fa-won:before { 736 | content: "\f159"; } 737 | 738 | .fa.fa-btc { 739 | font-family: 'Font Awesome 5 Brands'; 740 | font-weight: 400; } 741 | 742 | .fa.fa-bitcoin { 743 | font-family: 'Font Awesome 5 Brands'; 744 | font-weight: 400; } 745 | 746 | .fa.fa-bitcoin:before { 747 | content: "\f15a"; } 748 | 749 | .fa.fa-file-text:before { 750 | content: "\f15c"; } 751 | 752 | .fa.fa-sort-alpha-asc:before { 753 | content: "\f15d"; } 754 | 755 | .fa.fa-sort-alpha-desc:before { 756 | content: "\f881"; } 757 | 758 | .fa.fa-sort-amount-asc:before { 759 | content: "\f160"; } 760 | 761 | .fa.fa-sort-amount-desc:before { 762 | content: "\f884"; } 763 | 764 | .fa.fa-sort-numeric-asc:before { 765 | content: "\f162"; } 766 | 767 | .fa.fa-sort-numeric-desc:before { 768 | content: "\f886"; } 769 | 770 | .fa.fa-youtube-square { 771 | font-family: 'Font Awesome 5 Brands'; 772 | font-weight: 400; } 773 | 774 | .fa.fa-youtube { 775 | font-family: 'Font Awesome 5 Brands'; 776 | font-weight: 400; } 777 | 778 | .fa.fa-xing { 779 | font-family: 'Font Awesome 5 Brands'; 780 | font-weight: 400; } 781 | 782 | .fa.fa-xing-square { 783 | font-family: 'Font Awesome 5 Brands'; 784 | font-weight: 400; } 785 | 786 | .fa.fa-youtube-play { 787 | font-family: 'Font Awesome 5 Brands'; 788 | font-weight: 400; } 789 | 790 | .fa.fa-youtube-play:before { 791 | content: "\f167"; } 792 | 793 | .fa.fa-dropbox { 794 | font-family: 'Font Awesome 5 Brands'; 795 | font-weight: 400; } 796 | 797 | .fa.fa-stack-overflow { 798 | font-family: 'Font Awesome 5 Brands'; 799 | font-weight: 400; } 800 | 801 | .fa.fa-instagram { 802 | font-family: 'Font Awesome 5 Brands'; 803 | font-weight: 400; } 804 | 805 | .fa.fa-flickr { 806 | font-family: 'Font Awesome 5 Brands'; 807 | font-weight: 400; } 808 | 809 | .fa.fa-adn { 810 | font-family: 'Font Awesome 5 Brands'; 811 | font-weight: 400; } 812 | 813 | .fa.fa-bitbucket { 814 | font-family: 'Font Awesome 5 Brands'; 815 | font-weight: 400; } 816 | 817 | .fa.fa-bitbucket-square { 818 | font-family: 'Font Awesome 5 Brands'; 819 | font-weight: 400; } 820 | 821 | .fa.fa-bitbucket-square:before { 822 | content: "\f171"; } 823 | 824 | .fa.fa-tumblr { 825 | font-family: 'Font Awesome 5 Brands'; 826 | font-weight: 400; } 827 | 828 | .fa.fa-tumblr-square { 829 | font-family: 'Font Awesome 5 Brands'; 830 | font-weight: 400; } 831 | 832 | .fa.fa-long-arrow-down:before { 833 | content: "\f309"; } 834 | 835 | .fa.fa-long-arrow-up:before { 836 | content: "\f30c"; } 837 | 838 | .fa.fa-long-arrow-left:before { 839 | content: "\f30a"; } 840 | 841 | .fa.fa-long-arrow-right:before { 842 | content: "\f30b"; } 843 | 844 | .fa.fa-apple { 845 | font-family: 'Font Awesome 5 Brands'; 846 | font-weight: 400; } 847 | 848 | .fa.fa-windows { 849 | font-family: 'Font Awesome 5 Brands'; 850 | font-weight: 400; } 851 | 852 | .fa.fa-android { 853 | font-family: 'Font Awesome 5 Brands'; 854 | font-weight: 400; } 855 | 856 | .fa.fa-linux { 857 | font-family: 'Font Awesome 5 Brands'; 858 | font-weight: 400; } 859 | 860 | .fa.fa-dribbble { 861 | font-family: 'Font Awesome 5 Brands'; 862 | font-weight: 400; } 863 | 864 | .fa.fa-skype { 865 | font-family: 'Font Awesome 5 Brands'; 866 | font-weight: 400; } 867 | 868 | .fa.fa-foursquare { 869 | font-family: 'Font Awesome 5 Brands'; 870 | font-weight: 400; } 871 | 872 | .fa.fa-trello { 873 | font-family: 'Font Awesome 5 Brands'; 874 | font-weight: 400; } 875 | 876 | .fa.fa-gratipay { 877 | font-family: 'Font Awesome 5 Brands'; 878 | font-weight: 400; } 879 | 880 | .fa.fa-gittip { 881 | font-family: 'Font Awesome 5 Brands'; 882 | font-weight: 400; } 883 | 884 | .fa.fa-gittip:before { 885 | content: "\f184"; } 886 | 887 | .fa.fa-sun-o { 888 | font-family: 'Font Awesome 5 Free'; 889 | font-weight: 400; } 890 | 891 | .fa.fa-sun-o:before { 892 | content: "\f185"; } 893 | 894 | .fa.fa-moon-o { 895 | font-family: 'Font Awesome 5 Free'; 896 | font-weight: 400; } 897 | 898 | .fa.fa-moon-o:before { 899 | content: "\f186"; } 900 | 901 | .fa.fa-vk { 902 | font-family: 'Font Awesome 5 Brands'; 903 | font-weight: 400; } 904 | 905 | .fa.fa-weibo { 906 | font-family: 'Font Awesome 5 Brands'; 907 | font-weight: 400; } 908 | 909 | .fa.fa-renren { 910 | font-family: 'Font Awesome 5 Brands'; 911 | font-weight: 400; } 912 | 913 | .fa.fa-pagelines { 914 | font-family: 'Font Awesome 5 Brands'; 915 | font-weight: 400; } 916 | 917 | .fa.fa-stack-exchange { 918 | font-family: 'Font Awesome 5 Brands'; 919 | font-weight: 400; } 920 | 921 | .fa.fa-arrow-circle-o-right { 922 | font-family: 'Font Awesome 5 Free'; 923 | font-weight: 400; } 924 | 925 | .fa.fa-arrow-circle-o-right:before { 926 | content: "\f35a"; } 927 | 928 | .fa.fa-arrow-circle-o-left { 929 | font-family: 'Font Awesome 5 Free'; 930 | font-weight: 400; } 931 | 932 | .fa.fa-arrow-circle-o-left:before { 933 | content: "\f359"; } 934 | 935 | .fa.fa-caret-square-o-left { 936 | font-family: 'Font Awesome 5 Free'; 937 | font-weight: 400; } 938 | 939 | .fa.fa-caret-square-o-left:before { 940 | content: "\f191"; } 941 | 942 | .fa.fa-toggle-left { 943 | font-family: 'Font Awesome 5 Free'; 944 | font-weight: 400; } 945 | 946 | .fa.fa-toggle-left:before { 947 | content: "\f191"; } 948 | 949 | .fa.fa-dot-circle-o { 950 | font-family: 'Font Awesome 5 Free'; 951 | font-weight: 400; } 952 | 953 | .fa.fa-dot-circle-o:before { 954 | content: "\f192"; } 955 | 956 | .fa.fa-vimeo-square { 957 | font-family: 'Font Awesome 5 Brands'; 958 | font-weight: 400; } 959 | 960 | .fa.fa-try:before { 961 | content: "\f195"; } 962 | 963 | .fa.fa-turkish-lira:before { 964 | content: "\f195"; } 965 | 966 | .fa.fa-plus-square-o { 967 | font-family: 'Font Awesome 5 Free'; 968 | font-weight: 400; } 969 | 970 | .fa.fa-plus-square-o:before { 971 | content: "\f0fe"; } 972 | 973 | .fa.fa-slack { 974 | font-family: 'Font Awesome 5 Brands'; 975 | font-weight: 400; } 976 | 977 | .fa.fa-wordpress { 978 | font-family: 'Font Awesome 5 Brands'; 979 | font-weight: 400; } 980 | 981 | .fa.fa-openid { 982 | font-family: 'Font Awesome 5 Brands'; 983 | font-weight: 400; } 984 | 985 | .fa.fa-institution:before { 986 | content: "\f19c"; } 987 | 988 | .fa.fa-bank:before { 989 | content: "\f19c"; } 990 | 991 | .fa.fa-mortar-board:before { 992 | content: "\f19d"; } 993 | 994 | .fa.fa-yahoo { 995 | font-family: 'Font Awesome 5 Brands'; 996 | font-weight: 400; } 997 | 998 | .fa.fa-google { 999 | font-family: 'Font Awesome 5 Brands'; 1000 | font-weight: 400; } 1001 | 1002 | .fa.fa-reddit { 1003 | font-family: 'Font Awesome 5 Brands'; 1004 | font-weight: 400; } 1005 | 1006 | .fa.fa-reddit-square { 1007 | font-family: 'Font Awesome 5 Brands'; 1008 | font-weight: 400; } 1009 | 1010 | .fa.fa-stumbleupon-circle { 1011 | font-family: 'Font Awesome 5 Brands'; 1012 | font-weight: 400; } 1013 | 1014 | .fa.fa-stumbleupon { 1015 | font-family: 'Font Awesome 5 Brands'; 1016 | font-weight: 400; } 1017 | 1018 | .fa.fa-delicious { 1019 | font-family: 'Font Awesome 5 Brands'; 1020 | font-weight: 400; } 1021 | 1022 | .fa.fa-digg { 1023 | font-family: 'Font Awesome 5 Brands'; 1024 | font-weight: 400; } 1025 | 1026 | .fa.fa-pied-piper-pp { 1027 | font-family: 'Font Awesome 5 Brands'; 1028 | font-weight: 400; } 1029 | 1030 | .fa.fa-pied-piper-alt { 1031 | font-family: 'Font Awesome 5 Brands'; 1032 | font-weight: 400; } 1033 | 1034 | .fa.fa-drupal { 1035 | font-family: 'Font Awesome 5 Brands'; 1036 | font-weight: 400; } 1037 | 1038 | .fa.fa-joomla { 1039 | font-family: 'Font Awesome 5 Brands'; 1040 | font-weight: 400; } 1041 | 1042 | .fa.fa-spoon:before { 1043 | content: "\f2e5"; } 1044 | 1045 | .fa.fa-behance { 1046 | font-family: 'Font Awesome 5 Brands'; 1047 | font-weight: 400; } 1048 | 1049 | .fa.fa-behance-square { 1050 | font-family: 'Font Awesome 5 Brands'; 1051 | font-weight: 400; } 1052 | 1053 | .fa.fa-steam { 1054 | font-family: 'Font Awesome 5 Brands'; 1055 | font-weight: 400; } 1056 | 1057 | .fa.fa-steam-square { 1058 | font-family: 'Font Awesome 5 Brands'; 1059 | font-weight: 400; } 1060 | 1061 | .fa.fa-automobile:before { 1062 | content: "\f1b9"; } 1063 | 1064 | .fa.fa-envelope-o { 1065 | font-family: 'Font Awesome 5 Free'; 1066 | font-weight: 400; } 1067 | 1068 | .fa.fa-envelope-o:before { 1069 | content: "\f0e0"; } 1070 | 1071 | .fa.fa-spotify { 1072 | font-family: 'Font Awesome 5 Brands'; 1073 | font-weight: 400; } 1074 | 1075 | .fa.fa-deviantart { 1076 | font-family: 'Font Awesome 5 Brands'; 1077 | font-weight: 400; } 1078 | 1079 | .fa.fa-soundcloud { 1080 | font-family: 'Font Awesome 5 Brands'; 1081 | font-weight: 400; } 1082 | 1083 | .fa.fa-file-pdf-o { 1084 | font-family: 'Font Awesome 5 Free'; 1085 | font-weight: 400; } 1086 | 1087 | .fa.fa-file-pdf-o:before { 1088 | content: "\f1c1"; } 1089 | 1090 | .fa.fa-file-word-o { 1091 | font-family: 'Font Awesome 5 Free'; 1092 | font-weight: 400; } 1093 | 1094 | .fa.fa-file-word-o:before { 1095 | content: "\f1c2"; } 1096 | 1097 | .fa.fa-file-excel-o { 1098 | font-family: 'Font Awesome 5 Free'; 1099 | font-weight: 400; } 1100 | 1101 | .fa.fa-file-excel-o:before { 1102 | content: "\f1c3"; } 1103 | 1104 | .fa.fa-file-powerpoint-o { 1105 | font-family: 'Font Awesome 5 Free'; 1106 | font-weight: 400; } 1107 | 1108 | .fa.fa-file-powerpoint-o:before { 1109 | content: "\f1c4"; } 1110 | 1111 | .fa.fa-file-image-o { 1112 | font-family: 'Font Awesome 5 Free'; 1113 | font-weight: 400; } 1114 | 1115 | .fa.fa-file-image-o:before { 1116 | content: "\f1c5"; } 1117 | 1118 | .fa.fa-file-photo-o { 1119 | font-family: 'Font Awesome 5 Free'; 1120 | font-weight: 400; } 1121 | 1122 | .fa.fa-file-photo-o:before { 1123 | content: "\f1c5"; } 1124 | 1125 | .fa.fa-file-picture-o { 1126 | font-family: 'Font Awesome 5 Free'; 1127 | font-weight: 400; } 1128 | 1129 | .fa.fa-file-picture-o:before { 1130 | content: "\f1c5"; } 1131 | 1132 | .fa.fa-file-archive-o { 1133 | font-family: 'Font Awesome 5 Free'; 1134 | font-weight: 400; } 1135 | 1136 | .fa.fa-file-archive-o:before { 1137 | content: "\f1c6"; } 1138 | 1139 | .fa.fa-file-zip-o { 1140 | font-family: 'Font Awesome 5 Free'; 1141 | font-weight: 400; } 1142 | 1143 | .fa.fa-file-zip-o:before { 1144 | content: "\f1c6"; } 1145 | 1146 | .fa.fa-file-audio-o { 1147 | font-family: 'Font Awesome 5 Free'; 1148 | font-weight: 400; } 1149 | 1150 | .fa.fa-file-audio-o:before { 1151 | content: "\f1c7"; } 1152 | 1153 | .fa.fa-file-sound-o { 1154 | font-family: 'Font Awesome 5 Free'; 1155 | font-weight: 400; } 1156 | 1157 | .fa.fa-file-sound-o:before { 1158 | content: "\f1c7"; } 1159 | 1160 | .fa.fa-file-video-o { 1161 | font-family: 'Font Awesome 5 Free'; 1162 | font-weight: 400; } 1163 | 1164 | .fa.fa-file-video-o:before { 1165 | content: "\f1c8"; } 1166 | 1167 | .fa.fa-file-movie-o { 1168 | font-family: 'Font Awesome 5 Free'; 1169 | font-weight: 400; } 1170 | 1171 | .fa.fa-file-movie-o:before { 1172 | content: "\f1c8"; } 1173 | 1174 | .fa.fa-file-code-o { 1175 | font-family: 'Font Awesome 5 Free'; 1176 | font-weight: 400; } 1177 | 1178 | .fa.fa-file-code-o:before { 1179 | content: "\f1c9"; } 1180 | 1181 | .fa.fa-vine { 1182 | font-family: 'Font Awesome 5 Brands'; 1183 | font-weight: 400; } 1184 | 1185 | .fa.fa-codepen { 1186 | font-family: 'Font Awesome 5 Brands'; 1187 | font-weight: 400; } 1188 | 1189 | .fa.fa-jsfiddle { 1190 | font-family: 'Font Awesome 5 Brands'; 1191 | font-weight: 400; } 1192 | 1193 | .fa.fa-life-ring { 1194 | font-family: 'Font Awesome 5 Free'; 1195 | font-weight: 400; } 1196 | 1197 | .fa.fa-life-bouy { 1198 | font-family: 'Font Awesome 5 Free'; 1199 | font-weight: 400; } 1200 | 1201 | .fa.fa-life-bouy:before { 1202 | content: "\f1cd"; } 1203 | 1204 | .fa.fa-life-buoy { 1205 | font-family: 'Font Awesome 5 Free'; 1206 | font-weight: 400; } 1207 | 1208 | .fa.fa-life-buoy:before { 1209 | content: "\f1cd"; } 1210 | 1211 | .fa.fa-life-saver { 1212 | font-family: 'Font Awesome 5 Free'; 1213 | font-weight: 400; } 1214 | 1215 | .fa.fa-life-saver:before { 1216 | content: "\f1cd"; } 1217 | 1218 | .fa.fa-support { 1219 | font-family: 'Font Awesome 5 Free'; 1220 | font-weight: 400; } 1221 | 1222 | .fa.fa-support:before { 1223 | content: "\f1cd"; } 1224 | 1225 | .fa.fa-circle-o-notch:before { 1226 | content: "\f1ce"; } 1227 | 1228 | .fa.fa-rebel { 1229 | font-family: 'Font Awesome 5 Brands'; 1230 | font-weight: 400; } 1231 | 1232 | .fa.fa-ra { 1233 | font-family: 'Font Awesome 5 Brands'; 1234 | font-weight: 400; } 1235 | 1236 | .fa.fa-ra:before { 1237 | content: "\f1d0"; } 1238 | 1239 | .fa.fa-resistance { 1240 | font-family: 'Font Awesome 5 Brands'; 1241 | font-weight: 400; } 1242 | 1243 | .fa.fa-resistance:before { 1244 | content: "\f1d0"; } 1245 | 1246 | .fa.fa-empire { 1247 | font-family: 'Font Awesome 5 Brands'; 1248 | font-weight: 400; } 1249 | 1250 | .fa.fa-ge { 1251 | font-family: 'Font Awesome 5 Brands'; 1252 | font-weight: 400; } 1253 | 1254 | .fa.fa-ge:before { 1255 | content: "\f1d1"; } 1256 | 1257 | .fa.fa-git-square { 1258 | font-family: 'Font Awesome 5 Brands'; 1259 | font-weight: 400; } 1260 | 1261 | .fa.fa-git { 1262 | font-family: 'Font Awesome 5 Brands'; 1263 | font-weight: 400; } 1264 | 1265 | .fa.fa-hacker-news { 1266 | font-family: 'Font Awesome 5 Brands'; 1267 | font-weight: 400; } 1268 | 1269 | .fa.fa-y-combinator-square { 1270 | font-family: 'Font Awesome 5 Brands'; 1271 | font-weight: 400; } 1272 | 1273 | .fa.fa-y-combinator-square:before { 1274 | content: "\f1d4"; } 1275 | 1276 | .fa.fa-yc-square { 1277 | font-family: 'Font Awesome 5 Brands'; 1278 | font-weight: 400; } 1279 | 1280 | .fa.fa-yc-square:before { 1281 | content: "\f1d4"; } 1282 | 1283 | .fa.fa-tencent-weibo { 1284 | font-family: 'Font Awesome 5 Brands'; 1285 | font-weight: 400; } 1286 | 1287 | .fa.fa-qq { 1288 | font-family: 'Font Awesome 5 Brands'; 1289 | font-weight: 400; } 1290 | 1291 | .fa.fa-weixin { 1292 | font-family: 'Font Awesome 5 Brands'; 1293 | font-weight: 400; } 1294 | 1295 | .fa.fa-wechat { 1296 | font-family: 'Font Awesome 5 Brands'; 1297 | font-weight: 400; } 1298 | 1299 | .fa.fa-wechat:before { 1300 | content: "\f1d7"; } 1301 | 1302 | .fa.fa-send:before { 1303 | content: "\f1d8"; } 1304 | 1305 | .fa.fa-paper-plane-o { 1306 | font-family: 'Font Awesome 5 Free'; 1307 | font-weight: 400; } 1308 | 1309 | .fa.fa-paper-plane-o:before { 1310 | content: "\f1d8"; } 1311 | 1312 | .fa.fa-send-o { 1313 | font-family: 'Font Awesome 5 Free'; 1314 | font-weight: 400; } 1315 | 1316 | .fa.fa-send-o:before { 1317 | content: "\f1d8"; } 1318 | 1319 | .fa.fa-circle-thin { 1320 | font-family: 'Font Awesome 5 Free'; 1321 | font-weight: 400; } 1322 | 1323 | .fa.fa-circle-thin:before { 1324 | content: "\f111"; } 1325 | 1326 | .fa.fa-header:before { 1327 | content: "\f1dc"; } 1328 | 1329 | .fa.fa-sliders:before { 1330 | content: "\f1de"; } 1331 | 1332 | .fa.fa-futbol-o { 1333 | font-family: 'Font Awesome 5 Free'; 1334 | font-weight: 400; } 1335 | 1336 | .fa.fa-futbol-o:before { 1337 | content: "\f1e3"; } 1338 | 1339 | .fa.fa-soccer-ball-o { 1340 | font-family: 'Font Awesome 5 Free'; 1341 | font-weight: 400; } 1342 | 1343 | .fa.fa-soccer-ball-o:before { 1344 | content: "\f1e3"; } 1345 | 1346 | .fa.fa-slideshare { 1347 | font-family: 'Font Awesome 5 Brands'; 1348 | font-weight: 400; } 1349 | 1350 | .fa.fa-twitch { 1351 | font-family: 'Font Awesome 5 Brands'; 1352 | font-weight: 400; } 1353 | 1354 | .fa.fa-yelp { 1355 | font-family: 'Font Awesome 5 Brands'; 1356 | font-weight: 400; } 1357 | 1358 | .fa.fa-newspaper-o { 1359 | font-family: 'Font Awesome 5 Free'; 1360 | font-weight: 400; } 1361 | 1362 | .fa.fa-newspaper-o:before { 1363 | content: "\f1ea"; } 1364 | 1365 | .fa.fa-paypal { 1366 | font-family: 'Font Awesome 5 Brands'; 1367 | font-weight: 400; } 1368 | 1369 | .fa.fa-google-wallet { 1370 | font-family: 'Font Awesome 5 Brands'; 1371 | font-weight: 400; } 1372 | 1373 | .fa.fa-cc-visa { 1374 | font-family: 'Font Awesome 5 Brands'; 1375 | font-weight: 400; } 1376 | 1377 | .fa.fa-cc-mastercard { 1378 | font-family: 'Font Awesome 5 Brands'; 1379 | font-weight: 400; } 1380 | 1381 | .fa.fa-cc-discover { 1382 | font-family: 'Font Awesome 5 Brands'; 1383 | font-weight: 400; } 1384 | 1385 | .fa.fa-cc-amex { 1386 | font-family: 'Font Awesome 5 Brands'; 1387 | font-weight: 400; } 1388 | 1389 | .fa.fa-cc-paypal { 1390 | font-family: 'Font Awesome 5 Brands'; 1391 | font-weight: 400; } 1392 | 1393 | .fa.fa-cc-stripe { 1394 | font-family: 'Font Awesome 5 Brands'; 1395 | font-weight: 400; } 1396 | 1397 | .fa.fa-bell-slash-o { 1398 | font-family: 'Font Awesome 5 Free'; 1399 | font-weight: 400; } 1400 | 1401 | .fa.fa-bell-slash-o:before { 1402 | content: "\f1f6"; } 1403 | 1404 | .fa.fa-trash:before { 1405 | content: "\f2ed"; } 1406 | 1407 | .fa.fa-copyright { 1408 | font-family: 'Font Awesome 5 Free'; 1409 | font-weight: 400; } 1410 | 1411 | .fa.fa-eyedropper:before { 1412 | content: "\f1fb"; } 1413 | 1414 | .fa.fa-area-chart:before { 1415 | content: "\f1fe"; } 1416 | 1417 | .fa.fa-pie-chart:before { 1418 | content: "\f200"; } 1419 | 1420 | .fa.fa-line-chart:before { 1421 | content: "\f201"; } 1422 | 1423 | .fa.fa-lastfm { 1424 | font-family: 'Font Awesome 5 Brands'; 1425 | font-weight: 400; } 1426 | 1427 | .fa.fa-lastfm-square { 1428 | font-family: 'Font Awesome 5 Brands'; 1429 | font-weight: 400; } 1430 | 1431 | .fa.fa-ioxhost { 1432 | font-family: 'Font Awesome 5 Brands'; 1433 | font-weight: 400; } 1434 | 1435 | .fa.fa-angellist { 1436 | font-family: 'Font Awesome 5 Brands'; 1437 | font-weight: 400; } 1438 | 1439 | .fa.fa-cc { 1440 | font-family: 'Font Awesome 5 Free'; 1441 | font-weight: 400; } 1442 | 1443 | .fa.fa-cc:before { 1444 | content: "\f20a"; } 1445 | 1446 | .fa.fa-ils:before { 1447 | content: "\f20b"; } 1448 | 1449 | .fa.fa-shekel:before { 1450 | content: "\f20b"; } 1451 | 1452 | .fa.fa-sheqel:before { 1453 | content: "\f20b"; } 1454 | 1455 | .fa.fa-meanpath { 1456 | font-family: 'Font Awesome 5 Brands'; 1457 | font-weight: 400; } 1458 | 1459 | .fa.fa-meanpath:before { 1460 | content: "\f2b4"; } 1461 | 1462 | .fa.fa-buysellads { 1463 | font-family: 'Font Awesome 5 Brands'; 1464 | font-weight: 400; } 1465 | 1466 | .fa.fa-connectdevelop { 1467 | font-family: 'Font Awesome 5 Brands'; 1468 | font-weight: 400; } 1469 | 1470 | .fa.fa-dashcube { 1471 | font-family: 'Font Awesome 5 Brands'; 1472 | font-weight: 400; } 1473 | 1474 | .fa.fa-forumbee { 1475 | font-family: 'Font Awesome 5 Brands'; 1476 | font-weight: 400; } 1477 | 1478 | .fa.fa-leanpub { 1479 | font-family: 'Font Awesome 5 Brands'; 1480 | font-weight: 400; } 1481 | 1482 | .fa.fa-sellsy { 1483 | font-family: 'Font Awesome 5 Brands'; 1484 | font-weight: 400; } 1485 | 1486 | .fa.fa-shirtsinbulk { 1487 | font-family: 'Font Awesome 5 Brands'; 1488 | font-weight: 400; } 1489 | 1490 | .fa.fa-simplybuilt { 1491 | font-family: 'Font Awesome 5 Brands'; 1492 | font-weight: 400; } 1493 | 1494 | .fa.fa-skyatlas { 1495 | font-family: 'Font Awesome 5 Brands'; 1496 | font-weight: 400; } 1497 | 1498 | .fa.fa-diamond { 1499 | font-family: 'Font Awesome 5 Free'; 1500 | font-weight: 400; } 1501 | 1502 | .fa.fa-diamond:before { 1503 | content: "\f3a5"; } 1504 | 1505 | .fa.fa-intersex:before { 1506 | content: "\f224"; } 1507 | 1508 | .fa.fa-facebook-official { 1509 | font-family: 'Font Awesome 5 Brands'; 1510 | font-weight: 400; } 1511 | 1512 | .fa.fa-facebook-official:before { 1513 | content: "\f09a"; } 1514 | 1515 | .fa.fa-pinterest-p { 1516 | font-family: 'Font Awesome 5 Brands'; 1517 | font-weight: 400; } 1518 | 1519 | .fa.fa-whatsapp { 1520 | font-family: 'Font Awesome 5 Brands'; 1521 | font-weight: 400; } 1522 | 1523 | .fa.fa-hotel:before { 1524 | content: "\f236"; } 1525 | 1526 | .fa.fa-viacoin { 1527 | font-family: 'Font Awesome 5 Brands'; 1528 | font-weight: 400; } 1529 | 1530 | .fa.fa-medium { 1531 | font-family: 'Font Awesome 5 Brands'; 1532 | font-weight: 400; } 1533 | 1534 | .fa.fa-y-combinator { 1535 | font-family: 'Font Awesome 5 Brands'; 1536 | font-weight: 400; } 1537 | 1538 | .fa.fa-yc { 1539 | font-family: 'Font Awesome 5 Brands'; 1540 | font-weight: 400; } 1541 | 1542 | .fa.fa-yc:before { 1543 | content: "\f23b"; } 1544 | 1545 | .fa.fa-optin-monster { 1546 | font-family: 'Font Awesome 5 Brands'; 1547 | font-weight: 400; } 1548 | 1549 | .fa.fa-opencart { 1550 | font-family: 'Font Awesome 5 Brands'; 1551 | font-weight: 400; } 1552 | 1553 | .fa.fa-expeditedssl { 1554 | font-family: 'Font Awesome 5 Brands'; 1555 | font-weight: 400; } 1556 | 1557 | .fa.fa-battery-4:before { 1558 | content: "\f240"; } 1559 | 1560 | .fa.fa-battery:before { 1561 | content: "\f240"; } 1562 | 1563 | .fa.fa-battery-3:before { 1564 | content: "\f241"; } 1565 | 1566 | .fa.fa-battery-2:before { 1567 | content: "\f242"; } 1568 | 1569 | .fa.fa-battery-1:before { 1570 | content: "\f243"; } 1571 | 1572 | .fa.fa-battery-0:before { 1573 | content: "\f244"; } 1574 | 1575 | .fa.fa-object-group { 1576 | font-family: 'Font Awesome 5 Free'; 1577 | font-weight: 400; } 1578 | 1579 | .fa.fa-object-ungroup { 1580 | font-family: 'Font Awesome 5 Free'; 1581 | font-weight: 400; } 1582 | 1583 | .fa.fa-sticky-note-o { 1584 | font-family: 'Font Awesome 5 Free'; 1585 | font-weight: 400; } 1586 | 1587 | .fa.fa-sticky-note-o:before { 1588 | content: "\f249"; } 1589 | 1590 | .fa.fa-cc-jcb { 1591 | font-family: 'Font Awesome 5 Brands'; 1592 | font-weight: 400; } 1593 | 1594 | .fa.fa-cc-diners-club { 1595 | font-family: 'Font Awesome 5 Brands'; 1596 | font-weight: 400; } 1597 | 1598 | .fa.fa-clone { 1599 | font-family: 'Font Awesome 5 Free'; 1600 | font-weight: 400; } 1601 | 1602 | .fa.fa-hourglass-o { 1603 | font-family: 'Font Awesome 5 Free'; 1604 | font-weight: 400; } 1605 | 1606 | .fa.fa-hourglass-o:before { 1607 | content: "\f254"; } 1608 | 1609 | .fa.fa-hourglass-1:before { 1610 | content: "\f251"; } 1611 | 1612 | .fa.fa-hourglass-2:before { 1613 | content: "\f252"; } 1614 | 1615 | .fa.fa-hourglass-3:before { 1616 | content: "\f253"; } 1617 | 1618 | .fa.fa-hand-rock-o { 1619 | font-family: 'Font Awesome 5 Free'; 1620 | font-weight: 400; } 1621 | 1622 | .fa.fa-hand-rock-o:before { 1623 | content: "\f255"; } 1624 | 1625 | .fa.fa-hand-grab-o { 1626 | font-family: 'Font Awesome 5 Free'; 1627 | font-weight: 400; } 1628 | 1629 | .fa.fa-hand-grab-o:before { 1630 | content: "\f255"; } 1631 | 1632 | .fa.fa-hand-paper-o { 1633 | font-family: 'Font Awesome 5 Free'; 1634 | font-weight: 400; } 1635 | 1636 | .fa.fa-hand-paper-o:before { 1637 | content: "\f256"; } 1638 | 1639 | .fa.fa-hand-stop-o { 1640 | font-family: 'Font Awesome 5 Free'; 1641 | font-weight: 400; } 1642 | 1643 | .fa.fa-hand-stop-o:before { 1644 | content: "\f256"; } 1645 | 1646 | .fa.fa-hand-scissors-o { 1647 | font-family: 'Font Awesome 5 Free'; 1648 | font-weight: 400; } 1649 | 1650 | .fa.fa-hand-scissors-o:before { 1651 | content: "\f257"; } 1652 | 1653 | .fa.fa-hand-lizard-o { 1654 | font-family: 'Font Awesome 5 Free'; 1655 | font-weight: 400; } 1656 | 1657 | .fa.fa-hand-lizard-o:before { 1658 | content: "\f258"; } 1659 | 1660 | .fa.fa-hand-spock-o { 1661 | font-family: 'Font Awesome 5 Free'; 1662 | font-weight: 400; } 1663 | 1664 | .fa.fa-hand-spock-o:before { 1665 | content: "\f259"; } 1666 | 1667 | .fa.fa-hand-pointer-o { 1668 | font-family: 'Font Awesome 5 Free'; 1669 | font-weight: 400; } 1670 | 1671 | .fa.fa-hand-pointer-o:before { 1672 | content: "\f25a"; } 1673 | 1674 | .fa.fa-hand-peace-o { 1675 | font-family: 'Font Awesome 5 Free'; 1676 | font-weight: 400; } 1677 | 1678 | .fa.fa-hand-peace-o:before { 1679 | content: "\f25b"; } 1680 | 1681 | .fa.fa-registered { 1682 | font-family: 'Font Awesome 5 Free'; 1683 | font-weight: 400; } 1684 | 1685 | .fa.fa-creative-commons { 1686 | font-family: 'Font Awesome 5 Brands'; 1687 | font-weight: 400; } 1688 | 1689 | .fa.fa-gg { 1690 | font-family: 'Font Awesome 5 Brands'; 1691 | font-weight: 400; } 1692 | 1693 | .fa.fa-gg-circle { 1694 | font-family: 'Font Awesome 5 Brands'; 1695 | font-weight: 400; } 1696 | 1697 | .fa.fa-tripadvisor { 1698 | font-family: 'Font Awesome 5 Brands'; 1699 | font-weight: 400; } 1700 | 1701 | .fa.fa-odnoklassniki { 1702 | font-family: 'Font Awesome 5 Brands'; 1703 | font-weight: 400; } 1704 | 1705 | .fa.fa-odnoklassniki-square { 1706 | font-family: 'Font Awesome 5 Brands'; 1707 | font-weight: 400; } 1708 | 1709 | .fa.fa-get-pocket { 1710 | font-family: 'Font Awesome 5 Brands'; 1711 | font-weight: 400; } 1712 | 1713 | .fa.fa-wikipedia-w { 1714 | font-family: 'Font Awesome 5 Brands'; 1715 | font-weight: 400; } 1716 | 1717 | .fa.fa-safari { 1718 | font-family: 'Font Awesome 5 Brands'; 1719 | font-weight: 400; } 1720 | 1721 | .fa.fa-chrome { 1722 | font-family: 'Font Awesome 5 Brands'; 1723 | font-weight: 400; } 1724 | 1725 | .fa.fa-firefox { 1726 | font-family: 'Font Awesome 5 Brands'; 1727 | font-weight: 400; } 1728 | 1729 | .fa.fa-opera { 1730 | font-family: 'Font Awesome 5 Brands'; 1731 | font-weight: 400; } 1732 | 1733 | .fa.fa-internet-explorer { 1734 | font-family: 'Font Awesome 5 Brands'; 1735 | font-weight: 400; } 1736 | 1737 | .fa.fa-television:before { 1738 | content: "\f26c"; } 1739 | 1740 | .fa.fa-contao { 1741 | font-family: 'Font Awesome 5 Brands'; 1742 | font-weight: 400; } 1743 | 1744 | .fa.fa-500px { 1745 | font-family: 'Font Awesome 5 Brands'; 1746 | font-weight: 400; } 1747 | 1748 | .fa.fa-amazon { 1749 | font-family: 'Font Awesome 5 Brands'; 1750 | font-weight: 400; } 1751 | 1752 | .fa.fa-calendar-plus-o { 1753 | font-family: 'Font Awesome 5 Free'; 1754 | font-weight: 400; } 1755 | 1756 | .fa.fa-calendar-plus-o:before { 1757 | content: "\f271"; } 1758 | 1759 | .fa.fa-calendar-minus-o { 1760 | font-family: 'Font Awesome 5 Free'; 1761 | font-weight: 400; } 1762 | 1763 | .fa.fa-calendar-minus-o:before { 1764 | content: "\f272"; } 1765 | 1766 | .fa.fa-calendar-times-o { 1767 | font-family: 'Font Awesome 5 Free'; 1768 | font-weight: 400; } 1769 | 1770 | .fa.fa-calendar-times-o:before { 1771 | content: "\f273"; } 1772 | 1773 | .fa.fa-calendar-check-o { 1774 | font-family: 'Font Awesome 5 Free'; 1775 | font-weight: 400; } 1776 | 1777 | .fa.fa-calendar-check-o:before { 1778 | content: "\f274"; } 1779 | 1780 | .fa.fa-map-o { 1781 | font-family: 'Font Awesome 5 Free'; 1782 | font-weight: 400; } 1783 | 1784 | .fa.fa-map-o:before { 1785 | content: "\f279"; } 1786 | 1787 | .fa.fa-commenting:before { 1788 | content: "\f4ad"; } 1789 | 1790 | .fa.fa-commenting-o { 1791 | font-family: 'Font Awesome 5 Free'; 1792 | font-weight: 400; } 1793 | 1794 | .fa.fa-commenting-o:before { 1795 | content: "\f4ad"; } 1796 | 1797 | .fa.fa-houzz { 1798 | font-family: 'Font Awesome 5 Brands'; 1799 | font-weight: 400; } 1800 | 1801 | .fa.fa-vimeo { 1802 | font-family: 'Font Awesome 5 Brands'; 1803 | font-weight: 400; } 1804 | 1805 | .fa.fa-vimeo:before { 1806 | content: "\f27d"; } 1807 | 1808 | .fa.fa-black-tie { 1809 | font-family: 'Font Awesome 5 Brands'; 1810 | font-weight: 400; } 1811 | 1812 | .fa.fa-fonticons { 1813 | font-family: 'Font Awesome 5 Brands'; 1814 | font-weight: 400; } 1815 | 1816 | .fa.fa-reddit-alien { 1817 | font-family: 'Font Awesome 5 Brands'; 1818 | font-weight: 400; } 1819 | 1820 | .fa.fa-edge { 1821 | font-family: 'Font Awesome 5 Brands'; 1822 | font-weight: 400; } 1823 | 1824 | .fa.fa-credit-card-alt:before { 1825 | content: "\f09d"; } 1826 | 1827 | .fa.fa-codiepie { 1828 | font-family: 'Font Awesome 5 Brands'; 1829 | font-weight: 400; } 1830 | 1831 | .fa.fa-modx { 1832 | font-family: 'Font Awesome 5 Brands'; 1833 | font-weight: 400; } 1834 | 1835 | .fa.fa-fort-awesome { 1836 | font-family: 'Font Awesome 5 Brands'; 1837 | font-weight: 400; } 1838 | 1839 | .fa.fa-usb { 1840 | font-family: 'Font Awesome 5 Brands'; 1841 | font-weight: 400; } 1842 | 1843 | .fa.fa-product-hunt { 1844 | font-family: 'Font Awesome 5 Brands'; 1845 | font-weight: 400; } 1846 | 1847 | .fa.fa-mixcloud { 1848 | font-family: 'Font Awesome 5 Brands'; 1849 | font-weight: 400; } 1850 | 1851 | .fa.fa-scribd { 1852 | font-family: 'Font Awesome 5 Brands'; 1853 | font-weight: 400; } 1854 | 1855 | .fa.fa-pause-circle-o { 1856 | font-family: 'Font Awesome 5 Free'; 1857 | font-weight: 400; } 1858 | 1859 | .fa.fa-pause-circle-o:before { 1860 | content: "\f28b"; } 1861 | 1862 | .fa.fa-stop-circle-o { 1863 | font-family: 'Font Awesome 5 Free'; 1864 | font-weight: 400; } 1865 | 1866 | .fa.fa-stop-circle-o:before { 1867 | content: "\f28d"; } 1868 | 1869 | .fa.fa-bluetooth { 1870 | font-family: 'Font Awesome 5 Brands'; 1871 | font-weight: 400; } 1872 | 1873 | .fa.fa-bluetooth-b { 1874 | font-family: 'Font Awesome 5 Brands'; 1875 | font-weight: 400; } 1876 | 1877 | .fa.fa-gitlab { 1878 | font-family: 'Font Awesome 5 Brands'; 1879 | font-weight: 400; } 1880 | 1881 | .fa.fa-wpbeginner { 1882 | font-family: 'Font Awesome 5 Brands'; 1883 | font-weight: 400; } 1884 | 1885 | .fa.fa-wpforms { 1886 | font-family: 'Font Awesome 5 Brands'; 1887 | font-weight: 400; } 1888 | 1889 | .fa.fa-envira { 1890 | font-family: 'Font Awesome 5 Brands'; 1891 | font-weight: 400; } 1892 | 1893 | .fa.fa-wheelchair-alt { 1894 | font-family: 'Font Awesome 5 Brands'; 1895 | font-weight: 400; } 1896 | 1897 | .fa.fa-wheelchair-alt:before { 1898 | content: "\f368"; } 1899 | 1900 | .fa.fa-question-circle-o { 1901 | font-family: 'Font Awesome 5 Free'; 1902 | font-weight: 400; } 1903 | 1904 | .fa.fa-question-circle-o:before { 1905 | content: "\f059"; } 1906 | 1907 | .fa.fa-volume-control-phone:before { 1908 | content: "\f2a0"; } 1909 | 1910 | .fa.fa-asl-interpreting:before { 1911 | content: "\f2a3"; } 1912 | 1913 | .fa.fa-deafness:before { 1914 | content: "\f2a4"; } 1915 | 1916 | .fa.fa-hard-of-hearing:before { 1917 | content: "\f2a4"; } 1918 | 1919 | .fa.fa-glide { 1920 | font-family: 'Font Awesome 5 Brands'; 1921 | font-weight: 400; } 1922 | 1923 | .fa.fa-glide-g { 1924 | font-family: 'Font Awesome 5 Brands'; 1925 | font-weight: 400; } 1926 | 1927 | .fa.fa-signing:before { 1928 | content: "\f2a7"; } 1929 | 1930 | .fa.fa-viadeo { 1931 | font-family: 'Font Awesome 5 Brands'; 1932 | font-weight: 400; } 1933 | 1934 | .fa.fa-viadeo-square { 1935 | font-family: 'Font Awesome 5 Brands'; 1936 | font-weight: 400; } 1937 | 1938 | .fa.fa-snapchat { 1939 | font-family: 'Font Awesome 5 Brands'; 1940 | font-weight: 400; } 1941 | 1942 | .fa.fa-snapchat-ghost { 1943 | font-family: 'Font Awesome 5 Brands'; 1944 | font-weight: 400; } 1945 | 1946 | .fa.fa-snapchat-square { 1947 | font-family: 'Font Awesome 5 Brands'; 1948 | font-weight: 400; } 1949 | 1950 | .fa.fa-pied-piper { 1951 | font-family: 'Font Awesome 5 Brands'; 1952 | font-weight: 400; } 1953 | 1954 | .fa.fa-first-order { 1955 | font-family: 'Font Awesome 5 Brands'; 1956 | font-weight: 400; } 1957 | 1958 | .fa.fa-yoast { 1959 | font-family: 'Font Awesome 5 Brands'; 1960 | font-weight: 400; } 1961 | 1962 | .fa.fa-themeisle { 1963 | font-family: 'Font Awesome 5 Brands'; 1964 | font-weight: 400; } 1965 | 1966 | .fa.fa-google-plus-official { 1967 | font-family: 'Font Awesome 5 Brands'; 1968 | font-weight: 400; } 1969 | 1970 | .fa.fa-google-plus-official:before { 1971 | content: "\f2b3"; } 1972 | 1973 | .fa.fa-google-plus-circle { 1974 | font-family: 'Font Awesome 5 Brands'; 1975 | font-weight: 400; } 1976 | 1977 | .fa.fa-google-plus-circle:before { 1978 | content: "\f2b3"; } 1979 | 1980 | .fa.fa-font-awesome { 1981 | font-family: 'Font Awesome 5 Brands'; 1982 | font-weight: 400; } 1983 | 1984 | .fa.fa-fa { 1985 | font-family: 'Font Awesome 5 Brands'; 1986 | font-weight: 400; } 1987 | 1988 | .fa.fa-fa:before { 1989 | content: "\f2b4"; } 1990 | 1991 | .fa.fa-handshake-o { 1992 | font-family: 'Font Awesome 5 Free'; 1993 | font-weight: 400; } 1994 | 1995 | .fa.fa-handshake-o:before { 1996 | content: "\f2b5"; } 1997 | 1998 | .fa.fa-envelope-open-o { 1999 | font-family: 'Font Awesome 5 Free'; 2000 | font-weight: 400; } 2001 | 2002 | .fa.fa-envelope-open-o:before { 2003 | content: "\f2b6"; } 2004 | 2005 | .fa.fa-linode { 2006 | font-family: 'Font Awesome 5 Brands'; 2007 | font-weight: 400; } 2008 | 2009 | .fa.fa-address-book-o { 2010 | font-family: 'Font Awesome 5 Free'; 2011 | font-weight: 400; } 2012 | 2013 | .fa.fa-address-book-o:before { 2014 | content: "\f2b9"; } 2015 | 2016 | .fa.fa-vcard:before { 2017 | content: "\f2bb"; } 2018 | 2019 | .fa.fa-address-card-o { 2020 | font-family: 'Font Awesome 5 Free'; 2021 | font-weight: 400; } 2022 | 2023 | .fa.fa-address-card-o:before { 2024 | content: "\f2bb"; } 2025 | 2026 | .fa.fa-vcard-o { 2027 | font-family: 'Font Awesome 5 Free'; 2028 | font-weight: 400; } 2029 | 2030 | .fa.fa-vcard-o:before { 2031 | content: "\f2bb"; } 2032 | 2033 | .fa.fa-user-circle-o { 2034 | font-family: 'Font Awesome 5 Free'; 2035 | font-weight: 400; } 2036 | 2037 | .fa.fa-user-circle-o:before { 2038 | content: "\f2bd"; } 2039 | 2040 | .fa.fa-user-o { 2041 | font-family: 'Font Awesome 5 Free'; 2042 | font-weight: 400; } 2043 | 2044 | .fa.fa-user-o:before { 2045 | content: "\f007"; } 2046 | 2047 | .fa.fa-id-badge { 2048 | font-family: 'Font Awesome 5 Free'; 2049 | font-weight: 400; } 2050 | 2051 | .fa.fa-drivers-license:before { 2052 | content: "\f2c2"; } 2053 | 2054 | .fa.fa-id-card-o { 2055 | font-family: 'Font Awesome 5 Free'; 2056 | font-weight: 400; } 2057 | 2058 | .fa.fa-id-card-o:before { 2059 | content: "\f2c2"; } 2060 | 2061 | .fa.fa-drivers-license-o { 2062 | font-family: 'Font Awesome 5 Free'; 2063 | font-weight: 400; } 2064 | 2065 | .fa.fa-drivers-license-o:before { 2066 | content: "\f2c2"; } 2067 | 2068 | .fa.fa-quora { 2069 | font-family: 'Font Awesome 5 Brands'; 2070 | font-weight: 400; } 2071 | 2072 | .fa.fa-free-code-camp { 2073 | font-family: 'Font Awesome 5 Brands'; 2074 | font-weight: 400; } 2075 | 2076 | .fa.fa-telegram { 2077 | font-family: 'Font Awesome 5 Brands'; 2078 | font-weight: 400; } 2079 | 2080 | .fa.fa-thermometer-4:before { 2081 | content: "\f2c7"; } 2082 | 2083 | .fa.fa-thermometer:before { 2084 | content: "\f2c7"; } 2085 | 2086 | .fa.fa-thermometer-3:before { 2087 | content: "\f2c8"; } 2088 | 2089 | .fa.fa-thermometer-2:before { 2090 | content: "\f2c9"; } 2091 | 2092 | .fa.fa-thermometer-1:before { 2093 | content: "\f2ca"; } 2094 | 2095 | .fa.fa-thermometer-0:before { 2096 | content: "\f2cb"; } 2097 | 2098 | .fa.fa-bathtub:before { 2099 | content: "\f2cd"; } 2100 | 2101 | .fa.fa-s15:before { 2102 | content: "\f2cd"; } 2103 | 2104 | .fa.fa-window-maximize { 2105 | font-family: 'Font Awesome 5 Free'; 2106 | font-weight: 400; } 2107 | 2108 | .fa.fa-window-restore { 2109 | font-family: 'Font Awesome 5 Free'; 2110 | font-weight: 400; } 2111 | 2112 | .fa.fa-times-rectangle:before { 2113 | content: "\f410"; } 2114 | 2115 | .fa.fa-window-close-o { 2116 | font-family: 'Font Awesome 5 Free'; 2117 | font-weight: 400; } 2118 | 2119 | .fa.fa-window-close-o:before { 2120 | content: "\f410"; } 2121 | 2122 | .fa.fa-times-rectangle-o { 2123 | font-family: 'Font Awesome 5 Free'; 2124 | font-weight: 400; } 2125 | 2126 | .fa.fa-times-rectangle-o:before { 2127 | content: "\f410"; } 2128 | 2129 | .fa.fa-bandcamp { 2130 | font-family: 'Font Awesome 5 Brands'; 2131 | font-weight: 400; } 2132 | 2133 | .fa.fa-grav { 2134 | font-family: 'Font Awesome 5 Brands'; 2135 | font-weight: 400; } 2136 | 2137 | .fa.fa-etsy { 2138 | font-family: 'Font Awesome 5 Brands'; 2139 | font-weight: 400; } 2140 | 2141 | .fa.fa-imdb { 2142 | font-family: 'Font Awesome 5 Brands'; 2143 | font-weight: 400; } 2144 | 2145 | .fa.fa-ravelry { 2146 | font-family: 'Font Awesome 5 Brands'; 2147 | font-weight: 400; } 2148 | 2149 | .fa.fa-eercast { 2150 | font-family: 'Font Awesome 5 Brands'; 2151 | font-weight: 400; } 2152 | 2153 | .fa.fa-eercast:before { 2154 | content: "\f2da"; } 2155 | 2156 | .fa.fa-snowflake-o { 2157 | font-family: 'Font Awesome 5 Free'; 2158 | font-weight: 400; } 2159 | 2160 | .fa.fa-snowflake-o:before { 2161 | content: "\f2dc"; } 2162 | 2163 | .fa.fa-superpowers { 2164 | font-family: 'Font Awesome 5 Brands'; 2165 | font-weight: 400; } 2166 | 2167 | .fa.fa-wpexplorer { 2168 | font-family: 'Font Awesome 5 Brands'; 2169 | font-weight: 400; } 2170 | 2171 | .fa.fa-cab:before { 2172 | content: "\f1ba"; } 2173 | -------------------------------------------------------------------------------- /static/css/fontawesome-free/css/v4-shims.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"} -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /static/css/fontawesome-free/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/css/fontawesome-free/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /static/css/site.css: -------------------------------------------------------------------------------- 1 | .container{ 2 | display: grid; 3 | grid-template-columns: 5% 1fr 5%; 4 | } 5 | 6 | .navbar-toggler { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | display: none; 11 | } 12 | 13 | nav{ 14 | position: relative; 15 | display: flex; 16 | flex-wrap: wrap; 17 | align-items: center; 18 | justify-content: space-between; 19 | padding: .5rem 1rem; 20 | } 21 | 22 | .navbar-nav { 23 | display: flex; 24 | flex-direction: row; 25 | padding-left: 0; 26 | margin-bottom: 0; 27 | list-style: none; 28 | } 29 | .nav-item { 30 | margin: 0 1em; 31 | } 32 | #navbarSupportedContent { 33 | display: flex !important; 34 | flex-basis: auto; 35 | } 36 | 37 | a { 38 | text-decoration: none; 39 | } 40 | 41 | footer { 42 | position: fixed; 43 | bottom: 0; 44 | left: 0; 45 | margin-left: auto; 46 | margin-right: auto; 47 | width: 100%; 48 | padding: 25px; 49 | color: #aaa; 50 | text-align: center; 51 | } 52 | 53 | li { 54 | list-style: none; 55 | } 56 | 57 | .form-container { 58 | margin: 2em; 59 | } -------------------------------------------------------------------------------- /static/fontawesome-free/css/brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Brands'; 7 | font-style: normal; 8 | font-weight: 400; 9 | font-display: block; 10 | src: url("../webfonts/fa-brands-400.eot"); 11 | src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } 12 | 13 | .fab { 14 | font-family: 'Font Awesome 5 Brands'; 15 | font-weight: 400; } 16 | -------------------------------------------------------------------------------- /static/fontawesome-free/css/brands.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400} -------------------------------------------------------------------------------- /static/fontawesome-free/css/regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 400; 9 | font-display: block; 10 | src: url("../webfonts/fa-regular-400.eot"); 11 | src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } 12 | 13 | .far { 14 | font-family: 'Font Awesome 5 Free'; 15 | font-weight: 400; } 16 | -------------------------------------------------------------------------------- /static/fontawesome-free/css/regular.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400} -------------------------------------------------------------------------------- /static/fontawesome-free/css/solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 900; 9 | font-display: block; 10 | src: url("../webfonts/fa-solid-900.eot"); 11 | src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } 12 | 13 | .fa, 14 | .fas { 15 | font-family: 'Font Awesome 5 Free'; 16 | font-weight: 900; } 17 | -------------------------------------------------------------------------------- /static/fontawesome-free/css/solid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900} -------------------------------------------------------------------------------- /static/fontawesome-free/css/svg-with-js.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | svg:not(:root).svg-inline--fa { 6 | overflow: visible; } 7 | 8 | .svg-inline--fa { 9 | display: inline-block; 10 | font-size: inherit; 11 | height: 1em; 12 | overflow: visible; 13 | vertical-align: -.125em; } 14 | .svg-inline--fa.fa-lg { 15 | vertical-align: -.225em; } 16 | .svg-inline--fa.fa-w-1 { 17 | width: 0.0625em; } 18 | .svg-inline--fa.fa-w-2 { 19 | width: 0.125em; } 20 | .svg-inline--fa.fa-w-3 { 21 | width: 0.1875em; } 22 | .svg-inline--fa.fa-w-4 { 23 | width: 0.25em; } 24 | .svg-inline--fa.fa-w-5 { 25 | width: 0.3125em; } 26 | .svg-inline--fa.fa-w-6 { 27 | width: 0.375em; } 28 | .svg-inline--fa.fa-w-7 { 29 | width: 0.4375em; } 30 | .svg-inline--fa.fa-w-8 { 31 | width: 0.5em; } 32 | .svg-inline--fa.fa-w-9 { 33 | width: 0.5625em; } 34 | .svg-inline--fa.fa-w-10 { 35 | width: 0.625em; } 36 | .svg-inline--fa.fa-w-11 { 37 | width: 0.6875em; } 38 | .svg-inline--fa.fa-w-12 { 39 | width: 0.75em; } 40 | .svg-inline--fa.fa-w-13 { 41 | width: 0.8125em; } 42 | .svg-inline--fa.fa-w-14 { 43 | width: 0.875em; } 44 | .svg-inline--fa.fa-w-15 { 45 | width: 0.9375em; } 46 | .svg-inline--fa.fa-w-16 { 47 | width: 1em; } 48 | .svg-inline--fa.fa-w-17 { 49 | width: 1.0625em; } 50 | .svg-inline--fa.fa-w-18 { 51 | width: 1.125em; } 52 | .svg-inline--fa.fa-w-19 { 53 | width: 1.1875em; } 54 | .svg-inline--fa.fa-w-20 { 55 | width: 1.25em; } 56 | .svg-inline--fa.fa-pull-left { 57 | margin-right: .3em; 58 | width: auto; } 59 | .svg-inline--fa.fa-pull-right { 60 | margin-left: .3em; 61 | width: auto; } 62 | .svg-inline--fa.fa-border { 63 | height: 1.5em; } 64 | .svg-inline--fa.fa-li { 65 | width: 2em; } 66 | .svg-inline--fa.fa-fw { 67 | width: 1.25em; } 68 | 69 | .fa-layers svg.svg-inline--fa { 70 | bottom: 0; 71 | left: 0; 72 | margin: auto; 73 | position: absolute; 74 | right: 0; 75 | top: 0; } 76 | 77 | .fa-layers { 78 | display: inline-block; 79 | height: 1em; 80 | position: relative; 81 | text-align: center; 82 | vertical-align: -.125em; 83 | width: 1em; } 84 | .fa-layers svg.svg-inline--fa { 85 | -webkit-transform-origin: center center; 86 | transform-origin: center center; } 87 | 88 | .fa-layers-text, .fa-layers-counter { 89 | display: inline-block; 90 | position: absolute; 91 | text-align: center; } 92 | 93 | .fa-layers-text { 94 | left: 50%; 95 | top: 50%; 96 | -webkit-transform: translate(-50%, -50%); 97 | transform: translate(-50%, -50%); 98 | -webkit-transform-origin: center center; 99 | transform-origin: center center; } 100 | 101 | .fa-layers-counter { 102 | background-color: #ff253a; 103 | border-radius: 1em; 104 | -webkit-box-sizing: border-box; 105 | box-sizing: border-box; 106 | color: #fff; 107 | height: 1.5em; 108 | line-height: 1; 109 | max-width: 5em; 110 | min-width: 1.5em; 111 | overflow: hidden; 112 | padding: .25em; 113 | right: 0; 114 | text-overflow: ellipsis; 115 | top: 0; 116 | -webkit-transform: scale(0.25); 117 | transform: scale(0.25); 118 | -webkit-transform-origin: top right; 119 | transform-origin: top right; } 120 | 121 | .fa-layers-bottom-right { 122 | bottom: 0; 123 | right: 0; 124 | top: auto; 125 | -webkit-transform: scale(0.25); 126 | transform: scale(0.25); 127 | -webkit-transform-origin: bottom right; 128 | transform-origin: bottom right; } 129 | 130 | .fa-layers-bottom-left { 131 | bottom: 0; 132 | left: 0; 133 | right: auto; 134 | top: auto; 135 | -webkit-transform: scale(0.25); 136 | transform: scale(0.25); 137 | -webkit-transform-origin: bottom left; 138 | transform-origin: bottom left; } 139 | 140 | .fa-layers-top-right { 141 | right: 0; 142 | top: 0; 143 | -webkit-transform: scale(0.25); 144 | transform: scale(0.25); 145 | -webkit-transform-origin: top right; 146 | transform-origin: top right; } 147 | 148 | .fa-layers-top-left { 149 | left: 0; 150 | right: auto; 151 | top: 0; 152 | -webkit-transform: scale(0.25); 153 | transform: scale(0.25); 154 | -webkit-transform-origin: top left; 155 | transform-origin: top left; } 156 | 157 | .fa-lg { 158 | font-size: 1.33333em; 159 | line-height: 0.75em; 160 | vertical-align: -.0667em; } 161 | 162 | .fa-xs { 163 | font-size: .75em; } 164 | 165 | .fa-sm { 166 | font-size: .875em; } 167 | 168 | .fa-1x { 169 | font-size: 1em; } 170 | 171 | .fa-2x { 172 | font-size: 2em; } 173 | 174 | .fa-3x { 175 | font-size: 3em; } 176 | 177 | .fa-4x { 178 | font-size: 4em; } 179 | 180 | .fa-5x { 181 | font-size: 5em; } 182 | 183 | .fa-6x { 184 | font-size: 6em; } 185 | 186 | .fa-7x { 187 | font-size: 7em; } 188 | 189 | .fa-8x { 190 | font-size: 8em; } 191 | 192 | .fa-9x { 193 | font-size: 9em; } 194 | 195 | .fa-10x { 196 | font-size: 10em; } 197 | 198 | .fa-fw { 199 | text-align: center; 200 | width: 1.25em; } 201 | 202 | .fa-ul { 203 | list-style-type: none; 204 | margin-left: 2.5em; 205 | padding-left: 0; } 206 | .fa-ul > li { 207 | position: relative; } 208 | 209 | .fa-li { 210 | left: -2em; 211 | position: absolute; 212 | text-align: center; 213 | width: 2em; 214 | line-height: inherit; } 215 | 216 | .fa-border { 217 | border: solid 0.08em #eee; 218 | border-radius: .1em; 219 | padding: .2em .25em .15em; } 220 | 221 | .fa-pull-left { 222 | float: left; } 223 | 224 | .fa-pull-right { 225 | float: right; } 226 | 227 | .fa.fa-pull-left, 228 | .fas.fa-pull-left, 229 | .far.fa-pull-left, 230 | .fal.fa-pull-left, 231 | .fab.fa-pull-left { 232 | margin-right: .3em; } 233 | 234 | .fa.fa-pull-right, 235 | .fas.fa-pull-right, 236 | .far.fa-pull-right, 237 | .fal.fa-pull-right, 238 | .fab.fa-pull-right { 239 | margin-left: .3em; } 240 | 241 | .fa-spin { 242 | -webkit-animation: fa-spin 2s infinite linear; 243 | animation: fa-spin 2s infinite linear; } 244 | 245 | .fa-pulse { 246 | -webkit-animation: fa-spin 1s infinite steps(8); 247 | animation: fa-spin 1s infinite steps(8); } 248 | 249 | @-webkit-keyframes fa-spin { 250 | 0% { 251 | -webkit-transform: rotate(0deg); 252 | transform: rotate(0deg); } 253 | 100% { 254 | -webkit-transform: rotate(360deg); 255 | transform: rotate(360deg); } } 256 | 257 | @keyframes fa-spin { 258 | 0% { 259 | -webkit-transform: rotate(0deg); 260 | transform: rotate(0deg); } 261 | 100% { 262 | -webkit-transform: rotate(360deg); 263 | transform: rotate(360deg); } } 264 | 265 | .fa-rotate-90 { 266 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; 267 | -webkit-transform: rotate(90deg); 268 | transform: rotate(90deg); } 269 | 270 | .fa-rotate-180 { 271 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; 272 | -webkit-transform: rotate(180deg); 273 | transform: rotate(180deg); } 274 | 275 | .fa-rotate-270 { 276 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; 277 | -webkit-transform: rotate(270deg); 278 | transform: rotate(270deg); } 279 | 280 | .fa-flip-horizontal { 281 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; 282 | -webkit-transform: scale(-1, 1); 283 | transform: scale(-1, 1); } 284 | 285 | .fa-flip-vertical { 286 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; 287 | -webkit-transform: scale(1, -1); 288 | transform: scale(1, -1); } 289 | 290 | .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { 291 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; 292 | -webkit-transform: scale(-1, -1); 293 | transform: scale(-1, -1); } 294 | 295 | :root .fa-rotate-90, 296 | :root .fa-rotate-180, 297 | :root .fa-rotate-270, 298 | :root .fa-flip-horizontal, 299 | :root .fa-flip-vertical, 300 | :root .fa-flip-both { 301 | -webkit-filter: none; 302 | filter: none; } 303 | 304 | .fa-stack { 305 | display: inline-block; 306 | height: 2em; 307 | position: relative; 308 | width: 2.5em; } 309 | 310 | .fa-stack-1x, 311 | .fa-stack-2x { 312 | bottom: 0; 313 | left: 0; 314 | margin: auto; 315 | position: absolute; 316 | right: 0; 317 | top: 0; } 318 | 319 | .svg-inline--fa.fa-stack-1x { 320 | height: 1em; 321 | width: 1.25em; } 322 | 323 | .svg-inline--fa.fa-stack-2x { 324 | height: 2em; 325 | width: 2.5em; } 326 | 327 | .fa-inverse { 328 | color: #fff; } 329 | 330 | .sr-only { 331 | border: 0; 332 | clip: rect(0, 0, 0, 0); 333 | height: 1px; 334 | margin: -1px; 335 | overflow: hidden; 336 | padding: 0; 337 | position: absolute; 338 | width: 1px; } 339 | 340 | .sr-only-focusable:active, .sr-only-focusable:focus { 341 | clip: auto; 342 | height: auto; 343 | margin: 0; 344 | overflow: visible; 345 | position: static; 346 | width: auto; } 347 | 348 | .svg-inline--fa .fa-primary { 349 | fill: var(--fa-primary-color, currentColor); 350 | opacity: 1; 351 | opacity: var(--fa-primary-opacity, 1); } 352 | 353 | .svg-inline--fa .fa-secondary { 354 | fill: var(--fa-secondary-color, currentColor); 355 | opacity: 0.4; 356 | opacity: var(--fa-secondary-opacity, 0.4); } 357 | 358 | .svg-inline--fa.fa-swap-opacity .fa-primary { 359 | opacity: 0.4; 360 | opacity: var(--fa-secondary-opacity, 0.4); } 361 | 362 | .svg-inline--fa.fa-swap-opacity .fa-secondary { 363 | opacity: 1; 364 | opacity: var(--fa-primary-opacity, 1); } 365 | 366 | .svg-inline--fa mask .fa-primary, 367 | .svg-inline--fa mask .fa-secondary { 368 | fill: black; } 369 | 370 | .fad.fa-inverse { 371 | color: #fff; } 372 | -------------------------------------------------------------------------------- /static/fontawesome-free/css/svg-with-js.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:.4;opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:1;opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fad.fa-inverse{color:#fff} -------------------------------------------------------------------------------- /static/fontawesome-free/css/v4-shims.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .fa.fa-glass:before{content:"\f000"}.fa.fa-meetup{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-star-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-o:before{content:"\f005"}.fa.fa-close:before,.fa.fa-remove:before{content:"\f00d"}.fa.fa-gear:before{content:"\f013"}.fa.fa-trash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-trash-o:before{content:"\f2ed"}.fa.fa-file-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-o:before{content:"\f15b"}.fa.fa-clock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-clock-o:before{content:"\f017"}.fa.fa-arrow-circle-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-down:before{content:"\f358"}.fa.fa-arrow-circle-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-up:before{content:"\f35b"}.fa.fa-play-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-play-circle-o:before{content:"\f144"}.fa.fa-repeat:before,.fa.fa-rotate-right:before{content:"\f01e"}.fa.fa-refresh:before{content:"\f021"}.fa.fa-list-alt{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dedent:before{content:"\f03b"}.fa.fa-video-camera:before{content:"\f03d"}.fa.fa-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-picture-o:before{content:"\f03e"}.fa.fa-photo{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-photo:before{content:"\f03e"}.fa.fa-image{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-image:before{content:"\f03e"}.fa.fa-pencil:before{content:"\f303"}.fa.fa-map-marker:before{content:"\f3c5"}.fa.fa-pencil-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pencil-square-o:before{content:"\f044"}.fa.fa-share-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-share-square-o:before{content:"\f14d"}.fa.fa-check-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-square-o:before{content:"\f14a"}.fa.fa-arrows:before{content:"\f0b2"}.fa.fa-times-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-circle-o:before{content:"\f057"}.fa.fa-check-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-check-circle-o:before{content:"\f058"}.fa.fa-mail-forward:before{content:"\f064"}.fa.fa-expand:before{content:"\f424"}.fa.fa-compress:before{content:"\f422"}.fa.fa-eye,.fa.fa-eye-slash{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-warning:before{content:"\f071"}.fa.fa-calendar:before{content:"\f073"}.fa.fa-arrows-v:before{content:"\f338"}.fa.fa-arrows-h:before{content:"\f337"}.fa.fa-bar-chart{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart:before{content:"\f080"}.fa.fa-bar-chart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bar-chart-o:before{content:"\f080"}.fa.fa-facebook-square,.fa.fa-twitter-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gears:before{content:"\f085"}.fa.fa-thumbs-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-up:before{content:"\f164"}.fa.fa-thumbs-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-thumbs-o-down:before{content:"\f165"}.fa.fa-heart-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-heart-o:before{content:"\f004"}.fa.fa-sign-out:before{content:"\f2f5"}.fa.fa-linkedin-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin-square:before{content:"\f08c"}.fa.fa-thumb-tack:before{content:"\f08d"}.fa.fa-external-link:before{content:"\f35d"}.fa.fa-sign-in:before{content:"\f2f6"}.fa.fa-github-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-lemon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lemon-o:before{content:"\f094"}.fa.fa-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-square-o:before{content:"\f0c8"}.fa.fa-bookmark-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bookmark-o:before{content:"\f02e"}.fa.fa-facebook,.fa.fa-twitter{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook:before{content:"\f39e"}.fa.fa-facebook-f{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-f:before{content:"\f39e"}.fa.fa-github{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-feed:before{content:"\f09e"}.fa.fa-hdd-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hdd-o:before{content:"\f0a0"}.fa.fa-hand-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-right:before{content:"\f0a4"}.fa.fa-hand-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-left:before{content:"\f0a5"}.fa.fa-hand-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-up:before{content:"\f0a6"}.fa.fa-hand-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-o-down:before{content:"\f0a7"}.fa.fa-arrows-alt:before{content:"\f31e"}.fa.fa-group:before{content:"\f0c0"}.fa.fa-chain:before{content:"\f0c1"}.fa.fa-scissors:before{content:"\f0c4"}.fa.fa-files-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-files-o:before{content:"\f0c5"}.fa.fa-floppy-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-floppy-o:before{content:"\f0c7"}.fa.fa-navicon:before,.fa.fa-reorder:before{content:"\f0c9"}.fa.fa-google-plus,.fa.fa-google-plus-square,.fa.fa-pinterest,.fa.fa-pinterest-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus:before{content:"\f0d5"}.fa.fa-money{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-money:before{content:"\f3d1"}.fa.fa-unsorted:before{content:"\f0dc"}.fa.fa-sort-desc:before{content:"\f0dd"}.fa.fa-sort-asc:before{content:"\f0de"}.fa.fa-linkedin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-linkedin:before{content:"\f0e1"}.fa.fa-rotate-left:before{content:"\f0e2"}.fa.fa-legal:before{content:"\f0e3"}.fa.fa-dashboard:before,.fa.fa-tachometer:before{content:"\f3fd"}.fa.fa-comment-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comment-o:before{content:"\f075"}.fa.fa-comments-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-comments-o:before{content:"\f086"}.fa.fa-flash:before{content:"\f0e7"}.fa.fa-clipboard,.fa.fa-paste{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paste:before{content:"\f328"}.fa.fa-lightbulb-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-lightbulb-o:before{content:"\f0eb"}.fa.fa-exchange:before{content:"\f362"}.fa.fa-cloud-download:before{content:"\f381"}.fa.fa-cloud-upload:before{content:"\f382"}.fa.fa-bell-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-o:before{content:"\f0f3"}.fa.fa-cutlery:before{content:"\f2e7"}.fa.fa-file-text-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-text-o:before{content:"\f15c"}.fa.fa-building-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-building-o:before{content:"\f1ad"}.fa.fa-hospital-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hospital-o:before{content:"\f0f8"}.fa.fa-tablet:before{content:"\f3fa"}.fa.fa-mobile-phone:before,.fa.fa-mobile:before{content:"\f3cd"}.fa.fa-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-o:before{content:"\f111"}.fa.fa-mail-reply:before{content:"\f3e5"}.fa.fa-github-alt{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-folder-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-o:before{content:"\f07b"}.fa.fa-folder-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-folder-open-o:before{content:"\f07c"}.fa.fa-smile-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-smile-o:before{content:"\f118"}.fa.fa-frown-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-frown-o:before{content:"\f119"}.fa.fa-meh-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-meh-o:before{content:"\f11a"}.fa.fa-keyboard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-keyboard-o:before{content:"\f11c"}.fa.fa-flag-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-flag-o:before{content:"\f024"}.fa.fa-mail-reply-all:before{content:"\f122"}.fa.fa-star-half-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-o:before{content:"\f089"}.fa.fa-star-half-empty{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-empty:before{content:"\f089"}.fa.fa-star-half-full{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-star-half-full:before{content:"\f089"}.fa.fa-code-fork:before{content:"\f126"}.fa.fa-chain-broken:before{content:"\f127"}.fa.fa-shield:before{content:"\f3ed"}.fa.fa-calendar-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-o:before{content:"\f133"}.fa.fa-css3,.fa.fa-html5,.fa.fa-maxcdn{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ticket:before{content:"\f3ff"}.fa.fa-minus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-minus-square-o:before{content:"\f146"}.fa.fa-level-up:before{content:"\f3bf"}.fa.fa-level-down:before{content:"\f3be"}.fa.fa-pencil-square:before{content:"\f14b"}.fa.fa-external-link-square:before{content:"\f360"}.fa.fa-compass{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-down:before{content:"\f150"}.fa.fa-toggle-down{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-down:before{content:"\f150"}.fa.fa-caret-square-o-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-up:before{content:"\f151"}.fa.fa-toggle-up{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-up:before{content:"\f151"}.fa.fa-caret-square-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-right:before{content:"\f152"}.fa.fa-toggle-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-right:before{content:"\f152"}.fa.fa-eur:before,.fa.fa-euro:before{content:"\f153"}.fa.fa-gbp:before{content:"\f154"}.fa.fa-dollar:before,.fa.fa-usd:before{content:"\f155"}.fa.fa-inr:before,.fa.fa-rupee:before{content:"\f156"}.fa.fa-cny:before,.fa.fa-jpy:before,.fa.fa-rmb:before,.fa.fa-yen:before{content:"\f157"}.fa.fa-rouble:before,.fa.fa-rub:before,.fa.fa-ruble:before{content:"\f158"}.fa.fa-krw:before,.fa.fa-won:before{content:"\f159"}.fa.fa-bitcoin,.fa.fa-btc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitcoin:before{content:"\f15a"}.fa.fa-file-text:before{content:"\f15c"}.fa.fa-sort-alpha-asc:before{content:"\f15d"}.fa.fa-sort-alpha-desc:before{content:"\f881"}.fa.fa-sort-amount-asc:before{content:"\f160"}.fa.fa-sort-amount-desc:before{content:"\f884"}.fa.fa-sort-numeric-asc:before{content:"\f162"}.fa.fa-sort-numeric-desc:before{content:"\f886"}.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube,.fa.fa-youtube-play,.fa.fa-youtube-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-youtube-play:before{content:"\f167"}.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-dropbox,.fa.fa-flickr,.fa.fa-instagram,.fa.fa-stack-overflow{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bitbucket-square:before{content:"\f171"}.fa.fa-tumblr,.fa.fa-tumblr-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-long-arrow-down:before{content:"\f309"}.fa.fa-long-arrow-up:before{content:"\f30c"}.fa.fa-long-arrow-left:before{content:"\f30a"}.fa.fa-long-arrow-right:before{content:"\f30b"}.fa.fa-android,.fa.fa-apple,.fa.fa-dribbble,.fa.fa-foursquare,.fa.fa-gittip,.fa.fa-gratipay,.fa.fa-linux,.fa.fa-skype,.fa.fa-trello,.fa.fa-windows{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-gittip:before{content:"\f184"}.fa.fa-sun-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sun-o:before{content:"\f185"}.fa.fa-moon-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-moon-o:before{content:"\f186"}.fa.fa-pagelines,.fa.fa-renren,.fa.fa-stack-exchange,.fa.fa-vk,.fa.fa-weibo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-arrow-circle-o-right{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-right:before{content:"\f35a"}.fa.fa-arrow-circle-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-arrow-circle-o-left:before{content:"\f359"}.fa.fa-caret-square-o-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-caret-square-o-left:before{content:"\f191"}.fa.fa-toggle-left{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-toggle-left:before{content:"\f191"}.fa.fa-dot-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-dot-circle-o:before{content:"\f192"}.fa.fa-vimeo-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-try:before,.fa.fa-turkish-lira:before{content:"\f195"}.fa.fa-plus-square-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-plus-square-o:before{content:"\f0fe"}.fa.fa-openid,.fa.fa-slack,.fa.fa-wordpress{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bank:before,.fa.fa-institution:before{content:"\f19c"}.fa.fa-mortar-board:before{content:"\f19d"}.fa.fa-delicious,.fa.fa-digg,.fa.fa-drupal,.fa.fa-google,.fa.fa-joomla,.fa.fa-pied-piper-alt,.fa.fa-pied-piper-pp,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon,.fa.fa-stumbleupon-circle,.fa.fa-yahoo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-spoon:before{content:"\f2e5"}.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-automobile:before{content:"\f1b9"}.fa.fa-envelope-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-o:before{content:"\f0e0"}.fa.fa-deviantart,.fa.fa-soundcloud,.fa.fa-spotify{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-file-pdf-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-pdf-o:before{content:"\f1c1"}.fa.fa-file-word-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-word-o:before{content:"\f1c2"}.fa.fa-file-excel-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-excel-o:before{content:"\f1c3"}.fa.fa-file-powerpoint-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-powerpoint-o:before{content:"\f1c4"}.fa.fa-file-image-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-image-o:before{content:"\f1c5"}.fa.fa-file-photo-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-photo-o:before{content:"\f1c5"}.fa.fa-file-picture-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-picture-o:before{content:"\f1c5"}.fa.fa-file-archive-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-archive-o:before{content:"\f1c6"}.fa.fa-file-zip-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-zip-o:before{content:"\f1c6"}.fa.fa-file-audio-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-audio-o:before{content:"\f1c7"}.fa.fa-file-sound-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-sound-o:before{content:"\f1c7"}.fa.fa-file-video-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-video-o:before{content:"\f1c8"}.fa.fa-file-movie-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-movie-o:before{content:"\f1c8"}.fa.fa-file-code-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-file-code-o:before{content:"\f1c9"}.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-vine{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-life-bouy,.fa.fa-life-ring{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-bouy:before{content:"\f1cd"}.fa.fa-life-buoy{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-buoy:before{content:"\f1cd"}.fa.fa-life-saver{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-life-saver:before{content:"\f1cd"}.fa.fa-support{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-support:before{content:"\f1cd"}.fa.fa-circle-o-notch:before{content:"\f1ce"}.fa.fa-ra,.fa.fa-rebel{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ra:before{content:"\f1d0"}.fa.fa-resistance{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-resistance:before{content:"\f1d0"}.fa.fa-empire,.fa.fa-ge{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-ge:before{content:"\f1d1"}.fa.fa-git,.fa.fa-git-square,.fa.fa-hacker-news,.fa.fa-y-combinator-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-y-combinator-square:before{content:"\f1d4"}.fa.fa-yc-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc-square:before{content:"\f1d4"}.fa.fa-qq,.fa.fa-tencent-weibo,.fa.fa-wechat,.fa.fa-weixin{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wechat:before{content:"\f1d7"}.fa.fa-send:before{content:"\f1d8"}.fa.fa-paper-plane-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-paper-plane-o:before{content:"\f1d8"}.fa.fa-send-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-send-o:before{content:"\f1d8"}.fa.fa-circle-thin{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-circle-thin:before{content:"\f111"}.fa.fa-header:before{content:"\f1dc"}.fa.fa-sliders:before{content:"\f1de"}.fa.fa-futbol-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-futbol-o:before{content:"\f1e3"}.fa.fa-soccer-ball-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-soccer-ball-o:before{content:"\f1e3"}.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-newspaper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-newspaper-o:before{content:"\f1ea"}.fa.fa-cc-amex,.fa.fa-cc-discover,.fa.fa-cc-mastercard,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-cc-visa,.fa.fa-google-wallet,.fa.fa-paypal{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-bell-slash-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-bell-slash-o:before{content:"\f1f6"}.fa.fa-trash:before{content:"\f2ed"}.fa.fa-copyright{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-eyedropper:before{content:"\f1fb"}.fa.fa-area-chart:before{content:"\f1fe"}.fa.fa-pie-chart:before{content:"\f200"}.fa.fa-line-chart:before{content:"\f201"}.fa.fa-angellist,.fa.fa-ioxhost,.fa.fa-lastfm,.fa.fa-lastfm-square{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cc{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-cc:before{content:"\f20a"}.fa.fa-ils:before,.fa.fa-shekel:before,.fa.fa-sheqel:before{content:"\f20b"}.fa.fa-meanpath{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-meanpath:before{content:"\f2b4"}.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-diamond{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-diamond:before{content:"\f3a5"}.fa.fa-intersex:before{content:"\f224"}.fa.fa-facebook-official{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-facebook-official:before{content:"\f09a"}.fa.fa-pinterest-p,.fa.fa-whatsapp{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-hotel:before{content:"\f236"}.fa.fa-medium,.fa.fa-viacoin,.fa.fa-y-combinator,.fa.fa-yc{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-yc:before{content:"\f23b"}.fa.fa-expeditedssl,.fa.fa-opencart,.fa.fa-optin-monster{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-battery-4:before,.fa.fa-battery:before{content:"\f240"}.fa.fa-battery-3:before{content:"\f241"}.fa.fa-battery-2:before{content:"\f242"}.fa.fa-battery-1:before{content:"\f243"}.fa.fa-battery-0:before{content:"\f244"}.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-sticky-note-o:before{content:"\f249"}.fa.fa-cc-diners-club,.fa.fa-cc-jcb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-clone,.fa.fa-hourglass-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hourglass-o:before{content:"\f254"}.fa.fa-hourglass-1:before{content:"\f251"}.fa.fa-hourglass-2:before{content:"\f252"}.fa.fa-hourglass-3:before{content:"\f253"}.fa.fa-hand-rock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-rock-o:before{content:"\f255"}.fa.fa-hand-grab-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-grab-o:before{content:"\f255"}.fa.fa-hand-paper-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-paper-o:before{content:"\f256"}.fa.fa-hand-stop-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-stop-o:before{content:"\f256"}.fa.fa-hand-scissors-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-scissors-o:before{content:"\f257"}.fa.fa-hand-lizard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-lizard-o:before{content:"\f258"}.fa.fa-hand-spock-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-spock-o:before{content:"\f259"}.fa.fa-hand-pointer-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-pointer-o:before{content:"\f25a"}.fa.fa-hand-peace-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-hand-peace-o:before{content:"\f25b"}.fa.fa-registered{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-chrome,.fa.fa-creative-commons,.fa.fa-firefox,.fa.fa-get-pocket,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-internet-explorer,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-opera,.fa.fa-safari,.fa.fa-tripadvisor,.fa.fa-wikipedia-w{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-television:before{content:"\f26c"}.fa.fa-500px,.fa.fa-amazon,.fa.fa-contao{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-calendar-plus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-plus-o:before{content:"\f271"}.fa.fa-calendar-minus-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-minus-o:before{content:"\f272"}.fa.fa-calendar-times-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-times-o:before{content:"\f273"}.fa.fa-calendar-check-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-calendar-check-o:before{content:"\f274"}.fa.fa-map-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-map-o:before{content:"\f279"}.fa.fa-commenting:before{content:"\f4ad"}.fa.fa-commenting-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-commenting-o:before{content:"\f4ad"}.fa.fa-houzz,.fa.fa-vimeo{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-vimeo:before{content:"\f27d"}.fa.fa-black-tie,.fa.fa-edge,.fa.fa-fonticons,.fa.fa-reddit-alien{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-credit-card-alt:before{content:"\f09d"}.fa.fa-codiepie,.fa.fa-fort-awesome,.fa.fa-mixcloud,.fa.fa-modx,.fa.fa-product-hunt,.fa.fa-scribd,.fa.fa-usb{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-pause-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-pause-circle-o:before{content:"\f28b"}.fa.fa-stop-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-stop-circle-o:before{content:"\f28d"}.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-envira,.fa.fa-gitlab,.fa.fa-wheelchair-alt,.fa.fa-wpbeginner,.fa.fa-wpforms{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-wheelchair-alt:before{content:"\f368"}.fa.fa-question-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-question-circle-o:before{content:"\f059"}.fa.fa-volume-control-phone:before{content:"\f2a0"}.fa.fa-asl-interpreting:before{content:"\f2a3"}.fa.fa-deafness:before,.fa.fa-hard-of-hearing:before{content:"\f2a4"}.fa.fa-glide,.fa.fa-glide-g{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-signing:before{content:"\f2a7"}.fa.fa-first-order,.fa.fa-google-plus-official,.fa.fa-pied-piper,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-themeisle,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-yoast{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-official:before{content:"\f2b3"}.fa.fa-google-plus-circle{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-google-plus-circle:before{content:"\f2b3"}.fa.fa-fa,.fa.fa-font-awesome{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-fa:before{content:"\f2b4"}.fa.fa-handshake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-handshake-o:before{content:"\f2b5"}.fa.fa-envelope-open-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-envelope-open-o:before{content:"\f2b6"}.fa.fa-linode{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-address-book-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-book-o:before{content:"\f2b9"}.fa.fa-vcard:before{content:"\f2bb"}.fa.fa-address-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-address-card-o:before{content:"\f2bb"}.fa.fa-vcard-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-vcard-o:before{content:"\f2bb"}.fa.fa-user-circle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-circle-o:before{content:"\f2bd"}.fa.fa-user-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-user-o:before{content:"\f007"}.fa.fa-id-badge{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license:before{content:"\f2c2"}.fa.fa-id-card-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-id-card-o:before{content:"\f2c2"}.fa.fa-drivers-license-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-drivers-license-o:before{content:"\f2c2"}.fa.fa-free-code-camp,.fa.fa-quora,.fa.fa-telegram{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-thermometer-4:before,.fa.fa-thermometer:before{content:"\f2c7"}.fa.fa-thermometer-3:before{content:"\f2c8"}.fa.fa-thermometer-2:before{content:"\f2c9"}.fa.fa-thermometer-1:before{content:"\f2ca"}.fa.fa-thermometer-0:before{content:"\f2cb"}.fa.fa-bathtub:before,.fa.fa-s15:before{content:"\f2cd"}.fa.fa-window-maximize,.fa.fa-window-restore{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle:before{content:"\f410"}.fa.fa-window-close-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-window-close-o:before{content:"\f410"}.fa.fa-times-rectangle-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-times-rectangle-o:before{content:"\f410"}.fa.fa-bandcamp,.fa.fa-eercast,.fa.fa-etsy,.fa.fa-grav,.fa.fa-imdb,.fa.fa-ravelry{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-eercast:before{content:"\f2da"}.fa.fa-snowflake-o{font-family:"Font Awesome 5 Free";font-weight:400}.fa.fa-snowflake-o:before{content:"\f2dc"}.fa.fa-superpowers,.fa.fa-wpexplorer{font-family:"Font Awesome 5 Brands";font-weight:400}.fa.fa-cab:before{content:"\f1ba"} -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /static/fontawesome-free/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marty331/fasthtmx/bbebd0497a46c993fd2805d6cc14991128659fbb/static/fontawesome-free/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /static/img/bars.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | 12 | 13 | 17 | 21 | 22 | 23 | 27 | 31 | 32 | 33 | 37 | 41 | 42 | 43 | 47 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /static/js/htmx.min.js: -------------------------------------------------------------------------------- 1 | (function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else{e.htmx=t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var k={onLoad:t,process:rt,on:I,off:M,trigger:lt,ajax:$t,find:w,findAll:S,closest:L,values:function(e,t){var r=Lt(e,t||"post");return r.values},remove:E,addClass:q,removeClass:R,toggleClass:C,takeClass:O,defineExtension:Qt,removeExtension:er,logAll:b,logger:null,useTemplateFragments:false,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:"htmx-indicator",requestClass:"htmx-request",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:true,attributesToSettle:["class","style","width","height"],withCredentials:false,wsReconnectDelay:"full-jitter",disableSelector:"[hx-disable], [data-hx-disable]"},parseInterval:f,_:e,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){return new WebSocket(e,[])}};var r=["get","post","put","delete","patch"];var n=r.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function f(e){if(e==undefined){return undefined}if(e.slice(-2)=="ms"){return parseFloat(e.slice(0,-2))||undefined}if(e.slice(-1)=="s"){return parseFloat(e.slice(0,-1))*1e3||undefined}return parseFloat(e)||undefined}function l(e,t){return e.getAttribute&&e.getAttribute(t)}function s(e,t){return e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function D(e,t){return l(e,t)||l(e,"data-"+t)}function c(e){return e.parentElement}function F(){return document}function h(e,t){if(t(e)){return e}else if(c(e)){return h(c(e),t)}else{return null}}function X(e,t){var r=null;h(e,function(e){return r=D(e,t)});return r}function d(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function i(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function o(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=F().createDocumentFragment()}return i}function u(e){if(k.config.useTemplateFragments){var t=o("",0);return t.querySelector("template").content}else{var r=i(e);switch(r){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return o(""+e+"
",1);case"col":return o(""+e+"
",2);case"tr":return o(""+e+"
",2);case"td":case"th":return o(""+e+"
",3);case"script":return o("
"+e+"
",1);default:return o(e,0)}}}function P(e){if(e){e()}}function a(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function v(e){return a(e,"Function")}function g(e){return a(e,"Object")}function U(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function p(e){var t=[];if(e){for(var r=0;r=0}function z(e){return F().body.contains(e)}function y(e){return e.trim().split(/\s+/)}function V(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function x(e){try{return JSON.parse(e)}catch(e){ut(e);return null}}function e(e){return Ut(F().body,function(){return eval(e)})}function t(t){var e=k.on("htmx:load",function(e){t(e.detail.elt)});return e}function b(){k.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function w(e,t){if(t){return e.querySelector(t)}else{return w(F(),e)}}function S(e,t){if(t){return e.querySelectorAll(t)}else{return S(F(),e)}}function E(e,t){e=H(e);if(t){setTimeout(function(){E(e)},t)}else{e.parentElement.removeChild(e)}}function q(e,t,r){e=H(e);if(r){setTimeout(function(){q(e,t)},r)}else{e.classList.add(t)}}function R(e,t,r){e=H(e);if(r){setTimeout(function(){R(e,t)},r)}else{e.classList.remove(t)}}function C(e,t){e=H(e);e.classList.toggle(t)}function O(e,t){e=H(e);j(e.parentElement.children,function(e){R(e,t)});q(e,t)}function L(e,t){e=H(e);if(e.closest){return e.closest(t)}else{do{if(e==null||d(e,t)){return e}}while(e=e&&c(e))}}function A(e,t){if(t.indexOf("closest ")===0){return[L(e,t.substr(8))]}else if(t.indexOf("find ")===0){return[w(e,t.substr(5))]}else{return F().querySelectorAll(t)}}function T(e,t){return A(e,t)[0]}function H(e){if(a(e,"String")){return w(e)}else{return e}}function N(e,t,r){if(v(t)){return{target:F().body,event:e,listener:t}}else{return{target:H(e),event:t,listener:r}}}function I(t,r,n){rr(function(){var e=N(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=v(r);return e?r:n}function M(t,r,n){rr(function(){var e=N(t,r,n);e.target.removeEventListener(e.event,e.listener)});return v(r)?r:n}function _(e){var t=h(e,function(e){return D(e,"hx-target")!==null});if(t){var r=D(t,"hx-target");if(r==="this"){return t}else{return T(e,r)}}else{var n=U(e);if(n.boosted){return F().body}else{return e}}}function B(e){var t=k.config.attributesToSettle;for(var r=0;r0){i=e.substr(0,e.indexOf(":"));n=e.substr(e.indexOf(":")+1,e.length)}else{i=e}var o=F().querySelector(n);if(o){var a;a=F().createDocumentFragment();a.appendChild(t);if(!$(i,o)){a=t}le(i,o,o,a,r)}else{t.parentNode.removeChild(t);ot(F().body,"htmx:oobErrorNoTarget",{content:t})}return e}function Z(e,r){j(S(e,"[hx-swap-oob], [data-hx-swap-oob]"),function(e){var t=D(e,"hx-swap-oob");if(t!=null){J(t,e,r)}})}function G(e){j(S(e,"[hx-preserve], [data-hx-preserve]"),function(e){var t=D(e,"id");var r=F().getElementById(t);if(r!=null){e.parentNode.replaceChild(r,e)}})}function K(n,e,i){j(e.querySelectorAll("[id]"),function(e){if(e.id&&e.id.length>0){var t=n.querySelector(e.tagName+"[id='"+e.id+"']");if(t&&t!==n){var r=e.cloneNode();W(e,t);i.tasks.push(function(){W(e,r)})}}})}function Y(e){return function(){rt(e);Ye(e);Q(e);lt(e,"htmx:load")}}function Q(e){var t="[autofocus]";var r=d(e,t)?e:e.querySelector(t);if(r!=null){r.focus()}}function ee(e,t,r,n){K(e,r,n);while(r.childNodes.length>0){var i=r.firstChild;e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE){n.tasks.push(Y(i))}}}function te(t){var e=U(t);if(e.webSocket){e.webSocket.close()}if(e.sseEventSource){e.sseEventSource.close()}if(e.listenerInfos){j(e.listenerInfos,function(e){if(t!==e.on){e.on.removeEventListener(e.trigger,e.listener)}})}if(t.children){j(t.children,function(e){te(e)})}}function re(e,t,r){if(e.tagName==="BODY"){return se(e,t,r)}else{var n=e.previousSibling;ee(c(e),e,t,r);if(n==null){var i=c(e).firstChild}else{var i=n.nextSibling}U(e).replacedWith=i;r.elts=[];while(i&&i!==e){if(i.nodeType===Node.ELEMENT_NODE){r.elts.push(i)}i=i.nextElementSibling}te(e);c(e).removeChild(e)}}function ne(e,t,r){return ee(e,e.firstChild,t,r)}function ie(e,t,r){return ee(c(e),e,t,r)}function oe(e,t,r){return ee(e,null,t,r)}function ae(e,t,r){return ee(c(e),e.nextSibling,t,r)}function se(e,t,r){var n=e.firstChild;ee(e,n,t,r);if(n){while(n.nextSibling){te(n.nextSibling);e.removeChild(n.nextSibling)}te(n);e.removeChild(n)}}function ue(e,t){var r=X(e,"hx-select");if(r){var n=F().createDocumentFragment();j(t.querySelectorAll(r),function(e){n.appendChild(e)});t=n}return t}function le(e,t,r,n,i){switch(e){case"none":return;case"outerHTML":re(r,n,i);return;case"afterbegin":ne(r,n,i);return;case"beforebegin":ie(r,n,i);return;case"beforeend":oe(r,n,i);return;case"afterend":ae(r,n,i);return;default:var o=tr(t);for(var a=0;a([\s\S]+?)<\/title>/im;function ce(e){if(e.indexOf("")>-1&&(e.indexOf("<svg>")==-1||e.indexOf("<title>")<e.indexOf("<svg>"))){var t=fe.exec(e);if(t){return t[1]}}}function he(e,t,r,n,i){var o=ce(n);if(o){var a=w("title");if(a){a.innerHTML=o}else{window.document.title=o}}var s=u(n);if(s){Z(s,i);s=ue(r,s);G(s);return le(e,r,t,s,i)}}function de(e,t,r){var n=e.getResponseHeader(t);if(n.indexOf("{")===0){var i=x(n);for(var o in i){if(i.hasOwnProperty(o)){var a=i[o];if(!g(a)){a={value:a}}lt(r,o,a)}}}else{lt(r,n,[])}}var ve=/\s/;var ge=/[\s,]/;var pe=/[_$a-zA-Z]/;var me=/[_$a-zA-Z0-9]/;var ye=['"',"'","/"];var xe=/[^\s]/;function be(e){var t=[];var r=0;while(r<e.length){if(pe.exec(e.charAt(r))){var n=r;while(me.exec(e.charAt(r+1))){r++}t.push(e.substr(n,r-n+1))}else if(ye.indexOf(e.charAt(r))!==-1){var i=e.charAt(r);var n=r;r++;while(r<e.length&&e.charAt(r)!==i){if(e.charAt(r)==="\\"){r++}r++}t.push(e.substr(n,r-n+1))}else{var o=e.charAt(r);t.push(o)}r++}return t}function we(e,t,r){return pe.exec(e.charAt(0))&&e!=="true"&&e!=="false"&&e!=="this"&&e!==r&&t!=="."}function Se(e,t,r){if(t[0]==="["){t.shift();var n=1;var i=" return (function("+r+"){ return (";var o=null;while(t.length>0){var a=t[0];if(a==="]"){n--;if(n===0){if(o===null){i=i+"true"}t.shift();i+=")})";try{var s=Ut(e,function(){return Function(i)()},function(){return true});s.source=i;return s}catch(e){ot(F().body,"htmx:syntax:error",{error:e,source:i});return null}}}else if(a==="["){n++}if(we(a,o,r)){i+="(("+r+"."+a+") ? ("+r+"."+a+") : (window."+a+"))"}else{i=i+a}o=t.shift()}}}function Ee(e,t){var r="";while(e.length>0&&!e[0].match(t)){r+=e.shift()}return r}var qe="input, textarea, select";function Re(e){var t=D(e,"hx-trigger");var r=[];if(t){var n=be(t);do{Ee(n,xe);var i=n.length;var o=Ee(n,/[,\[\s]/);if(o!==""){if(o==="every"){var a={trigger:"every"};Ee(n,xe);a.pollInterval=f(Ee(n,ve));r.push(a)}else if(o.indexOf("sse:")===0){r.push({trigger:"sse",sseEvent:o.substr(4)})}else{var s={trigger:o};var u=Se(e,n,"event");if(u){s.eventFilter=u}while(n.length>0&&n[0]!==","){Ee(n,xe);var l=n.shift();if(l==="changed"){s.changed=true}else if(l==="once"){s.once=true}else if(l==="consume"){s.consume=true}else if(l==="delay"&&n[0]===":"){n.shift();s.delay=f(Ee(n,ge))}else if(l==="from"&&n[0]===":"){n.shift();s.from=Ee(n,ge)}else if(l==="target"&&n[0]===":"){n.shift();s.target=Ee(n,ge)}else if(l==="throttle"&&n[0]===":"){n.shift();s.throttle=f(Ee(n,ge))}else if(l==="queue"&&n[0]===":"){n.shift();s.queue=Ee(n,ge)}else if((l==="root"||l==="threshold")&&n[0]===":"){n.shift();s[l]=Ee(n,ge)}else{ot(e,"htmx:syntax:error",{token:n.shift()})}}r.push(s)}}if(n.length===i){ot(e,"htmx:syntax:error",{token:n.shift()})}Ee(n,xe)}while(n[0]===","&&n.shift())}if(r.length>0){return r}else if(d(e,"form")){return[{trigger:"submit"}]}else if(d(e,qe)){return[{trigger:"change"}]}else{return[{trigger:"click"}]}}function Ce(e){U(e).cancelled=true}function Oe(e,t,r,n){var i=U(e);i.timeout=setTimeout(function(){if(z(e)&&i.cancelled!==true){Zt(t,r,e);Oe(e,t,D(e,"hx-"+t),n)}},n)}function Le(e){return location.hostname===e.hostname&&l(e,"href")&&l(e,"href").indexOf("#")!==0}function Ae(t,r,e){if(t.tagName==="A"&&Le(t)||t.tagName==="FORM"){r.boosted=true;var n,i;if(t.tagName==="A"){n="get";i=l(t,"href");r.pushURL=true}else{var o=l(t,"method");n=o?o.toLowerCase():"get";if(n==="get"){r.pushURL=true}i=l(t,"action")}e.forEach(function(e){Ie(t,n,i,r,e,true)})}}function Te(e){return e.tagName==="FORM"||d(e,'input[type="submit"], button')&&L(e,"form")!==null||e.tagName==="A"&&e.href&&(e.getAttribute("href")==="#"||e.getAttribute("href").indexOf("#")!==0)}function He(e,t){return U(e).boosted&&e.tagName==="A"&&t.type==="click"&&(t.ctrlKey||t.metaKey)}function Ne(e,t){var r=e.eventFilter;if(r){try{return r(t)!==true}catch(e){ot(F().body,"htmx:eventFilter:error",{error:e,source:r.source});return true}}return false}function Ie(n,i,o,e,a,s){var u=n;if(a.from){u=w(a.from)}var l=function(e){if(!z(n)){u.removeEventListener(a.trigger,l);return}if(He(n,e)){return}if(s||Te(n)){e.preventDefault()}if(Ne(a,e)){return}var t=U(e);t.triggerSpec=a;if(t.handledFor==null){t.handledFor=[]}var r=U(n);if(t.handledFor.indexOf(n)<0){t.handledFor.push(n);if(a.consume){e.stopPropagation()}if(a.target&&e.target){if(!d(e.target,a.target)){return}}if(a.once){if(r.triggeredOnce){return}else{r.triggeredOnce=true}}if(a.changed){if(r.lastValue===n.value){return}else{r.lastValue=n.value}}if(r.delayed){clearTimeout(r.delayed)}if(r.throttle){return}if(a.throttle){if(!r.throttle){Zt(i,o,n,e);r.throttle=setTimeout(function(){r.throttle=null},a.throttle)}}else if(a.delay){r.delayed=setTimeout(function(){Zt(i,o,n,e)},a.delay)}else{Zt(i,o,n,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:a.trigger,listener:l,on:u});u.addEventListener(a.trigger,l)}var Me=false;var ke=null;function De(){if(!ke){ke=function(){Me=true};window.addEventListener("scroll",ke);setInterval(function(){if(Me){Me=false;j(F().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(e){Fe(e)})}},200)}}function Fe(e){var t=U(e);if(!t.revealed&&m(e)){t.revealed=true;if(t.initialized){Zt(t.verb,t.path,e)}else{e.addEventListener("htmx:afterProcessNode",function(){Zt(t.verb,t.path,e)},{once:true})}}}function Xe(e,t,r){var n=y(r);for(var i=0;i<n.length;i++){var o=n[i].split(/:(.+)/);if(o[0]==="connect"){Pe(e,o[1],0)}if(o[0]==="send"){je(e)}}}function Pe(s,r,n){if(!z(s)){return}if(r.indexOf("/")==0){var e=location.hostname+(location.port?":"+location.port:"");if(location.protocol=="https:"){r="wss://"+e+r}else if(location.protocol=="http:"){r="ws://"+e+r}}var t=k.createWebSocket(r);t.onerror=function(e){ot(s,"htmx:wsError",{error:e,socket:t});Ue(s)};t.onclose=function(e){if([1006,1012,1013].includes(e.code)){var t=ze(n);setTimeout(function(){Pe(s,r,n+1)},t)}};t.onopen=function(e){n=0};U(s).webSocket=t;t.addEventListener("message",function(e){if(Ue(s)){return}var t=e.data;st(s,function(e){t=e.transformResponse(t,null,s)});var r=Ft(s);var n=u(t);var i=p(n.children);for(var o=0;o<i.length;o++){var a=i[o];J(D(a,"hx-swap-oob")||"true",a,r)}mt(r.tasks)})}function Ue(e){if(!z(e)){U(e).webSocket.close();return true}}function je(l){var f=h(l,function(e){return U(e).webSocket!=null});if(f){l.addEventListener(Re(l)[0].trigger,function(e){var t=U(f).webSocket;var r=Nt(l,f);var n=Lt(l,"post");var i=n.errors;var o=n.values;var a=Vt(l);var s=V(o,a);var u=It(s,l);u["HEADERS"]=r;if(i&&i.length>0){lt(l,"htmx:validation:halted",i);return}t.send(JSON.stringify(u));if(Te(l)){e.preventDefault()}})}else{ot(l,"htmx:noWebSocketSourceError")}}function ze(e){var t=k.config.wsReconnectDelay;if(typeof t==="function"){return t(e)}if(t==="full-jitter"){var r=Math.min(e,6);var n=1e3*Math.pow(2,r);return n*Math.random()}ut('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function Ve(e,t,r){var n=y(r);for(var i=0;i<n.length;i++){var o=n[i].split(/:(.+)/);if(o[0]==="connect"){_e(e,o[1])}if(o[0]==="swap"){Be(e,o[1])}}}function _e(t,e){var r=k.createEventSource(e);r.onerror=function(e){ot(t,"htmx:sseError",{error:e,source:r});$e(t)};U(t).sseEventSource=r}function Be(o,a){var s=h(o,Je);if(s){var u=U(s).sseEventSource;var l=function(e){if($e(s)){u.removeEventListener(a,l);return}var t=e.data;st(o,function(e){t=e.transformResponse(t,null,o)});var r=kt(o);var n=_(o);var i=Ft(o);he(r.swapStyle,o,n,t,i);mt(i.tasks);lt(o,"htmx:sseMessage",e)};U(o).sseListener=l;u.addEventListener(a,l)}else{ot(o,"htmx:noSSESourceError")}}function We(e,t,r,n){var i=h(e,Je);if(i){var o=U(i).sseEventSource;var a=function(){if(!$e(i)){if(z(e)){Zt(t,r,e)}else{o.removeEventListener(n,a)}}};U(e).sseListener=a;o.addEventListener(n,a)}else{ot(e,"htmx:noSSESourceError")}}function $e(e){if(!z(e)){U(e).sseEventSource.close();return true}}function Je(e){return U(e).sseEventSource!=null}function Ze(e,t,r,n,i){var o=function(){if(!n.loaded){n.loaded=true;Zt(t,r,e)}};if(i){setTimeout(o,i)}else{o()}}function Ge(o,a,e){var t=false;j(r,function(n){if(s(o,"hx-"+n)){var i=D(o,"hx-"+n);t=true;a.path=i;a.verb=n;e.forEach(function(e){if(e.sseEvent){We(o,n,i,e.sseEvent)}else if(e.trigger==="revealed"){De();Fe(o)}else if(e.trigger==="intersect"){var t={};if(e.root){t.root=T(e.root)}if(e.threshold){t.threshold=parseFloat(e.threshold)}var r=new IntersectionObserver(function(e){for(var t=0;t<e.length;t++){var r=e[t];if(r.isIntersecting){lt(o,"intersect");break}}},t);r.observe(o);Ie(o,n,i,a,e)}else if(e.trigger==="load"){Ze(o,n,i,a,e.delay)}else if(e.pollInterval){a.polling=true;Oe(o,n,i,e.pollInterval)}else{Ie(o,n,i,a,e)}})}});return t}function Ke(e){if(e.type==="text/javascript"||e.type===""){try{Ut(e,function(){(1,eval)(e.innerText)})}catch(e){ut(e)}}}function Ye(e){if(d(e,"script")){Ke(e)}j(S(e,"script"),function(e){Ke(e)})}function Qe(){return document.querySelector("[hx-boost], [data-hx-boost]")}function et(e){if(e.querySelectorAll){var t=Qe()?", a, form":"";var r=e.querySelectorAll(n+t+", [hx-sse], [data-hx-sse], [hx-ws],"+" [data-hx-ws]");return r}else{return[]}}function tt(e){if(e.closest&&e.closest(k.config.disableSelector)){return}var t=U(e);if(!t.initialized){t.initialized=true;lt(e,"htmx:beforeProcessNode");if(e.value){t.lastValue=e.value}var r=Re(e);var n=Ge(e,t,r);if(!n&&X(e,"hx-boost")==="true"){Ae(e,t,r)}var i=D(e,"hx-sse");if(i){Ve(e,t,i)}var o=D(e,"hx-ws");if(o){Xe(e,t,o)}lt(e,"htmx:afterProcessNode")}}function rt(e){e=H(e);tt(e);j(et(e),function(e){tt(e)})}function nt(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function it(e,t){var r;if(window.CustomEvent&&typeof window.CustomEvent==="function"){r=new CustomEvent(e,{bubbles:true,cancelable:true,detail:t})}else{r=F().createEvent("CustomEvent");r.initCustomEvent(e,true,true,t)}return r}function ot(e,t,r){lt(e,t,V({error:t},r))}function at(e){return e==="htmx:afterProcessNode"}function st(e,t){j(tr(e),function(e){try{t(e)}catch(e){ut(e)}})}function ut(e){if(console.error){console.error(e)}else if(console.log){console.log("ERROR: ",e)}}function lt(e,t,r){e=H(e);if(r==null){r={}}r["elt"]=e;var n=it(t,r);if(k.logger&&!at(t)){k.logger(e,t,r)}if(r.error){ut(r.error);lt(e,"htmx:error",{errorInfo:r})}var i=e.dispatchEvent(n);var o=nt(t);if(i&&o!==t){var a=it(o,n.detail);i=i&&e.dispatchEvent(a)}st(e,function(e){i=i&&e.onEvent(t,n)!==false});return i}var ft=null;function ct(){var e=F().querySelector("[hx-history-elt],[data-hx-history-elt]");return e||F().body}function ht(e,t,r,n){var i=x(localStorage.getItem("htmx-history-cache"))||[];for(var o=0;o<i.length;o++){if(i[o].url===e){i.splice(o,1);break}}i.push({url:e,content:t,title:r,scroll:n});while(i.length>k.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem("htmx-history-cache",JSON.stringify(i));break}catch(e){ot(F().body,"htmx:historyCacheError",{cause:e,cache:i});i.shift()}}}function dt(e){var t=x(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r<t.length;r++){if(t[r].url===e){return t[r]}}return null}function vt(e){var t=k.config.requestClass;var r=e.cloneNode(true);j(S(r,"."+t),function(e){R(e,t)});return r.innerHTML}function gt(){var e=ct();var t=ft||location.pathname+location.search;lt(F().body,"htmx:beforeHistorySave",{path:t,historyElt:e});if(k.config.historyEnabled)history.replaceState({htmx:true},F().title,window.location.href);ht(t,vt(e),F().title,window.scrollY)}function pt(e){if(k.config.historyEnabled)history.pushState({htmx:true},"",e);ft=e}function mt(e){j(e,function(e){e.call()})}function yt(n){var e=new XMLHttpRequest;var i={path:n,xhr:e};lt(F().body,"htmx:historyCacheMiss",i);e.open("GET",n,true);e.setRequestHeader("HX-History-Restore-Request","true");e.onload=function(){if(this.status>=200&&this.status<400){lt(F().body,"htmx:historyCacheMissLoad",i);var e=u(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=ct();var r=Ft(t);se(t,e,r);mt(r.tasks);ft=n;lt(F().body,"htmx:historyRestore",{path:n})}else{ot(F().body,"htmx:historyCacheMissLoadError",i)}};e.send()}function xt(e){gt();e=e||location.pathname+location.search;var t=dt(e);if(t){var r=u(t.content);var n=ct();var i=Ft(n);se(n,r,i);mt(i.tasks);document.title=t.title;window.scrollTo(0,t.scroll);ft=e;lt(F().body,"htmx:historyRestore",{path:e})}else{if(k.config.refreshOnHistoryMiss){window.location.reload(true)}else{yt(e)}}}function bt(e){var t=X(e,"hx-push-url");return t&&t!=="false"||U(e).boosted&&U(e).pushURL}function wt(e){var t=X(e,"hx-push-url");return t==="true"||t==="false"?null:t}function St(e){var t=X(e,"hx-indicator");if(t){var r=A(e,t)}else{r=[e]}j(r,function(e){e.classList["add"].call(e.classList,k.config.requestClass)});return r}function Et(e){j(e,function(e){e.classList["remove"].call(e.classList,k.config.requestClass)})}function qt(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(n.isSameNode(t)){return true}}return false}function Rt(e){if(e.name===""||e.name==null||e.disabled){return false}if(e.type==="button"||e.type==="submit"||e.tagName==="image"||e.tagName==="reset"||e.tagName==="file"){return false}if(e.type==="checkbox"||e.type==="radio"){return e.checked}return true}function Ct(t,r,n,e,i){if(e==null||qt(t,e)){return}else{t.push(e)}if(Rt(e)){var o=l(e,"name");var a=e.value;if(e.multiple){a=p(e.querySelectorAll("option:checked")).map(function(e){return e.value})}if(e.files){a=p(e.files)}if(o!=null&&a!=null){var s=r[o];if(s){if(Array.isArray(s)){if(Array.isArray(a)){r[o]=s.concat(a)}else{s.push(a)}}else{if(Array.isArray(a)){r[o]=[s].concat(a)}else{r[o]=[s,a]}}}else{r[o]=a}}if(i){Ot(e,n)}}if(d(e,"form")){var u=e.elements;j(u,function(e){Ct(t,r,n,e,i)})}}function Ot(e,t){if(e.willValidate){lt(e,"htmx:validation:validate");if(!e.checkValidity()){t.push({elt:e,message:e.validationMessage,validity:e.validity});lt(e,"htmx:validation:failed",{message:e.validationMessage,validity:e.validity})}}}function Lt(e,t){var r=[];var n={};var i={};var o=[];var a=d(e,"form")&&e.noValidate!==true;if(t!=="get"){Ct(r,i,o,L(e,"form"),a)}Ct(r,n,o,e,a);var s=X(e,"hx-include");if(s){var u=A(e,s);j(u,function(e){Ct(r,n,o,e,a);if(!d(e,"form")){j(e.querySelectorAll(qe),function(e){Ct(r,n,o,e,a)})}})}n=V(n,i);return{errors:o,values:n}}function At(e,t,r){if(e!==""){e+="&"}e+=encodeURIComponent(t)+"="+encodeURIComponent(r);return e}function Tt(e){var t="";for(var r in e){if(e.hasOwnProperty(r)){var n=e[r];if(Array.isArray(n)){j(n,function(e){t=At(t,r,e)})}else{t=At(t,r,n)}}}return t}function Ht(e){var t=new FormData;for(var r in e){if(e.hasOwnProperty(r)){var n=e[r];if(Array.isArray(n)){j(n,function(e){t.append(r,e)})}else{t.append(r,n)}}}return t}function Nt(e,t,r){var n={"HX-Request":"true","HX-Trigger":l(e,"id"),"HX-Trigger-Name":l(e,"name"),"HX-Target":D(t,"id"),"HX-Current-URL":F().location.href};Pt(e,"hx-headers",false,n);if(r!==undefined){n["HX-Prompt"]=r}return n}function It(t,e){var r=X(e,"hx-params");if(r){if(r==="none"){return{}}else if(r==="*"){return t}else if(r.indexOf("not ")===0){j(r.substr(4).split(","),function(e){e=e.trim();delete t[e]});return t}else{var n={};j(r.split(","),function(e){e=e.trim();n[e]=t[e]});return n}}else{return t}}function Mt(e){return l(e,"href")&&l(e,"href").indexOf("#")>=0}function kt(e){var t=X(e,"hx-swap");var r={swapStyle:U(e).boosted?"innerHTML":k.config.defaultSwapStyle,swapDelay:k.config.defaultSwapDelay,settleDelay:k.config.defaultSettleDelay};if(U(e).boosted&&!Mt(e)){r["show"]="top"}if(t){var n=y(t);if(n.length>0){r["swapStyle"]=n[0];for(var i=1;i<n.length;i++){var o=n[i];if(o.indexOf("swap:")===0){r["swapDelay"]=f(o.substr(5))}if(o.indexOf("settle:")===0){r["settleDelay"]=f(o.substr(7))}if(o.indexOf("scroll:")===0){r["scroll"]=o.substr(7)}if(o.indexOf("show:")===0){r["show"]=o.substr(5)}}}}return r}function Dt(t,r,n){var i=null;st(r,function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{if(X(r,"hx-encoding")==="multipart/form-data"){return Ht(n)}else{return Tt(n)}}}function Ft(e){return{tasks:[],elts:[e]}}function Xt(e,t){var r=e[0];var n=e[e.length-1];if(t.scroll){if(t.scroll==="top"&&r){r.scrollTop=0}if(t.scroll==="bottom"&&n){n.scrollTop=n.scrollHeight}}if(t.show){if(t.show==="top"&&r){r.scrollIntoView(true)}if(t.show==="bottom"&&n){n.scrollIntoView(false)}}}function Pt(e,t,r,n){if(n==null){n={}}if(e==null){return n}var i=D(e,t);if(i){var o=i.trim();var a=r;if(o.indexOf("javascript:")===0){o=o.substr(11);a=true}if(o.indexOf("{")!==0){o="{"+o+"}"}var s;if(a){s=Ut(e,function(){return Function("return ("+o+")")()},{})}else{s=x(o)}for(var u in s){if(s.hasOwnProperty(u)){if(n[u]==null){n[u]=s[u]}}}}return Pt(c(e),t,r,n)}function Ut(e,t,r){if(k.config.allowEval){return t()}else{ot(e,"htmx:evalDisallowedError");return r}}function jt(e,t){return Pt(e,"hx-vars",true,t)}function zt(e,t){return Pt(e,"hx-vals",false,t)}function Vt(e){return V(jt(e),zt(e))}function _t(t,r,n){if(n!==null){try{t.setRequestHeader(r,n)}catch(e){t.setRequestHeader(r,encodeURIComponent(n));t.setRequestHeader(r+"-URI-AutoEncoded","true")}}}function Bt(t){if(t.responseURL&&typeof URL!=="undefined"){try{var e=new URL(t.responseURL);return e.pathname+e.search}catch(e){ot(F().body,"htmx:badResponseUrl",{url:t.responseURL})}}}function Wt(e,t){return e.getAllResponseHeaders().match(t)}function $t(e,t,r){if(r){if(r instanceof Element||a(r,"String")){return Zt(e,t,null,null,{targetOverride:H(r)})}else{return Zt(e,t,H(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:H(r.target)})}}else{return Zt(e,t)}}function Jt(e){var t=[];while(e){t.push(e);e=e.parentElement}return t}function Zt(e,t,n,r,i){var o=null;var a=null;i=i!=null?i:{};if(typeof Promise!=="undefined"){var s=new Promise(function(e,t){o=e;a=t})}if(n==null){n=F().body}var u=i.handler||Gt;if(!z(n)){return}var l=i.targetOverride||_(n);if(l==null){ot(n,"htmx:targetError",{target:D(n,"hx-target")});return}var f=U(n);if(f.requestInFlight){var c="last";var h=U(r);if(h&&h.triggerSpec&&h.triggerSpec.queue){c=h.triggerSpec.queue}if(f.queuedRequests==null){f.queuedRequests=[]}if(c==="first"&&f.queuedRequests.length===0){f.queuedRequests.push(function(){Zt(e,t,n,r)})}else if(c==="all"){f.queuedRequests.push(function(){Zt(e,t,n,r)})}else if(c==="last"){f.queuedRequests=[];f.queuedRequests.push(function(){Zt(e,t,n,r)})}return}else{f.requestInFlight=true}var d=function(){f.requestInFlight=false;if(f.queuedRequests!=null&&f.queuedRequests.length>0){var e=f.queuedRequests.shift();e()}};var v=X(n,"hx-prompt");if(v){var g=prompt(v);if(g===null||!lt(n,"htmx:prompt",{prompt:g,target:l})){P(o);d();return s}}var p=X(n,"hx-confirm");if(p){if(!confirm(p)){P(o);d();return s}}var m=new XMLHttpRequest;var y=Nt(n,l,g);if(i.headers){y=V(y,i.values)}var x=Lt(n,e);var b=x.errors;var w=x.values;if(i.values){w=V(w,i.values)}var S=Vt(n);var E=V(w,S);var q=It(E,n);if(e!=="get"&&X(n,"hx-encoding")==null){y["Content-Type"]="application/x-www-form-urlencoded; charset=UTF-8"}if(t==null||t===""){t=F().location.href}var R={parameters:q,unfilteredParameters:E,headers:y,target:l,verb:e,errors:b,path:t,triggeringEvent:r};if(!lt(n,"htmx:configRequest",R)){P(o);d();return s}t=R.path;e=R.verb;y=R.headers;q=R.parameters;b=R.errors;if(b&&b.length>0){lt(n,"htmx:validation:halted",R);P(o);d();return s}var C=t.split("#");var O=C[0];var L=C[1];if(e==="get"){var A=O;var T=Object.keys(q).length!==0;if(T){if(A.indexOf("?")<0){A+="?"}else{A+="&"}A+=Tt(q);if(L){A+="#"+L}}m.open("GET",A,true)}else{m.open(e.toUpperCase(),t,true)}m.overrideMimeType("text/html");m.withCredentials=k.config.withCredentials;for(var H in y){if(y.hasOwnProperty(H)){var N=y[H];_t(m,H,N)}}var I={xhr:m,target:l,requestConfig:R,pathInfo:{path:t,finalPath:A,anchor:L}};m.onload=function(){try{var e=Jt(n);u(n,I);Et(M);lt(n,"htmx:afterRequest",I);lt(n,"htmx:afterOnLoad",I);if(!z(n)){var t=null;while(e.length>0&&t==null){var r=e.shift();if(z(r)){t=r}}if(t){lt(t,"htmx:afterRequest",I);lt(t,"htmx:afterOnLoad",I)}}P(o);d()}catch(e){ot(n,"htmx:onLoadError",V({error:e},I));throw e}};m.onerror=function(){Et(M);ot(n,"htmx:afterRequest",I);ot(n,"htmx:sendError",I);P(a);d()};m.onabort=function(){Et(M);ot(n,"htmx:afterRequest",I);ot(n,"htmx:sendAbort",I);P(a);d()};if(!lt(n,"htmx:beforeRequest",I)){P(o);d();return s}var M=St(n);j(["loadstart","loadend","progress","abort"],function(t){j([m,m.upload],function(e){e.addEventListener(t,function(e){lt(n,"htmx:xhr:"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});lt(n,"htmx:beforeSend",I);m.send(e==="get"?null:Dt(m,n,q));return s}function Gt(a,s){var u=s.xhr;var l=s.target;if(!lt(a,"htmx:beforeOnLoad",s))return;if(Wt(u,/HX-Trigger:/i)){de(u,"HX-Trigger",a)}if(Wt(u,/HX-Push:/i)){var f=u.getResponseHeader("HX-Push")}if(Wt(u,/HX-Redirect:/i)){window.location.href=u.getResponseHeader("HX-Redirect");return}if(Wt(u,/HX-Refresh:/i)){if("true"===u.getResponseHeader("HX-Refresh")){location.reload();return}}var c=bt(a)||f;if(u.status>=200&&u.status<400){if(u.status===286){Ce(a)}if(u.status!==204){if(!lt(l,"htmx:beforeSwap",s))return;var h=u.response;st(a,function(e){h=e.transformResponse(h,u,a)});if(c){gt()}var d=kt(a);l.classList.add(k.config.swappingClass);var e=function(){try{var e=document.activeElement;var t={};try{t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null}}catch(e){}var r=Ft(l);he(d.swapStyle,l,a,h,r);if(t.elt&&!z(t.elt)&&t.elt.id){var n=document.getElementById(t.elt.id);if(n){if(t.start&&n.setSelectionRange){n.setSelectionRange(t.start,t.end)}n.focus()}}l.classList.remove(k.config.swappingClass);j(r.elts,function(e){if(e.classList){e.classList.add(k.config.settlingClass)}lt(e,"htmx:afterSwap",s)});if(s.pathInfo.anchor){location.hash=s.pathInfo.anchor}if(Wt(u,/HX-Trigger-After-Swap:/i)){var i=a;if(!z(a)){i=F().body}de(u,"HX-Trigger-After-Swap",i)}var o=function(){j(r.tasks,function(e){e.call()});j(r.elts,function(e){if(e.classList){e.classList.remove(k.config.settlingClass)}lt(e,"htmx:afterSettle",s)});if(c){var e=f||wt(a)||Bt(u)||s.pathInfo.finalPath||s.pathInfo.path;pt(e);lt(F().body,"htmx:pushedIntoHistory",{path:e})}Xt(r.elts,d);if(Wt(u,/HX-Trigger-After-Settle:/i)){var t=a;if(!z(a)){t=F().body}de(u,"HX-Trigger-After-Settle",t)}};if(d.settleDelay>0){setTimeout(o,d.settleDelay)}else{o()}}catch(e){ot(a,"htmx:swapError",s);throw e}};if(d.swapDelay>0){setTimeout(e,d.swapDelay)}else{e()}}}else{ot(a,"htmx:responseError",V({error:"Response Status Error Code "+u.status+" from "+s.pathInfo.path},s))}}var Kt={};function Yt(){return{onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function Qt(e,t){Kt[e]=V(Yt(),t)}function er(e){delete Kt[e]}function tr(e,r,n){if(e==undefined){return r}if(r==undefined){r=[]}if(n==undefined){n=[]}var t=D(e,"hx-ext");if(t){j(t.split(","),function(e){e=e.replace(/ /g,"");if(e.slice(0,7)=="ignore:"){n.push(e.slice(7));return}if(n.indexOf(e)<0){var t=Kt[e];if(t&&r.indexOf(t)<0){r.push(t)}}})}return tr(c(e),r,n)}function rr(e){if(F().readyState!=="loading"){e()}else{F().addEventListener("DOMContentLoaded",e)}}function nr(){if(k.config.includeIndicatorStyles!==false){F().head.insertAdjacentHTML("beforeend","<style> ."+k.config.indicatorClass+"{opacity:0;transition: opacity 200ms ease-in;} ."+k.config.requestClass+" ."+k.config.indicatorClass+"{opacity:1} ."+k.config.requestClass+"."+k.config.indicatorClass+"{opacity:1} </style>")}}function ir(){var e=F().querySelector('meta[name="htmx-config"]');if(e){return x(e.content)}else{return null}}function or(){var e=ir();if(e){k.config=V(k.config,e)}}rr(function(){or();nr();var e=F().body;rt(e);window.onpopstate=function(e){if(e.state&&e.state.htmx){xt()}};setTimeout(function(){lt(e,"htmx:load",{})},0)});return k}()}); -------------------------------------------------------------------------------- /templates/authors/authors.html: -------------------------------------------------------------------------------- 1 | {% extends "shared/_layout.html" %} 2 | {% block main_content %} 3 | 4 | <div class="container"> 5 | <div></div> 6 | <div class="container-center"> 7 | <h2>Authors in My Library</h2> 8 | {% for author in authors %} 9 | <div> 10 | <strong>Name:</strong> {{ author.first_name }} {{ author.last_name }} <strong>Email:</strong> {{ author.email }} 11 | </div> 12 | <p> 13 | {% set author_id=author.id %} 14 | {% include 'authors/partials/show_books.html' %} 15 | </p> 16 | {% endfor %} 17 | <div> 18 | <br> 19 | {% include 'authors/partials/show_add_author_form.html' %} 20 | <br><br><br><br><br> 21 | </div> 22 | </div> 23 | <div></div> 24 | </div> 25 | 26 | {% endblock %} -------------------------------------------------------------------------------- /templates/authors/partials/add_authors_form.html: -------------------------------------------------------------------------------- 1 | <form class="author-form form-container" 2 | hx-target="this" 3 | hx-swap="outerHTML" 4 | hx-post="/authors/add"> 5 | 6 | <input type="text" class="form-control" name="first_name" placeholder="First Name" required/> 7 | <input type="text" class="form-control" name="last_name" placeholder="Last Name" required/><br> 8 | <input type="email" class="form-control" name="email" placeholder="Email Address" required> 9 | <br> 10 | <button type="submit">Create</button> 11 | 12 | <button 13 | hx-get="/authors/cancel_add" 14 | hx-target=".author-form" 15 | >Cancel</button> 16 | </form> -------------------------------------------------------------------------------- /templates/authors/partials/authors_books.html: -------------------------------------------------------------------------------- 1 | <div id="author-books-{{author_id}}"> 2 | <ol> 3 | {% for book in books %} 4 | <li class="no-list-style"><strong>Title:</strong> {{ book.title }} {{ book.pages}} pages.</li> 5 | {% endfor %} 6 | </ol> 7 | <button 8 | hx-get="/authors/close_books/{{author_id}}" 9 | hx-target="#author-books-{{author_id}}" 10 | > 11 | Close 12 | </button> 13 | </div> 14 | 15 | -------------------------------------------------------------------------------- /templates/authors/partials/show_add_author_form.html: -------------------------------------------------------------------------------- 1 | <a hx-get="/author/add" 2 | hx-swap="outerHTML" 3 | ><i class="fas fa-plus-circle"></i> Add a new author</a> -------------------------------------------------------------------------------- /templates/authors/partials/show_books.html: -------------------------------------------------------------------------------- 1 | <a hx-get="/author/books/{{author_id}}" 2 | hx-swap="outerHTML" 3 | ><i class="fas fa-plus-circle"></i> Show books</a> -------------------------------------------------------------------------------- /templates/books/books.html: -------------------------------------------------------------------------------- 1 | {% extends "shared/_layout.html" %} 2 | {% block main_content %} 3 | 4 | <div class="container"> 5 | <div></div> 6 | <div class="container-center"> 7 | <h3> 8 | Search Books 9 | <span class="htmx-indicator"> 10 | <img src="/static/img/bars.svg"/> Searching... 11 | </span> 12 | </h3> 13 | <input class="form-control" type="text" 14 | name="search_text" placeholder="Search by Title or Author's name..." 15 | value="{{ search_text }}" 16 | hx-get="/books/search" 17 | hx-trigger="keyup changed delay:500ms" 18 | hx-target="#search-results" 19 | hx-push-url="true" 20 | hx-indicator=".htmx-indicator"> 21 | 22 | {% include 'books/partials/search_results.html' %} 23 | 24 | </div> 25 | <div></div> 26 | </div> 27 | 28 | {% endblock %} -------------------------------------------------------------------------------- /templates/books/partials/add_books_form.html: -------------------------------------------------------------------------------- 1 | <div id="swapable-content"></div> 2 | <form id="library-form" class="library-form fade-me-in fade-me-out" hx-swap="outerHTML" hx-target="#swapable-content" action="/books/add" method="POST"> 3 | 4 | <input type="text" class="form-control" name="title" placeholder="Book title" required/> 5 | <input type="text" class="form-control" name="pages" placeholder="Number of pages" required/><br> 6 | <label for="author_id">Choose an author:</label> 7 | 8 | <select name="author_id" id="author_id-select" required> 9 | <option value="">--Please choose an option--</option> 10 | {% for author in data.authors %} 11 | <option value={{ author.id}}> {{author.first_name }} {{ author.last_name}} </option> 12 | {% endfor %} 13 | </select> 14 | <br> 15 | <button type="submit">Create</button> 16 | 17 | <button 18 | hx-get="/books/cancel_add" 19 | hx-target="#library-form" 20 | >Cancel</button> 21 | <button 22 | hx-get="/author/add" 23 | hx-target="#library-form" 24 | >Add Author</button> 25 | 26 | </form> -------------------------------------------------------------------------------- /templates/books/partials/search_results.html: -------------------------------------------------------------------------------- 1 | <table class="table" id="search-results"> 2 | <thead> 3 | <tr> 4 | <th>Title</th> 5 | <th>Author</th> 6 | <th>Pages</th> 7 | </tr> 8 | </thead> 9 | <tbody> 10 | {% for book in books %} 11 | <tr> 12 | <td>{{ book.title }}</td> 13 | <td>{{ book.author.first_name }} {{ book.author.last_name }}</td> 14 | <td>{{ book.pages }}</td> 15 | </tr> 16 | {% endfor %} 17 | </tbody> 18 | </table> -------------------------------------------------------------------------------- /templates/books/partials/show_add_form.html: -------------------------------------------------------------------------------- 1 | <a hx-get="/books/add" 2 | hx-swap="outerHTML swap:.5s" 3 | class="fade-me-out" 4 | ><i class="fas fa-plus-circle"></i> Add a new book</a> -------------------------------------------------------------------------------- /templates/home/index.html: -------------------------------------------------------------------------------- 1 | {% extends "shared/_layout.html" %} 2 | {% block main_content %} 3 | <div class="container"> 4 | <div></div> 5 | <div class="container-center"> 6 | <h1>Personal Library</h1> 7 | <div id="content"> 8 | {% if books|length %} 9 | {% for book in books %} 10 | <p>Title: {{ book.title }} Author: {{ book.author_name}}</p> 11 | {% endfor %} 12 | {% else %} 13 | <p>Such empty...</p> 14 | {% endif %} 15 | </div> 16 | <div > 17 | {% include 'books/partials/show_add_form.html' %} 18 | </div> 19 | </div> 20 | <div></div> 21 | 22 | </div> 23 | 24 | {% endblock %} -------------------------------------------------------------------------------- /templates/shared/_layout.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html lang="en"> 3 | <head> 4 | <meta charset="UTF-8"> 5 | <title>{% block title %}Personal Library - FastAPI & HTMX Demo App{% endblock %} 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | {% block additional_css %}{% endblock %} 15 | 16 | 17 | 18 | 27 | 28 |
29 | {% block main_content %}{% endblock %} 30 |
31 | 32 |
33 | 36 |
37 | 38 | 39 | 40 | 41 | {% block additional_js %}{% endblock %} 42 | 43 | 44 | -------------------------------------------------------------------------------- /viewmodels/authors/addauthorviewmodel.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from viewmodels.shared.viewmodelbase import ViewModelBase 6 | 7 | 8 | class AddAuthorViewModel(ViewModelBase): 9 | def __init__(self): 10 | super().__init__() 11 | 12 | self.first_name: Optional[str] = None 13 | self.last_name: Optional[int] = None 14 | self.email: Optional[str] = None 15 | 16 | def restore_from_form(self): 17 | d = self.request_dict 18 | self.first_name = d.get('first_name') 19 | self.last_name = d.get('last_name') 20 | self.email = d.get('email') 21 | -------------------------------------------------------------------------------- /viewmodels/authors/authorbooks.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from services import db_service 6 | from schema.schema import Book 7 | 8 | from viewmodels.shared.viewmodelbase import ViewModelBase 9 | 10 | 11 | class AuthorBooksViewModel(ViewModelBase): 12 | def __init__(self, db: Session, author_id: int): 13 | super().__init__() 14 | author = db_service.get_author(db=db, author_id=author_id) 15 | print(f"author {author}") 16 | self.books: List[Book] = author.books 17 | self.author = author 18 | -------------------------------------------------------------------------------- /viewmodels/authors/showauthors.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from services import db_service 6 | from schema.schema import Author 7 | 8 | from viewmodels.shared.viewmodelbase import ViewModelBase 9 | 10 | 11 | class ShowAuthorsViewModel(ViewModelBase): 12 | def __init__(self, db: Session): 13 | super().__init__() 14 | self.authors: List[Author] = db_service.get_all_authors(db=db) 15 | 16 | 17 | -------------------------------------------------------------------------------- /viewmodels/books/addbookviewmodel.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from viewmodels.shared.viewmodelbase import ViewModelBase 6 | from services import db_service as dbs 7 | 8 | 9 | class AddBookViewModel(ViewModelBase): 10 | def __init__(self, db: Session): 11 | super().__init__() 12 | 13 | self.author_id: Optional[int] = None 14 | self.id: Optional[int] = None 15 | self.title: Optional[str] = None 16 | self.pages: Optional[int] = None 17 | self.db = db 18 | self.authors = dbs.get_authors(db) 19 | 20 | def restore_from_form(self): 21 | d = self.request_dict 22 | self.title = d.get('title') 23 | self.pages = d.get('pages') 24 | self.id = d.get('id') 25 | self.author_id = d.get('author_id') 26 | -------------------------------------------------------------------------------- /viewmodels/books/searchbooks.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from services import db_service 6 | from schema.schema import Book 7 | from viewmodels.shared.viewmodelbase import ViewModelBase 8 | 9 | 10 | class SearchViewModel(ViewModelBase): 11 | def __init__(self, db: Session, search_text: str): 12 | super().__init__() 13 | 14 | self.books: List[Book] = [] 15 | self.search_text = search_text.strip().lower() 16 | 17 | if self.search_text and self.search_text.strip() and len(self.search_text.strip()) > 1: 18 | self.books = db_service.search_books(db=db, search_text=self.search_text) 19 | else: 20 | self.books = db_service.list_books(db=db) 21 | -------------------------------------------------------------------------------- /viewmodels/books/showbooks.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from services import db_service 6 | from schema.schema import Book 7 | from viewmodels.shared.viewmodelbase import ViewModelBase 8 | 9 | 10 | class ShowBooksViewModel(ViewModelBase): 11 | def __init__(self, db: Session): 12 | super().__init__() 13 | self.books: List[Book] = db_service.list_books(db=db, skip=0, limit=1000) 14 | -------------------------------------------------------------------------------- /viewmodels/home/homeviewmodel.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | from sqlalchemy.orm import Session 4 | 5 | from services import db_service 6 | from schema.schema import Book, Author 7 | 8 | from viewmodels.shared.viewmodelbase import ViewModelBase 9 | 10 | 11 | class HomeViewModel(ViewModelBase): 12 | def __init__(self, db: Session): 13 | super().__init__() 14 | self.books: List[Book] = db_service.list_books(db=db) 15 | -------------------------------------------------------------------------------- /viewmodels/shared/viewmodelbase.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | import fastapi 4 | from fastapi import Request 5 | 6 | 7 | class ViewModelBase: 8 | def __init__(self): 9 | self.request: Request = fastapi.requests 10 | self.error: Optional[str] = None 11 | self.view_model = self.to_dict() 12 | 13 | def to_dict(self): 14 | return self.__dict__ 15 | --------------------------------------------------------------------------------