[
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "{\n    \"name\": \"ACADEMIC PAGES\",\n    \"dockerComposeFile\": \"../docker-compose.yaml\",\n    \"service\": \"jekyll-site\",\n    \"remoteEnv\": {\n        \"VSCODE_SERVER_DIR\": \"/home/vscode/.vscode-server\"\n    },\n    \"runArgs\": [\n        \"--user\",\n        \"1000:1000\"\n    ],\n    \"workspaceFolder\": \"/usr/src/app\",\n    \"remoteUser\": \"vscode\",\n    \"forwardPorts\": [4000] // Add port forwarding\n}\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is, be sure to note if the issue is presenet in the *template* or appeared on *your site*. If the bug appears on your site, please be sure to provide a link to your repository.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Browser (please complete the following information):**\n - Device: [e.g. iPhone6] (if applicable)\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/workflows/scrape_talks.yml",
    "content": "name: Scrape Talk Locations\n\non:\n  push:\n    paths:\n      - 'talks/**'\n      - '_talks/**'\n      - 'talkmap.ipynb'\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write           # This workflow pushes to the repository\n\n    steps:\n    - uses: actions/checkout@v2\n\n    - name: Set up Python\n      uses: actions/setup-python@v2\n      with:\n        python-version: '3.9'   # Specify the Python version you need\n\n    - name: Install dependencies\n      run: |\n        pip install jupyter pandas requests beautifulsoup4 geopy  # Add other dependencies as needed\n        pip install getorg --upgrade\n\n    - name: Run Jupyter Notebook\n      run: |\n        jupyter nbconvert --to notebook --execute talkmap.ipynb --output talkmap_out.ipynb\n\n    - name: Commit changes\n      run: |\n        git config user.name \"github-actions[bot]\"\n        git config user.email \"github-actions[bot]@users.noreply.github.com\"\n        git add .\n        git commit -m \"Automated update of talk locations\" || echo \"No changes to commit\"\n        git push\n"
  },
  {
    "path": ".gitignore",
    "content": "# Ignore the contents of the _site directory and other cache directories\n_site/\n.sass-cache/\n\n# Ignore the directory for local files during development\nlocal/\n\n# Ignore the Gemfile that is generated\nGemfile.lock\n\n# Ignore files created by npm\nnode_modules\npackage-lock.json\n\n# Ignore the vendor file at root level and bundle for alternative installation\n/vendor/\n.bundle/\n\n# Ignore folders related to IDEs\n.vscode/\n\n# Ignore files created by MacOS\n.DS_Store\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "Contributions are welcome! \n\nPlease add issues and make pull requests. There are no stupid questions. All ideas are welcome. This is a volunteer project. Be excellent to each other.\n\nBug reports and feature requests to the template  should be [submitted via GitHub](https://github.com/academicpages/academicpages.github.io/issues/new/choose). For questions concerning how to style the template, please feel free to start a [new discussion on GitHub](https://github.com/academicpages/academicpages.github.io/discussions).\n\nFork from master and go from there. Remember that this repository is intended to remain a generic, ready-to-fork template that demonstrates the features of academicpages.\n\n"
  },
  {
    "path": "Dockerfile",
    "content": "# Base image: Ruby with necessary dependencies for Jekyll\nFROM ruby:3.2\n\n# Install dependencies\nRUN apt-get update && apt-get install -y \\\n    build-essential \\\n    nodejs \\\n    && rm -rf /var/lib/apt/lists/*\n\n\n# Create a non-root user with UID 1000\nRUN groupadd -g 1000 vscode && \\\n    useradd -m -u 1000 -g vscode vscode\n\n# Set the working directory\nWORKDIR /usr/src/app\n\n# Set permissions for the working directory\nRUN chown -R vscode:vscode /usr/src/app\n\n# Switch to the non-root user\nUSER vscode\n\n# Copy Gemfile into the container (necessary for `bundle install`)\nCOPY Gemfile ./\n\n\n\n# Install bundler and dependencies\nRUN gem install connection_pool:2.5.0\nRUN gem install bundler:2.3.26\nRUN bundle install\n\n# Command to serve the Jekyll site\nCMD [\"jekyll\", \"serve\", \"-H\", \"0.0.0.0\", \"-w\", \"--config\", \"_config.yml,_config_docker.yml\"]\n"
  },
  {
    "path": "Gemfile",
    "content": "source 'https://rubygems.org'\n\ngroup :jekyll_plugins do\n  gem 'jekyll'\n  gem 'jekyll-feed'\n  gem 'jekyll-sitemap'\n  gem 'jekyll-redirect-from'\n  gem 'jemoji'\n  gem 'webrick', '~> 1.8'\nend\n\ngem 'github-pages'\ngem 'connection_pool', '2.5.0'\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 Michael Rose\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "# Academic Pages\n**Academic Pages is a GitHub Pages template for personal and professional portfolio-oriented websites.**\n\n![Academic Pages template example](images/themes/homepage-light.png \"Academic Pages template example\")\n\n# Getting Started\n\n1. Register a GitHub account if you don't have one and confirm your e-mail (required!)\n1. Click the \"Use this template\" button in the top right.\n1. On the \"New repository\" page, enter your public repository name as \"[your GitHub username].github.io\", which will also be your website's URL.\n1. Edit site-wide configuration in `_config.yml` and double check that the `url` is the one that you just selected in the previous step and that `repository` reflects the correct path for your repository.\n1. Add your site content, upload any files (like PDFs, .zip files, etc.) to the `files/` directory. They will appear at https://[your GitHub username].github.io/files/example.pdf.\n1. Check status by going to the repository settings, in the \"GitHub pages\" section\n1. (Optional) Use the Jupyter notebooks or python scripts in the `markdown_generator` folder to generate markdown files for publications and talks from a TSV file.\n\nSee more info at https://academicpages.github.io/\n\n### Additional Tutorials\n\nAdditional tutorials for working with the Academic Pages template can be found at the following sites:\n- https://jayrobwilliams.com/posts/2020/06/academic-website/\n\n## Running locally\n\nWhen you are initially working on your website, it is very useful to be able to preview the changes locally before pushing them to GitHub. To work locally you will need to:\n\n1. Clone the repository and made updates as detailed above.\n\n### Using a different IDE\n1. Make sure you have ruby-dev, bundler, and nodejs installed\n    \n    On most Linux distribution and [Windows Subsystem Linux](https://learn.microsoft.com/en-us/windows/wsl/about) the command is:\n    ```bash\n    sudo apt install ruby-dev ruby-bundler nodejs\n    ```\n    If you see error `Unable to locate package ruby-bundler`, `Unable to locate package nodejs `, run the following:\n    ```bash\n    sudo apt update && sudo apt upgrade -y\n    ```\n    then try run `sudo apt install ruby-dev ruby-bundler nodejs` again.\n\n    On MacOS the commands are:\n    ```bash\n    brew install ruby\n    brew install node\n    gem install bundler\n    ```\n1. Run `bundle install` to install ruby dependencies. If you get errors, delete Gemfile.lock and try again.\n\n    If you see file permission error like `Fetching bundler-2.6.3.gem ERROR:  While executing gem (Gem::FilePermissionError) You don't have write permissions for the /var/lib/gems/3.2.0 directory.` or `Bundler::PermissionError: There was an error while trying to write to /usr/local/bin.`\n    Install Gems Locally (Recommended):\n    ```bash\n    bundle config set --local path 'vendor/bundle'\n    ```\n    then try run `bundle install` again. If succeeded, you should see a folder called `vendor` and `.bundle`.\n\n1. Run `jekyll serve -l -H localhost` to generate the HTML and serve it from `localhost:4000` the local server will automatically rebuild and refresh the pages on change to Markdown (*.md) and HTML files, while changes to the core template and configuration (i.e., `_config.yml`) will require stopping and restarting Jekyll.\n    You may also try `bundle exec jekyll serve -l -H localhost` to ensure jekyll to use specific dependencies on your own local machine.\n\nIf you are running on Linux it may be necessary to install some additional dependencies prior to being able to run locally: `sudo apt install build-essential gcc make`\n\n## Using Docker\n\nWorking from a different OS, or just want to avoid installing dependencies? You can use the provided `Dockerfile` to build a container that will run the site for you if you have [Docker](https://www.docker.com/) installed.\n\nYou can build and execute the container by running the following command in the repository:\n\n```bash\nchmod -R 777 .\ndocker compose up\n```\n\nYou should now be able to access the website from `localhost:4000`.\n\n### Using the DevContainer in VS Code\n\nIf you are using [Visual Studio Code](https://code.visualstudio.com/) you can use the [Dev Container](https://code.visualstudio.com/docs/devcontainers/containers) that comes with this Repository. Normally VS Code detects that a development container configuration is available and asks you if you want to use the container. If this doesn't happen you can manually start the container by **F1->DevContainer: Reopen in Container**. This restarts your VS Code in the container and automatically hosts your academic page locally on http://localhost:4000. All changes will be updated live to that page after a few seconds.\n\n# Maintenance\n\nBug reports and feature requests to the template should be [submitted via GitHub](https://github.com/academicpages/academicpages.github.io/issues/new/choose). For questions concerning how to style the template, please feel free to start a [new discussion on GitHub](https://github.com/academicpages/academicpages.github.io/discussions).\n\nThis repository was forked (then detached) by [Stuart Geiger](https://github.com/staeiou) from the [Minimal Mistakes Jekyll Theme](https://mmistakes.github.io/minimal-mistakes/), which is © 2016 Michael Rose and released under the MIT License (see LICENSE.md). It is currently being maintained by [Robert Zupko](https://github.com/rjzupkoii) and additional maintainers would be welcomed.\n\n## Bugfixes and enhancements\n\nIf you have bugfixes and enhancements that you would like to submit as a pull request, you will need to [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) this repository as opposed to using it as a template. This will also allow you to [synchronize your copy](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) of template to your fork as well.\n\nUnfortunately, one logistical issue with a template theme like Academic Pages that makes it a little tricky to get bug fixes and updates to the core theme. If you use this template and customize it, you will probably get merge conflicts if you attempt to synchronize, although [rebasing](https://git-scm.com/docs/git-rebase) the changes from this template will work along with manually [cherry picking](https://git-scm.com/docs/git-cherry-pick) the relevant commits. If you are not comfortable with the Git command line, you can save your various `.yml` configuration files and Markdown files, delete the repository, and fork it again. \n\n---\n<div align=\"center\">\n    \n![pages-build-deployment](https://github.com/academicpages/academicpages.github.io/actions/workflows/pages/pages-build-deployment/badge.svg)\n[![GitHub contributors](https://img.shields.io/github/contributors/academicpages/academicpages.github.io.svg)](https://github.com/academicpages/academicpages.github.io/graphs/contributors)\n[![GitHub release](https://img.shields.io/github/v/release/academicpages/academicpages.github.io)](https://github.com/academicpages/academicpages.github.io/releases/latest)\n[![GitHub license](https://img.shields.io/github/license/academicpages/academicpages.github.io?color=blue)](https://github.com/academicpages/academicpages.github.io/blob/master/LICENSE)\n\n[![GitHub stars](https://img.shields.io/github/stars/academicpages/academicpages.github.io)](https://github.com/academicpages/academicpages.github.io)\n[![GitHub forks](https://img.shields.io/github/forks/academicpages/academicpages.github.io)](https://github.com/academicpages/academicpages.github.io/fork)\n</div>\n"
  },
  {
    "path": "_config.yml",
    "content": "# Welcome to Jekyll!\n#\n# This config file is meant for settings that affect your entire site, values\n# which you are expected to set up once and rarely need to edit after that.\n# For technical reasons, this file is *NOT* reloaded automatically when you use\n# `jekyll serve -l -H localhost`. If you change this file, please restart the \n# server process.\n\n# Basic Site Settings\nlocale                   : \"en-US\"\nsite_theme               : \"default\" # The available themes options are \"default\", \"air\", \"sunrise\", \"mint\", \"dirt\" and \"contrast\"\ntitle                    : \"Your Name / Site Title\"\ntitle_separator          : \"-\"\nname                     : &name \"Your Name\"\ndescription              : &description \"Your Name's academic portfolio\"   # Update this with a general description of your site, this is the default if not overridden by a page\nurl                      : https://academicpages.github.io # The base hostname & protocol for your site e.g. \"https://[your GitHub username].github.io\",\n                                                           # or if you already have some other page hosted on Github then use \"https://[your GitHub username].github.io/[Your Repo Name]\"\nbaseurl                  : \"\" # the subpath of your site, e.g. \"/blog\"\nrepository               : \"academicpages/academicpages.github.io\"\n\n# Site Author - The following control what appear as part of the author content on the side bar.\n#               If a field is blank the icon and link will not appear, otherwise it will be shown.\n#               Additional customization can be done by editing /_includes/author-profile.html\nauthor:\n  # Biographic information\n  avatar           : \"profile.png\"\n  name             : \"Your Sidebar Name\"\n  pronouns         : # example: \"she/her\"  \n  bio              : \"Short biography for the left-hand sidebar\"\n  location         : \"Earth\"\n  employer         : \"Red Brick University\"\n  uri              : # URL\n  email            : \"none@example.org\" \n\n  # Academic websites\n  academia         : # URL\n  arxiv            : # URL - Update with the correct link to your profile\n  googlescholar    : \"https://scholar.google.com/citations?user=PS_CX0AAAAAJ\"\n  inspire-hep      : # URL\n  impactstory      : # URL\n  orcid            : \"https://orcid.org/yourorcidurl\"\n  semantic         : # URL\n  ssrn             : # URL\n  pubmed           : \"https://www.ncbi.nlm.nih.gov/pubmed/?term=john+snow\"\n  researchgate     : # URL\n  scopus           : # URL\n  zotero           : # URL\n\n\n  # Repositories and software development\n  bitbucket        : # Username - Update with your username on the site\n  codepen          : # Username\n  dribbble         : # Username\n  github           : \"academicpages\"\n  kaggle           : # Username  \n  stackoverflow    : # User number or user number and name (i.e., use \"1\" or \"1/jeff-atwood\")    \n\n  # Social media\n  artstation       : # Username\n  bluesky          : \"bsky.app\" # Replace this with you Bluesky username\n  facebook         : # Username\n  flickr           : # Username\n  foursquare       : # Username\n  goodreads        : # Username\n  google_plus      : # Username\n  keybase          : # Username\n  instagram        : # Username\n  lastfm           : # Username\n  linkedin         : # Username\n  mastodon         : # URL\n  medium           : # URL\n  pinterest        : # Username\n  soundcloud       : # Username\n  steam            : # Username\n  telegram         : # URL\n  tumblr           : # Username\n  twitter          : # Username for X / Twitter\n  vine             : # Username\n  weibo            : # Username\n  wikipedia        : # Username\n  xing             : # Username\n  youtube          : # Username\n  zhihu            : # Username\n\n# Publication Category - The following the list of publication categories and their headings\npublication_category:\n  books:\n    title: 'Books'\n  manuscripts:\n    title: 'Journal Articles'    \n  conferences:\n    title: 'Conference Papers'\n\n# Site Settings\nteaser                   :  # filename of teaser fallback teaser image placed in /images/ for social media previews\nbreadcrumbs              : false # true, false (default)\nwords_per_minute         : 160\nfuture                   : true\nread_more                : \"disabled\" # if enabled, adds \"Read more\" links to excerpts\ntalkmap_link             : false      #change to true to add link to talkmap on talks page\ncomments:\n  provider               : # false (default), \"disqus\", \"discourse\", \"facebook\", \"google-plus\", \"staticman\", \"custom\"\n  disqus:\n    shortname            :\n  discourse:\n    server               : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org\n  facebook:\n    appid                :\n    num_posts            : # 5 (default)\n    colorscheme          : # \"light\" (default), \"dark\"\nstaticman:\n  allowedFields          : ['name', 'email', 'url', 'message']\n  branch                 : \"gh-pages\" # \"master\", \"gh-pages\"\n  commitMessage          : \"New comment.\"\n  filename               : comment-{@timestamp}\n  format                 : \"yml\"\n  moderation             : true\n  path                   : \"_data/comments/{options.slug}\"\n  requiredFields         : ['name', 'email', 'message']\n  transforms:\n    email                : \"md5\"\n  generatedFields:\n    date:\n      type               : \"date\"\n      options:\n        format           : \"iso8601\" # \"iso8601\" (default), \"timestamp-seconds\", \"timestamp-milliseconds\"\natom_feed:\n  hide                   : false     # change to true to hide the RSS feed in the footer\n  path                   : # blank (default) uses feed.xml\n\n\n# SEO Related\ngoogle_site_verification :\nbing_site_verification   :\nalexa_site_verification  :\nyandex_site_verification :\n\n\n# Social Sharing\ntwitter:\n  username               : &twitter\nfacebook:\n  username               :\n  app_id                 :\n  publisher              :\nog_image                 :  # Social media default site image\nog_description           :  # Social media default site image description\n# For specifying social profiles\n# - https://developers.google.com/structured-data/customize/social-profiles\nsocial:\n  type                   : # Person or Organization (defaults to Person)\n  name                   : # If the user or organization name differs from the site's name\n  links: # An array of links to social media profiles\n\n\n# Analytics\nanalytics:\n  provider               :  \"false\" # false (default), \"google\", \"google-universal\", \"google-analytics-4\", \"custom\"\n  google:\n    tracking_id          :\n\n\n# Reading Files\ninclude:\n  - .htaccess\n  - _pages\n  - files\nexclude:\n  - \"*.sublime-project\"\n  - \"*.sublime-workspace\"\n  - .asset-cache\n  - .bundle\n  - .github\n  - .jekyll-assets-cache\n  - .sass-cache\n  - assets/js/_main.js\n  - assets/js/plugins\n  - assets/js/vendor\n  - CHANGELOG\n  - Capfile\n  - config\n  - Dockerfile\n  - Gemfile\n  - Gruntfile.js\n  - gulpfile.js\n  - LICENSE\n  - local\n  - log\n  - node_modules\n  - package.json*\n  - Rakefile\n  - README\n  - tmp\n  - vendor\nkeep_files:\n  - .git\n  - .svn\nencoding: \"utf-8\"\nmarkdown_ext: \"markdown,mkdown,mkdn,mkd,md\"\n\n\n# Conversion\nmarkdown: kramdown\nhighlighter: rouge\nlsi: false\nexcerpt_separator: \"\\n\\n\"\nincremental: false\n\n\n# Markdown Processing\nkramdown:\n  input: GFM\n  hard_wrap: false\n  auto_ids: true\n  footnote_nr: 1\n  entity_output: as_char\n  toc_levels: 1..6\n  smart_quotes: lsquo,rsquo,ldquo,rdquo\n  enable_coderay: false\n\n\n# These settings control the types of collections used by the template\ncollections:\n  teaching:\n    output: true\n    permalink: /:collection/:path/\n  publications:\n    output: true\n    permalink: /:collection/:path/\n  portfolio:\n    output: true\n    permalink: /:collection/:path/\n  talks:\n    output: true\n    permalink: /:collection/:path/\n\n\n# These settings control how pages and collections are included in the site\ndefaults:\n  # _posts\n  - scope:\n      path: \"\"\n      type: posts\n    values:\n      layout: single\n      author_profile: true\n      read_time: true\n      comments: true\n      share: true\n      related: true\n  # _pages\n  - scope:\n      path: \"\"\n      type: pages\n    values:\n      layout: single\n      author_profile: true\n  # _teaching\n  - scope:\n      path: \"\"\n      type: teaching\n    values:\n      layout: single\n      author_profile: true\n      share: true\n      comments: true\n  # _publications\n  - scope:\n      path: \"\"\n      type: publications\n    values:\n      layout: single\n      author_profile: true\n      share: true\n      comments: true\n  # _portfolio\n  - scope:\n      path: \"\"\n      type: portfolio\n    values:\n      layout: single\n      author_profile: true\n      share: true\n      comment: true\n  # _talks\n  - scope:\n      path: \"\"\n      type: talks\n    values:\n      layout: talk\n      author_profile: true\n      share: true\n\n\n# Sass/SCSS\nsass:\n  sass_dir: _sass\n  style: compressed # https://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style\n\n\n# Outputting\npermalink: /:categories/:title/\n# paginate: 5 # amount of posts to show\n# paginate_path: /page:num/\ntimezone: Etc/UTC # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n\n\n# Plugins\nplugins:\n  - jekyll-feed\n  - jekyll-gist\n  - jekyll-paginate\n  - jekyll-sitemap\n  - jekyll-redirect-from\n  - jemoji\n\n# Mimic GitHub Pages with --safe\nwhitelist:\n  - jekyll-feed\n  - jekyll-gist\n  - jekyll-paginate\n  - jekyll-sitemap\n  - jekyll-redirect-from\n  - jemoji\n\n\n# Archives\n#  Type\n#  - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)\n#  - Jekyll Archives plugin archive pages ~> type: jekyll-archives\n#  Path (examples)\n#  - Archive page should exist at path when using Liquid method or you can\n#    expect broken links (especially with breadcrumbs enabled)\n#  - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/\n#  - <base_path/categories/my-awesome-category/index.html ~> path: /categories/\n#  - <base_path/my-awesome-category/index.html ~> path: /\ncategory_archive:\n  type: liquid\n  path: /categories/\ntag_archive:\n  type: liquid\n  path: /tags/\n# https://github.com/jekyll/jekyll-archives\n# jekyll-archives:\n#   enabled:\n#     - categories\n#     - tags\n#   layouts:\n#     category: archive-taxonomy\n#     tag: archive-taxonomy\n#   permalinks:\n#     category: /categories/:name/\n#     tag: /tags/:name/\n\n\n# HTML Compression\n# - https://jch.penibelst.de/\ncompress_html:\n  clippings: all\n  ignore:\n    envs: development\n"
  },
  {
    "path": "_config_docker.yml",
    "content": "url: \"\""
  },
  {
    "path": "_data/authors.yml",
    "content": "# Authors\n\nName Name:\n  name        : \"Name Name\"\n  uri         : \"https://name.com\"\n  email       : \"name@name.com\"\n  bio         : \"This is the first name.\"\n  avatar      : \"bio-photo-2.jpg\"\n  twitter     : \"name\"\n  google_plus : \"Name\"\n\nName2 Name2:\n  name        : \"Name2 Name2\"\n  email       : \"name2@name2.com\"\n  bio         : \"I ordered what?\"\n  avatar      : \"bio-photo.jpg\"\n  twitter     : \"name2\"\n  google_plus : \"Name\"\n"
  },
  {
    "path": "_data/comments/layout-comments/comment-1470944006665.yml",
    "content": "message: \"![Bill Murray](http://www.fillmurray.com/400/300)\\r\\n\\r\\n“It's hard to be an artist. It's hard to be anything. It's hard to be.”\"\nname: Bill Murray\nemail: b0caa2a71f5066b3d90711c224578c21\nurl: ''\nhidden: ''\ndate: '2016-08-11T19:33:25.928Z'\n"
  },
  {
    "path": "_data/comments/layout-comments/comment-1470944162041.yml",
    "content": "message: \"> “I never had seen Seinfeld, and they said, ‘Oh, it’s the last episode.’ And I said, ‘Oh, I’ll watch Seinfeld.’ And it was terrible.”\\r\\n>\\r\\n> *— From a 2014 interview with Howard Stern*\"\nname: Anonymous\nemail: 8c7e898f1b570760f834ecc03edf6b35\nurl: ''\nhidden: ''\ndate: '2016-08-11T19:36:01.033Z'\n"
  },
  {
    "path": "_data/comments/markup-syntax-highlighting/comment-1470969665387.yml",
    "content": "message: \"Here's a test comment with a Markdown code block:\\r\\n\\r\\n```scss\\r\\nh1, h2, h3, h4, h5, h6 {\\r\\n  margin: 2em 0 0.5em;\\r\\n  line-height: 1.2;\\r\\n  font-family: $header-font-family;\\r\\n  font-weight: bold;\\r\\n}\\r\\n```\"\nname: Michael Rose\nemail: 1ce71bc10b86565464b612093d89707e\nurl: 'https://mademistakes.com'\nhidden: ''\ndate: '2016-08-12T02:41:04.706Z'\n"
  },
  {
    "path": "_data/comments/welcome-to-jekyll/comment-1470942205700.yml",
    "content": "message: \"This is a test comment with some **Markdown** sprinkled about for *testing purposes*.\\r\\n\\r\\n### Subheading in a comment? Madness!\\r\\n\\r\\nNam et risus nec ipsum efficitur facilisis. Aenean tincidunt dapibus odio, eget rutrum urna lacinia non. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\"\nname: Michael Rose\nemail: 1ce71bc10b86565464b612093d89707e\nurl: 'https://mademistakes.com'\nhidden: ''\ndate: '2016-08-11T19:03:24.929Z'\n"
  },
  {
    "path": "_data/comments/welcome-to-jekyll/comment-1470942247755.yml",
    "content": "message: '\"How much wood would a woodchuck chuck if a woodchuck could chuck wood?\"'\nname: Jackalope\nemail: cba827e665ae179e1d1ae007a6c3c1ab\nurl: ''\nhidden: ''\ndate: '2016-08-11T19:04:06.958Z'\n"
  },
  {
    "path": "_data/comments/welcome-to-jekyll/comment-1470942265819.yml",
    "content": "message: '\"How much wood would a woodchuck chuck if a woodchuck could chuck wood?\"'\nname: Jackalope Duplicate\nemail: cba827e665ae179e1d1ae007a6c3c1ab\nurl: ''\nhidden: ''\ndate: '2016-08-11T19:04:25.085Z'\n"
  },
  {
    "path": "_data/comments/welcome-to-jekyll/comment-1470942493518.yml",
    "content": "message: \"Images can be added to a comment using Markdown like this\\r\\n\\r\\n```\\r\\n![Bill Murray](http://www.fillmurray.com/600/400)\\r\\n```\\r\\n![Bill Murray](http://www.fillmurray.com/600/400)\"\nname: Michael Rose\nemail: 1ce71bc10b86565464b612093d89707e\nurl: 'https://mademistakes.com'\nhidden: ''\ndate: '2016-08-11T19:08:12.789Z'\n"
  },
  {
    "path": "_data/cv.json",
    "content": "{\n  \"basics\": {\n    \"name\": \"Your Sidebar Name\",\n    \"email\": \"none@example.org\",\n    \"phone\": \"\",\n    \"website\": \"https://academicpages.github.io\",\n    \"summary\": \"Currently employed at Red Brick University. Short biography for the left-hand sidebar\",\n    \"location\": {\n      \"address\": \"\",\n      \"postalCode\": \"\",\n      \"city\": \"Earth\",\n      \"countryCode\": \"US\",\n      \"region\": \"\"\n    },\n    \"profiles\": [\n      {\n        \"network\": \"Google Scholar\",\n        \"username\": \"\",\n        \"url\": \"https://scholar.google.com/citations?user=PS_CX0AAAAAJ\"\n      },\n      {\n        \"network\": \"ORCID\",\n        \"username\": \"\",\n        \"url\": \"https://orcid.org/yourorcidurl\"\n      },\n      {\n        \"network\": \"GitHub\",\n        \"username\": \"academicpages\",\n        \"url\": \"https://github.com/academicpages\"\n      }\n    ]\n  },\n  \"work\": [],\n  \"education\": [\n    {\n      \"institution\": \"GitHub University\",\n      \"area\": \"Ph.D in Version Control Theory\",\n      \"studyType\": \"\",\n      \"startDate\": \"\",\n      \"endDate\": \"2018\",\n      \"gpa\": null,\n      \"courses\": []\n    },\n    {\n      \"institution\": \"GitHub University\",\n      \"area\": \"M.S. in Jekyll\",\n      \"studyType\": \"\",\n      \"startDate\": \"\",\n      \"endDate\": \"2014\",\n      \"gpa\": null,\n      \"courses\": []\n    },\n    {\n      \"institution\": \"GitHub University\",\n      \"area\": \"B.S. in GitHub\",\n      \"studyType\": \"\",\n      \"startDate\": \"\",\n      \"endDate\": \"2012\",\n      \"gpa\": null,\n      \"courses\": []\n    }\n  ],\n  \"skills\": [],\n  \"languages\": [],\n  \"interests\": [],\n  \"references\": [],\n  \"publications\": [\n    {\n      \"name\": \"Paper Title Number 1\",\n      \"publisher\": \"Journal 1\",\n      \"releaseDate\": \"2009-10-01\",\n      \"website\": \"https://academicpages.github.io/files/paper1.pdf\",\n      \"summary\": \"This paper is about the number 1. The number 2 is left for future work.\"\n    },\n    {\n      \"name\": \"Paper Title Number 2\",\n      \"publisher\": \"Journal 1\",\n      \"releaseDate\": \"2010-10-01\",\n      \"website\": \"https://academicpages.github.io/files/paper2.pdf\",\n      \"summary\": \"This paper is about the number 2. The number 3 is left for future work.\"\n    },\n    {\n      \"name\": \"Paper Title Number 3\",\n      \"publisher\": \"Journal 1\",\n      \"releaseDate\": \"2015-10-01\",\n      \"website\": \"https://academicpages.github.io/files/paper3.pdf\",\n      \"summary\": \"This paper is about the number 3. The number 4 is left for future work.\"\n    },\n    {\n      \"name\": \"Paper Title Number 4\",\n      \"publisher\": \"GitHub Journal of Bugs\",\n      \"releaseDate\": \"2024-02-17\",\n      \"website\": \"https://academicpages.github.io/files/paper3.pdf\",\n      \"summary\": \"This paper is about fixing template issue #693.\"\n    }\n  ],\n  \"presentations\": [\n    {\n      \"name\": \"Talk 1 on Relevant Topic in Your Field\",\n      \"event\": \"UC San Francisco, Department of Testing\",\n      \"date\": \"2012-03-01\",\n      \"location\": \"San Francisco, CA, USA\",\n      \"description\": \"\"\n    },\n    {\n      \"name\": \"Tutorial 1 on Relevant Topic in Your Field\",\n      \"event\": \"UC-Berkeley Institute for Testing Science\",\n      \"date\": \"2013-03-01\",\n      \"location\": \"Berkeley, CA, USA\",\n      \"description\": \"\"\n    },\n    {\n      \"name\": \"Talk 2 on Relevant Topic in Your Field\",\n      \"event\": \"London School of Testing\",\n      \"date\": \"2014-02-01\",\n      \"location\": \"London, UK\",\n      \"description\": \"\"\n    },\n    {\n      \"name\": \"Conference Proceeding talk 3 on Relevant Topic in Your Field\",\n      \"event\": \"Testing Institute of America 2014 Annual Conference\",\n      \"date\": \"2014-03-01\",\n      \"location\": \"Los Angeles, CA, USA\",\n      \"description\": \"\"\n    }\n  ],\n  \"teaching\": [\n    {\n      \"course\": \"Teaching experience 1\",\n      \"institution\": \"University 1, Department\",\n      \"date\": \"2014-01-01\",\n      \"role\": \"Undergraduate course\",\n      \"description\": \"\"\n    },\n    {\n      \"course\": \"Teaching experience 2\",\n      \"institution\": \"University 1, Department\",\n      \"date\": \"2015-01-01\",\n      \"role\": \"Workshop\",\n      \"description\": \"\"\n    }\n  ],\n  \"portfolio\": [\n    {\n      \"name\": \"Portfolio item number 1\",\n      \"category\": \"portfolio\",\n      \"date\": \"\",\n      \"url\": \"\",\n      \"description\": \"Short description of portfolio item number 1<br/><img src='/images/500x300.png'>\"\n    }\n  ]\n}\n"
  },
  {
    "path": "_data/navigation.yml",
    "content": "# The following is the order of the links in the header of the website.\n#\n# Changing the order here will adjust the order and you can also add additional\n# links. Removing a link prevents it from showing in the header, but does not\n# prevent it from being included in the site.\n#\n# NOTE that only one of the CV options should be selected, the first is for the\n#      Markdown formatted page while the second is generated using JSON.\n\nmain:\n  - title: \"Publications\"\n    url: /publications/\n\n  - title: \"Talks\"\n    url: /talks/    \n\n  - title: \"Teaching\"\n    url: /teaching/    \n    \n  - title: \"Portfolio\"\n    url: /portfolio/\n        \n  - title: \"Blog Posts\"\n    url: /year-archive/\n    \n  - title: \"CV\"\n    url: /cv/\n    \n  # - title: \"CV\"\n  #   url: /cv-json/\n    \n  - title: \"Guide\"\n    url: /markdown/\n"
  },
  {
    "path": "_data/ui-text.yml",
    "content": "# User interface text and labels\n\n# English (default)\n# -----------------\nen: &DEFAULT_EN\n  page                       : \"Page\"\n  pagination_previous        : \"Previous\"\n  pagination_next            : \"Next\"\n  breadcrumb_home_label      : \"Home\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"On This Page\"\n  ext_link_label             : \"Direct Link\"\n  less_than                  : \"less than\"\n  minute_read                : \"minute read\"\n  share_on_label             : \"Share on\"\n  meta_label                 :\n  tags_label                 : \"Tags:\"\n  categories_label           : \"Categories:\"\n  date_label                 : \"Published:\"\n  comments_label             : \"Leave a Comment\"\n  comments_title             : \"Comments\"\n  more_label                 : \"Learn More\"\n  related_label              : \"You May Also Enjoy\"\n  follow_label               : \"Follow:\"\n  feed_label                 : \"Feed\"\n  powered_by                 : \"Powered by\"\n  website_label              : \"Website\"\n  email_label                : \"Email\"\n  recent_posts               : \"Recent Posts\"\n  undefined_wpm              : \"Undefined parameter words_per_minute at _config.yml\"\n  comment_form_info          : \"Your email address will not be published. Required fields are marked\"\n  comment_form_comment_label : \"Comment\"\n  comment_form_md_info       : \"Markdown is supported.\"\n  comment_form_name_label    : \"Name\"\n  comment_form_email_label   : \"Email address\"\n  comment_form_website_label : \"Website (optional)\"\n  comment_btn_submit         : \"Submit Comment\"\n  comment_btn_submitted      : \"Submitted\"\n  comment_success_msg        : \"Thanks for your comment! It will show on the site once it has been approved.\"\n  comment_error_msg          : \"Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again.\"\n  loading_label              : \"Loading...\"\nen-US:\n  <<: *DEFAULT_EN\nen-CA:\n  <<: *DEFAULT_EN\nen-GB:\n  <<: *DEFAULT_EN\nen-AU:\n  <<: *DEFAULT_EN\n\n# Spanish\n# --------------\nes: &DEFAULT_ES\n  page                       : \"Página\"\n  pagination_previous        : \"Anterior\"\n  pagination_next            : \"Siguiente\"\n  breadcrumb_home_label      : \"Inicio\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"Contenidos\"\n  ext_link_label             : \"Enlace\"\n  less_than                  : \"menos de\"\n  minute_read                : \"minuto de lectura\"\n  share_on_label             : \"Compartir\"\n  meta_label                 :\n  tags_label                 : \"Etiquetas:\"\n  categories_label           : \"Categorías:\"\n  date_label                 : \"Actualizado:\"\n  comments_label             : \"Comentar\"\n  comments_title             : \"Deja un comentario\"\n  more_label                 : \"Ver más\"\n  related_label              : \"Quizás te interese\"\n  follow_label               : \"Seguir:\"\n  feed_label                 : \"Feed\"\n  powered_by                 : \"Creado por\"\n  website_label              : \"Sitio web\"\n  email_label                : \"Correo\"\n  recent_posts               : \"Entradas recientes\"\n  undefined_wpm              : \"Parámetro words_per_minute (palabras por minuto) no definido en _config.yml\"\n  comment_form_info          : \"No se publicará tu correo electrónico. Véanse marcados los campos obligatorios\"\n  comment_form_comment_label : \"Comentario\"\n  comment_form_md_info       : \"Markdown es compatible\"\n  comment_form_name_label    : \"Nombre\"\n  comment_form_email_label   : \"Correo electrónico\"\n  comment_form_website_label : \"Página web (opcional)\"\n  comment_btn_submit         : \"Enviar comentario\"\n  comment_btn_submitted      : \"Enviado\"\n  comment_success_msg        : \"¡Gracias por tu comentario! Aparecerá en la página cuando sea aprobado.\" \n  comment_error_msg          : \"Lo sentimos, ha habido un error con tu solicitud. Por favor, asegúrate de rellenar todos los campos obligatorios e inténtalo de nuevo.\"\n  loading_label              : \"Cargando...\"\nes-ES:\n  <<: *DEFAULT_ES\nes-CO:\n  <<: *DEFAULT_ES\n\n# French\n# -----------------\nfr: &DEFAULT_FR\n  page                       : \"Page\"\n  pagination_previous        : \"Précédent\"\n  pagination_next            : \"Suivant\"\n  breadcrumb_home_label      : \"Accueil\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"Sur cette page\"\n  ext_link_label             : \"Lien direct\"\n  less_than                  : \"plus petit que\"\n  minute_read                : \"minute de lecture\"\n  share_on_label             : \"Partager sur\"\n  meta_label                 :\n  tags_label                 : \"Tags :\"\n  categories_label           : \"Catégories :\"\n  date_label                 : \"Mis à jour :\"\n  comments_label             : \"Laisser un commentaire\"\n  comments_title             :\n  more_label                 : \"Lire plus\"\n  related_label              : \"Vous pourriez aimer\"\n  follow_label               : \"Suivez moi\"\n  feed_label                 : \"Flux\"\n  powered_by                 : \"Propulsé par\"\n  website_label              : \"Site\"\n  email_label                : \"Email\"\n  recent_posts               : \"Posts récents\"\n  undefined_wpm              : \"Le paramètre words_per_minute n'est pas défini dans _config.yml\"\n  comment_form_info          :\n  comment_form_comment_label :\n  comment_form_md_info       :\n  comment_form_name_label    :\n  comment_form_email_label   :\n  comment_form_website_label :\n  comment_btn_submit         :\n  comment_btn_submitted      :\n  comment_success_msg        :\n  comment_error_msg          :\n  loading_label              :\nfr-FR:\n  <<: *DEFAULT_FR\nfr-BE:\n  <<: *DEFAULT_FR\nfr-CH:\n  <<: *DEFAULT_FR\n\n# Turkish\n# -----------------\ntr: &DEFAULT_TR\n  page                       : \"Sayfa\"\n  pagination_previous        : \"Önceki\"\n  pagination_next            : \"Sonraki\"\n  breadcrumb_home_label      : \"Ana Sayfa\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"İçindekiler\"\n  ext_link_label             : \"Doğrudan Bağlantı\"\n  less_than                  : \"Şu süreden az: \"\n  minute_read                : \"dakika tahmini okuma süresi\"\n  share_on_label             : \"Paylaş\"\n  meta_label                 :\n  tags_label                 : \"Etiketler:\"\n  categories_label           : \"Kategoriler:\"\n  date_label                 : \"Güncelleme tarihi:\"\n  comments_label             : \"Yorum yapın\"\n  comments_title             :\n  more_label                 : \"Daha fazlasını öğrenin\"\n  related_label              : \"Bunlar ilginizi çekebilir:\"\n  follow_label               : \"Takip et:\"\n  feed_label                 : \"RSS\"\n  powered_by                 : \"Emeği geçenler: \"\n  website_label              : \"Web sayfası\"\n  email_label                : \"E-posta\"\n  recent_posts               : \"Son yazılar\"\n  undefined_wpm              : \"_config.yml dosyasında tanımlanmamış words_per_minute parametresi\"\n  comment_form_info          :\n  comment_form_comment_label :\n  comment_form_md_info       :\n  comment_form_name_label    :\n  comment_form_email_label   :\n  comment_form_website_label :\n  comment_btn_submit         :\n  comment_btn_submitted      :\n  comment_success_msg        :\n  comment_error_msg          :\n  loading_label              :\ntr-TR:\n  <<: *DEFAULT_TR\n\n# Brazilian Portguese\n# -----------------\npt: &DEFAULT_PT\n  page                       : \"Página\"\n  pagination_previous        : \"Anterior\"\n  pagination_next            : \"Próxima\"\n  breadcrumb_home_label      : \"Início\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"Nesta página\"\n  ext_link_label             : \"Link direto\"\n  less_than                  : \"menor que\"\n  minute_read                : \"minutos de leitura\"\n  share_on_label             : \"Compartilhe em\"\n  meta_label                 :\n  tags_label                 : \"Tags:\"\n  categories_label           : \"Categorias:\"\n  date_label                 : \"Atualizado em:\"\n  comments_label             : \"Deixe um comentário\"\n  comments_title             :\n  more_label                 : \"Aprenda Mais\"\n  related_label              : \"Talvez Você Goste Também\"\n  follow_label               : \"Acompanhe em\"\n  feed_label                 : \"Feed\"\n  powered_by                 : \"Feito por\"\n  website_label              : \"Site\"\n  email_label                : \"E-mail\"\n  recent_posts               : \"Postagens recentes\"\n  undefined_wpm              : \"Parâmetro indefinido em word_per_minute no _config.yml\"\n  comment_form_info          : \"Seu endereço de e-mail não será publicado. Campos obrigatórios são marcados\"\n  comment_form_comment_label : \"Comentário\"\n  comment_form_md_info       : \"Markdown é suportado\"\n  comment_form_name_label    : \"Nome\"\n  comment_form_email_label   : \"Endereço de e-mail'\"\n  comment_form_website_label : \"Website (opcional)\"\n  comment_btn_submit         : \"Enviar Comentário\"\n  comment_btn_submitted      : \"Enviado\"\n  comment_success_msg        : \"Obrigado por seu comentário! Ele será exibido no site depois de aprovado.\"\n  comment_error_msg          : \"Desculpe, houve um erro com o seu envio. Certifique-se de que todos os campos obrigatórios foram preenchidos e tente novamente.\"\n  loading_label              : \"Carregando...\"\npt-BR:\n  <<: *DEFAULT_PT\npt-PT:\n  <<: *DEFAULT_PT\n\n# Italian\n# -----------------\nit: &DEFAULT_IT\n  page                       : \"Pagina\"\n  pagination_previous        : \"Precedente\"\n  pagination_next            : \"Prossima\"\n  breadcrumb_home_label      : \"Home\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"Indice della pagina\"\n  ext_link_label             : \"Link\"\n  less_than                  : \"meno di\"\n  minute_read                : \"minuto/i di lettura\"\n  share_on_label             : \"Condividi\"\n  meta_label                 :\n  tags_label                 : \"Tags:\"\n  categories_label           : \"Categorie:\"\n  date_label                 : \"Aggiornato:\"\n  comments_label             : \"Scrivi un commento\"\n  comments_title             :\n  more_label                 : \"Scopri di più\"\n  related_label              : \"Potrebbe Piacerti Anche\"\n  follow_label               : \"Segui:\"\n  feed_label                 : \"Feed\"\n  powered_by                 : \"Powered by\"\n  website_label              : \"Website\"\n  email_label                : \"Email\"\n  recent_posts               : \"Articoli Recenti\"\n  undefined_wpm              : \"Parametro words_per_minute non definito in _config.yml\"\n  comment_form_info          :\n  comment_form_comment_label :\n  comment_form_md_info       :\n  comment_form_name_label    :\n  comment_form_email_label   :\n  comment_form_website_label :\n  comment_btn_submit         :\n  comment_btn_submitted      :\n  comment_success_msg        :\n  comment_error_msg          :\n  loading_label              :\nit-IT:\n  <<: *DEFAULT_IT\n\n# Chinese (simplified)\n# -----------------\nzh: &DEFAULT_ZH\n  page                       : \"页面\"\n  pagination_previous        : \"上一页\"\n  pagination_next            : \"下一页\"\n  breadcrumb_home_label      : \"主页\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"本页内容\"\n  ext_link_label             : \"直接链接\"\n  less_than                  : \"少于\"\n  minute_read                : \"分钟阅读时长\"\n  share_on_label             : \"分享到\"\n  meta_label                 :\n  tags_label                 : \"标签：\"\n  categories_label           : \"分类：\"\n  date_label                 : \"发布时间：\"\n  comments_label             : \"发表评论\"\n  comments_title             : \"评论\"\n  more_label                 : \"了解更多\"\n  related_label              : \"你可能感兴趣的\"\n  follow_label               : \"关注：\"\n  feed_label                 : \"打赏\"\n  powered_by                 : \"技术支持：\"\n  website_label              : \"网站\"\n  email_label                : \"电子邮件\"\n  recent_posts               : \"最新文章\"\n  undefined_wpm              : \"_config.yml中未定义words_per_minute参数\"\n  comment_form_info          : \"您的电子邮件地址不会被公开。（必填项已标注）\"\n  comment_form_comment_label : \"评论\"\n  comment_form_md_info       : \"支持Markdown格式\"\n  comment_form_name_label    : \"姓名\"\n  comment_form_email_label   : \"电子邮件地址\"\n  comment_form_website_label : \"网站（可选）\"\n  comment_btn_submit         : \"提交评论\"\n  comment_btn_submitted      : \"已提交\"\n  comment_success_msg        : \"感谢您的评论！审核通过后会显示在网站上。\"\n  comment_error_msg          : \"抱歉，提交时出错。请确保所有必填项已完成，并重试。\"\n  loading_label              : \"加载中...\"\nzh-CN:\n  <<: *DEFAULT_ZH\n\n# Chinese (traditional)\n# -----------------\nzh-HK: &DEFAULT_ZH_HK\n  page                       : \"頁面\"\n  pagination_previous        : \"上一頁\"\n  pagination_next            : \"下一頁\"\n  breadcrumb_home_label      : \"主頁\"\n  breadcrumb_separator       : \"/\"\n  toc_label                  : \"本頁內容\"\n  ext_link_label             : \"直接連結\"\n  less_than                  : \"少於\"\n  minute_read                : \"分鐘閱讀時長\"\n  share_on_label             : \"分享到\"\n  meta_label                 :\n  tags_label                 : \"標籤：\"\n  categories_label           : \"分類：\"\n  date_label                 : \"發布時間：\"\n  comments_label             : \"發表評論\"\n  comments_title             : \"評論\"\n  more_label                 : \"了解更多\"\n  related_label              : \"你可能感興趣的\"\n  follow_label               : \"關注：\"\n  feed_label                 : \"打賞\"\n  powered_by                 : \"技術支持：\"\n  website_label              : \"網站\"\n  email_label                : \"電子郵件\"\n  recent_posts               : \"最新文章\"\n  undefined_wpm              : \"_config.yml中未定義words_per_minute參數\"\n  comment_form_info          : \"您的電子郵件地址不會被公開。（必填項已標註）\"\n  comment_form_comment_label : \"評論\"\n  comment_form_md_info       : \"支持Markdown格式\"\n  comment_form_name_label    : \"姓名\"\n  comment_form_email_label   : \"電子郵件地址\"\n  comment_form_website_label : \"網站（可選）\"\n  comment_btn_submit         : \"提交評論\"\n  comment_btn_submitted      : \"已提交\"\n  comment_success_msg        : \"感謝您的評論！審核通過後會顯示在網站上。\"\n  comment_error_msg          : \"抱歉，提交時出錯。請確保所有必填項已完成，並重試。\"\n  loading_label              : \"加載中...\"\nzh-TW:\n  <<: *DEFAULT_ZH_HK\n\n# Another locale\n# --------------\n"
  },
  {
    "path": "_drafts/post-draft.md",
    "content": "---\nlayout: single\ntitle:  \"Draft Post\"\nheader:\n  teaser: \"unsplash-gallery-image-2-th.jpg\"\ncategories: \n  - Jekyll\ntags:\n  - edge case\n---\nMonocle ipsum dolor sit amet handsome pariatur aliqua, hub remarkable irure commodo classic deserunt bespoke. Sunt commodo signature, Swiss minim flat white Tsutaya excepteur artisanal et Nordic laborum joy ANA. Beams mollit exquisite Ginza efficient dolore qui Comme des Garçons Winkreative Lufthansa bulletin global. Iconic sed liveable duis. Mollit dolore eu laboris Comme des Garçons hub pintxos sed eiusmod tote bag Shinkansen nisi consectetur pariatur. Nordic international quis finest Baggu dolore, bureaux hub hand-crafted ut joy sint Airbus A380.\n\nConversation handsome hub cosy, enim emerging sed K-pop velit Gaggenau charming proident et boulevard ryokan. Remarkable airport deserunt international est, nulla minim magna emerging discerning in exclusive dolor. Commodo dolore deserunt cosy, global Nordic culpa uniforms signature charming. Smart ryokan commodo, eiusmod global occaecat incididunt aliqua Beams. Boulevard conversation excepteur finest Swiss non veniam Comme des Garçons essential artisanal. Destination Scandinavian international, anim Boeing 787 in duis Baggu irure essential.\n\nFugiat exclusive laborum, Gaggenau ad Winkreative sharp elit labore. Remarkable officia ryokan Boeing 787, consectetur boutique Nordic Singapore espresso elit iconic perfect izakaya soft power excepteur. Ut veniam carefully curated K-pop dolore, uniforms in voluptate. Craftsmanship Ettinger Lufthansa sophisticated esse boutique veniam exquisite. Aute cillum bespoke, intricate consectetur in exquisite international lovely bulletin irure Washlet Gaggenau deserunt. Efficient eu quality of life wardrobe labore, dolor emerging airport concierge reprehenderit izakaya dolore liveable Baggu.\n\nCommodo elegant essential consectetur Gaggenau culpa consequat id sophisticated St Moritz sunt conversation duis non velit. Nulla business class non ut Marylebone ANA soft power fugiat carefully curated. Bureaux sed punctual handsome Washlet impeccable hand-crafted aute extraordinary tote bag enim boulevard soft power sleepy. Dolore conversation irure Zürich the best adipisicing, vibrant finest hub anim premium aliqua. Cupidatat smart international, bureaux Baggu id efficient punctual. Tempor nulla flat white enim, K-pop incididunt elit efficient Toto uniforms concierge discerning. Concierge sleepy extraordinary, deserunt Melbourne commodo Nordic Winkreative Washlet Ginza exercitation espresso.\n\nTsutaya sed in business class sharp. Do Beams in adipisicing Lufthansa. Business class occaecat Melbourne, irure Singapore commodo espresso carefully curated quis quality of life adipisicing. Impeccable laborum efficient classic proident in. Beams Helsinki ullamco Marylebone dolore sophisticated concierge Muji anim duis joy ut. Comme des Garçons aute Muji in aliquip ryokan soft power Nordic essential ANA culpa elegant."
  },
  {
    "path": "_includes/analytics-providers/custom.html",
    "content": "<!-- start custom analytics snippet -->\n\n<!-- end custom analytics snippet -->"
  },
  {
    "path": "_includes/analytics-providers/google-analytics-4.html",
    "content": "<script async src=\"https://www.googletagmanager.com/gtag/js?id={{site.analytics.google.tracking_id}}\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', '{{site.analytics.google.tracking_id}}');\n</script>\n"
  },
  {
    "path": "_includes/analytics-providers/google-universal.html",
    "content": "<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n  ga('create', '{{ site.analytics.google.tracking_id }}', 'auto');\n  ga('send', 'pageview');\n</script>"
  },
  {
    "path": "_includes/analytics-providers/google.html",
    "content": "<script type=\"text/javascript\">\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n</script>"
  },
  {
    "path": "_includes/analytics.html",
    "content": "{% if site.analytics.provider and page.analytics != false %}\n\n{% case site.analytics.provider %}\n{% when \"google\" %}\n  {% include /analytics-providers/google.html %}\n{% when \"google-universal\" %}\n  {% include /analytics-providers/google-universal.html %}\n{% when \"google-analytics-4\" %}\n  {% include /analytics-providers/google-analytics-4.html %}\n{% when \"custom\" %}\n  {% include /analytics-providers/custom.html %}\n{% endcase %}\n\n{% endif %}"
  },
  {
    "path": "_includes/archive-single-cv.html",
    "content": "{% include base_path %}\n\n{% if post.header.teaser %}\n  {% capture teaser %}{{ post.header.teaser }}{% endcapture %}\n{% else %}\n  {% assign teaser = site.teaser %}\n{% endif %}\n\n{% if post.id %}\n  {% assign title = post.title | markdownify | remove: \"<p>\" | remove: \"</p>\" %}\n{% else %}\n  {% assign title = post.title %}\n{% endif %}\n\n<div class=\"{{ include.type | default: \"list\" }}__item\">\n  <article class=\"archive__item\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    <li>\n    {% if include.type == \"grid\" and teaser %}\n      <div class=\"archive__item-teaser\">\n        <img src=\n          {% if teaser contains \"://\" %}\n            \"{{ teaser }}\"\n          {% else %}\n            \"{{ teaser | prepend: \"/images/\" | prepend: base_path }}\"\n          {% endif %}\n          alt=\"\">\n      </div>\n    {% endif %}\n    <h3 class=\"archive__item-title\" itemprop=\"headline\">\n      {% if post.link %}\n        <a href=\"{{ post.link }}\">{{ title }}</a> <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\"><i class=\"fa fa-link\" aria-hidden=\"true\" title=\"permalink\"></i><span class=\"sr-only\">Permalink</span></a>\n      {% else %}\n        <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\">{{ title }}</a>\n      {% endif %}\n    </h3>\n    {% if post.read_time %}\n      <p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {% include read-time.html %}</p>\n    {% endif %}\n    {% if post.venue%}<p class=\"archive__item-excerpt\" itemprop=\"description\">{{ post.citation }}</p> {% endif %}\n    </li>\n </article>\n</div>\n"
  },
  {
    "path": "_includes/archive-single-talk-cv.html",
    "content": "{% include base_path %}\n\n{% if post.header.teaser %}\n  {% capture teaser %}{{ post.header.teaser }}{% endcapture %}\n{% else %}\n  {% assign teaser = site.teaser %}\n{% endif %}\n\n{% if post.id %}\n  {% assign title = post.title | markdownify | remove: \"<p>\" | remove: \"</p>\" %}\n{% else %}\n  {% assign title = post.title %}\n{% endif %}\n\n<div class=\"{{ include.type | default: \"list\" }}__item\">\n  <article class=\"archive__item\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    <li>\n    {% if include.type == \"grid\" and teaser %}\n      <div class=\"archive__item-teaser\">\n        <img src=\n          {% if teaser contains \"://\" %}\n            \"{{ teaser }}\"\n          {% else %}\n            \"{{ teaser | prepend: \"/images/\" | prepend: base_path }}\"\n          {% endif %}\n          alt=\"\">\n      </div>\n    {% endif %}\n    <h3 class=\"archive__item-title\" itemprop=\"headline\">\n      {% if post.link %}\n        <a href=\"{{ post.link }}\">{{ title }}</a> <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\"><i class=\"fa fa-link\" aria-hidden=\"true\" title=\"permalink\"></i><span class=\"sr-only\">Permalink</span></a>\n      {% else %}\n        <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\">{{ title }}</a>\n      {% endif %}\n    </h3>\n    {% if post.date %}<p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {{ post.date | date: '%B %d, %Y' }}</p>{% endif %}\n    {% if post.venue%}<p class=\"archive__item-excerpt\" itemprop=\"description\">{{post.type}} at {{ post.venue }},  {{post.location}}</p>{% endif %}\n    </li>\n  </article>\n</div>\n\n"
  },
  {
    "path": "_includes/archive-single-talk.html",
    "content": "{% include base_path %}\n\n{% if post.header.teaser %}\n  {% capture teaser %}{{ post.header.teaser }}{% endcapture %}\n{% else %}\n  {% assign teaser = site.teaser %}\n{% endif %}\n\n{% if post.id %}\n  {% assign title = post.title | markdownify | remove: \"<p>\" | remove: \"</p>\" %}\n{% else %}\n  {% assign title = post.title %}\n{% endif %}\n\n<div class=\"{{ include.type | default: \"list\" }}__item\">\n  <article class=\"archive__item\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    {% if include.type == \"grid\" and teaser %}\n      <div class=\"archive__item-teaser\">\n        <img src=\n          {% if teaser contains \"://\" %}\n            \"{{ teaser }}\"\n          {% else %}\n            \"{{ teaser | prepend: \"/images/\" | prepend: base_path }}\"\n          {% endif %}\n          alt=\"\">\n      </div>\n    {% endif %}\n    <h2 class=\"archive__item-title\" itemprop=\"headline\">\n      {% if post.link %}\n        <a href=\"{{ post.link }}\">{{ title }}</a> <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\"><i class=\"fa fa-link\" aria-hidden=\"true\" title=\"permalink\"></i><span class=\"sr-only\">Permalink</span></a>\n      {% else %}\n        <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\">{{ title }}</a>\n      {% endif %}\n    </h2>\n    {% if post.read_time %}\n      <p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {% include read-time.html %}</p>\n    {% endif %}\n    {% if post.date %}<p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {{ post.date | date: '%B %d, %Y' }}</p>{% endif %}\n    {% if post.venue %}<p class=\"archive__item-excerpt\" itemprop=\"description\">{{post.type}}, {{ post.venue }},  {{post.location}} {% endif %}\n    {% if post.excerpt %}<p class=\"archive__item-excerpt\" itemprop=\"description\">{{ post.excerpt | markdownify }}</p>{% endif %}\n  </article>\n</div>\n"
  },
  {
    "path": "_includes/archive-single.html",
    "content": "{% include base_path %}\n\n{% if post.header.teaser %}\n  {% capture teaser %}{{ post.header.teaser }}{% endcapture %}\n{% else %}\n  {% assign teaser = site.teaser %}\n{% endif %}\n\n{% if post.id %}\n  {% assign title = post.title | markdownify | remove: \"<p>\" | remove: \"</p>\" %}\n{% else %}\n  {% assign title = post.title %}\n{% endif %}\n\n<div class=\"{{ include.type | default: \"list\" }}__item\">\n  <article class=\"archive__item\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    {% if include.type == \"grid\" and teaser %}\n      <div class=\"archive__item-teaser\">\n        <img src=\n          {% if teaser contains \"://\" %}\n            \"{{ teaser }}\"\n          {% else %}\n            \"{{ teaser | prepend: \"/images/\" | prepend: base_path }}\"\n          {% endif %}\n          alt=\"\">\n      </div>\n    {% endif %}\n\n    <h2 class=\"archive__item-title\" itemprop=\"headline\">\n      {% if post.link %}\n        <a href=\"{{ post.link }}\">{{ title }}</a> <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\"><i class=\"fa fa-link\" aria-hidden=\"true\" title=\"permalink\"></i><span class=\"sr-only\">Permalink</span></a>\n      {% else %}\n        <a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\">{{ title }}</a>\n      {% endif %}\n    </h2>\n    \n    {% if post.read_time %}\n      <p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {% include read-time.html %}</p>\n    {% endif %}\n\n        {% if post.collection == 'teaching' %}\n          <p> {{ post.type }}, <i>{{ post.venue }}</i>, {{ post.date | default: \"1900-01-01\" | date: \"%Y\" }} </p>\n        {% elsif post.collection == 'publications' %}\n          <p>Published in <i>{{ post.venue }}</i>, {{ post.date | default: \"1900-01-01\" | date: \"%Y\" }} </p>\n        {% elsif post.date %}\n         <p class=\"page__date\"><strong><i class=\"fa fa-fw fa-calendar\" aria-hidden=\"true\"></i> {{ site.data.ui-text[site.locale].date_label | default: \"Published:\" }}</strong> <time datetime=\"{{ post.date | default: \"1900-01-01\" | date_to_xmlschema }}\">{{ post.date | default: \"1900-01-01\" | date: \"%B %d, %Y\" }}</time></p>\n        {% endif %}\n\n    {% if post.excerpt and site.read_more != 'enabled' %}\n    <p class=\"archive__item-excerpt\" itemprop=\"description\">{{ post.excerpt | markdownify }}</p>\n    {% elsif post.excerpt and site.read_more == 'enabled' %}\n    <p class=\"archive__item-excerpt\" itemprop=\"description\"><p>{{ post.excerpt | markdownify | remove: '<p>' | remove: '</p>' }}<strong><a href=\"{{ base_path }}{{ post.url }}\" rel=\"permalink\"> Read more</a></strong></p></p>\n    {% endif %}\n    \n    {% if post.citation and post.paperurl and post.slidesurl and post.bibtexurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.paperurl }}\">Download Paper</a> | <a href=\"{{ post.slidesurl }}\">Download Slides</a> | <a href=\"{{ post.bibtexurl }}\">Download Bibtex</a></p>\n    {% elsif post.citation and post.paperurl and post.slidesurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.paperurl }}\">Download Paper</a> | <a href=\"{{ post.slidesurl }}\">Download Slides</a></p>\n    {% elsif post.citation and post.paperurl and post.bibtexurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.paperurl }}\">Download Paper</a> | <a href=\"{{ post.bibtexurl }}\">Download Bibtex</a></p>\n    {% elsif post.citation and post.paperurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.paperurl }}\">Download Paper</a></p>\n    {% elsif post.citation and post.slidesurl and post.bibtexurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.slidesurl }}\">Download Slides</a> | <a href=\"{{ post.bibtexurl}}\">Download Bibtex</a></p>\n    {% elsif post.citation and post.slidesurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.slidesurl }}\">Download Slides</a></p>\n    {% elsif post.citation and post.bibtexurl %}\n      <p>Recommended citation: {{ post.citation }}<br /><a href=\"{{ post.bibtexurl }}\">Download Bibtex</a></p>\n    {% elsif post.citation %}\n      <p>Recommended citation: {{ post.citation }}</p>\n    {% elsif post.paperurl and post.bibtexurl %}\n      <p><a href=\"{{ post.paperurl }}\">Download Paper</a> | <a href=\"{{ post.bibtexurl }}\">Download Bibtex</a></p>\n    {% elsif post.paperurl %}\n      <p><a href=\"{{ post.paperurl }}\">Download Paper</a></p>\n    {% elsif post.slidesurl and post.bibtexurl %}\n      <p><a href=\"{{ post.slidesurl }}\">Download Slides</a> | <a href=\"{{ post.bibtexurl }}\">Download Bibtex</a></p>\n    {% elsif post.slidesurl %}\n      <p><a href=\"{{ post.slidesurl }}\">Download Slides</a></p>\n    {% elsif post.bibtexurl %}\n      <p><a href=\"{{ post.bibtexurl }}\">Download Bibtex</a></p>\n    {% endif %}\n\n  </article>\n</div>\n"
  },
  {
    "path": "_includes/author-profile.html",
    "content": "{% include base_path %}\n\n{% if page.author and site.data.authors[page.author] %}\n  {% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.author %}\n{% endif %}\n\n<div itemscope itemtype=\"http://schema.org/Person\">\n\n  <div class=\"author__avatar\">\n    {% if author.avatar contains \"://\" %}\n    \t<img src=\"{{ author.avatar }}\" alt=\"{{ author.name }}\"  fetchpriority=\"high\" />\n    {% else %}\n    \t<img src=\"{{ author.avatar | prepend: \"/images/\" | prepend: base_path }}\" class=\"author__avatar\" alt=\"{{ author.name }}\"  fetchpriority=\"high\" />\n    {% endif %}\n  </div>\n\n  <div class=\"author__content\">\n    <h3 class=\"author__name\">{{ author.name }}</h3>\n    {% if author.pronouns %}<p class=\"author__pronouns\">{{ author.pronouns }}</p>{% endif %}\n    {% if author.bio %}<p class=\"author__bio\">{{ author.bio }}</p>{% endif %}\n  </div>\n\n  <div class=\"author__urls-wrapper\">\n    <button class=\"btn btn--inverse\">Follow</button>\n    <ul class=\"author__urls social-icons\">\n      <!-- Font Awesome icons / Biographic information  -->\n      {% if author.location %}\n        <li class=\"author__desktop\"><i class=\"fas fa-fw fa-location-dot icon-pad-right\" aria-hidden=\"true\"></i>{{ author.location }}</li>\n      {% endif %}\n      {% if author.employer %}\n        <li class=\"author__desktop\"><i class=\"fas fa-fw fa-building-columns icon-pad-right\" aria-hidden=\"true\"></i>{{ author.employer }}</li>\n      {% endif %}\n      {% if author.uri %}\n        <li><a href=\"{{ author.uri }}\"><i class=\"fas fa-fw fa-link icon-pad-right\" aria-hidden=\"true\"></i>{{ site.data.ui-text[site.locale].website_label | default: \"Website\" }}</a></li>\n      {% endif %}\n      {% if author.email %}\n        <li><a href=\"mailto:{{ author.email }}\"><i class=\"fas fa-fw fa-envelope icon-pad-right\" aria-hidden=\"true\"></i>{{ site.data.ui-text[site.locale].email_label | default: \"Email\" }}</a></li>\n      {% endif %}\n\n      <!-- Font Awesome and Academicons icons / Academic websites -->\n      {% if author.academia %}\n        <li><a href=\"{{ author.academia }}\"><i class=\"ai ai-academia ai-fw icon-pad-right\" aria-hidden=\"true\"></i>Academia</a></li>\n      {% endif %}\n      {% if author.arxiv %}\n        <li><a href=\"{{ author.arxiv }}\"><i class=\"ai ai-arxiv ai-fw icon-pad-right\"></i>arXiv</a></li>\n      {% endif %}      \n      {% if author.googlescholar %}\n        <li><a href=\"{{ author.googlescholar }}\"><i class=\"ai ai-google-scholar ai-fw icon-pad-right\"></i>Google Scholar</a></li>\n      {% endif %}\n      {% if author.inspire-hep %}\n        <li><a href=\"{{ author.inspire-hep }}\"><i class=\"ai ai-inspire ai-fw icon-pad-right\"></i>INSPIRE-HEP</a></li>\n      {% endif %}      \n      {% if author.impactstory %}\n        <li><a href=\"{{ author.impactstory }}\"><i class=\"ai ai-impactstory ai-fw icon-pad-right\"></i>Impactstory</a></li>\n      {% endif %}\n      {% if author.orcid %}\n        <li><a href=\"{{ author.orcid }}\"><i class=\"ai ai-orcid ai-fw icon-pad-right\"></i>ORCID</a></li>\n      {% endif %}\n      {% if author.pubmed %}\n        <li><a href=\"{{ author.pubmed }}\"><i class=\"ai ai-pubmed ai-fw icon-pad-right\"></i>PubMed</a></li>\n      {% endif %}                        \n      {% if author.researchgate %}\n        <li><a href=\"{{ author.researchgate }}\"><i class=\"fab fa-fw fa-researchgate icon-pad-right\" aria-hidden=\"true\"></i>ResearchGate</a></li>\n      {% endif %}\n      {% if author.scopus %}\n        <li><a href=\"{{ author.scopus }}\"><i class=\"ai ai-scopus ai-fw icon-pad-right\"></i>Scopus</a></li>\n      {% endif %}\n      {% if author.semantic %}\n        <li><a href=\"{{ author.semantic }}\"><i class=\"ai ai-semantic-scholar ai-fw icon-pad-right\"></i>Semantic Scholar</a></li>\n      {% endif %}\n      {% if author.ssrn %}\n        <li><a href=\"{{ author.ssrn }}\"><i class=\"ai ai-ssrn ai-fw icon-pad-right\"></i>SSRN</a></li>\n      {% endif %}\n      {% if author.zotero %}\n        <li><a href=\"{{ author.zotero }}\"><i class=\"ai ai-zotero ai-fw icon-pad-right\"></i>Zotero</a></li>\n      {% endif %}\n\n      <!-- Font Awesome icons / Repositories and software development -->\n      {% if author.bitbucket %}\n        <li><a href=\"https://bitbucket.org/{{ author.bitbucket }}\"><i class=\"fab fa-fw fa-bitbucket icon-pad-right\" aria-hidden=\"true\"></i>Bitbucket</a></li>\n      {% endif %}\n      {% if author.codepen %}\n        <li><a href=\"https://codepen.io/{{ author.codepen }}\"><i class=\"fab fa-fw fa-codepen icon-pad-right\" aria-hidden=\"true\"></i>CodePen</a></li>\n      {% endif %}      \n      {% if author.dribbble %}\n        <li><a href=\"https://dribbble.com/{{ author.dribbble }}\"><i class=\"fab fa-fw fa-dribbble icon-pad-right\" aria-hidden=\"true\"></i>Dribbble</a></li>\n      {% endif %}      \n      {% if author.github %}\n        <li><a href=\"https://github.com/{{ author.github }}\"><i class=\"fab fa-fw fa-github icon-pad-right\" aria-hidden=\"true\"></i>GitHub</a></li>\n      {% endif %}\n      {% if author.kaggle %}\n        <li><a href=\"https://kaggle.com/{{ author.kaggle }}\"><i class=\"fab fa-fw fa-kaggle icon-pad-right\" aria-hidden=\"true\"></i>Kaggle</a></li>\n      {% endif %}      \n      {% if author.stackoverflow %}\n        <li><a href=\"https://www.stackoverflow.com/users/{{ author.stackoverflow }}\"><i class=\"fab fa-fw fa-stack-overflow icon-pad-right\" aria-hidden=\"true\"></i>Stackoverflow</a></li>\n      {% endif %}      \n\n      <!-- Font Awesome icons / Social media -->\n      {% if author.artstation %}\n        <li><a href=\"https://www.artstation.com/{{ author.artstation }}\"><i class=\"fab fa-fw fa-artstation icon-pad-right\" aria-hidden=\"true\"></i>Artstation</a></li>\n      {% endif %}        \n      {% if author.bluesky %}\n        <li><a href=\"https://bsky.app/profile/{{ author.bluesky }}\"><i class=\"fab fa-fw fa-bluesky icon-pad-right\" aria-hidden=\"true\"></i>Bluesky</a></li>\n      {% endif %}\n      {% if author.facebook %}\n        <li><a href=\"https://www.facebook.com/{{ author.facebook }}\"><i class=\"fab fa-fw fa-facebook-f icon-pad-right\" aria-hidden=\"true\"></i>Facebook</a></li>\n      {% endif %}\n      {% if author.flickr %}\n        <li><a href=\"https://www.flickr.com/{{ author.flickr }}\"><i class=\"fab fa-fw fa-flickr icon-pad-right\" aria-hidden=\"true\"></i>Flickr</a></li>\n      {% endif %}      \n      {% if author.foursquare %}\n        <li><a href=\"https://foursquare.com/{{ author.foursquare }}\"><i class=\"fab fa-fw fa-foursquare icon-pad-right\" aria-hidden=\"true\"></i>Foursquare</a></li>\n      {% endif %}\n      {% if author.goodreads %}\n        <li><a href=\"https://www.goodreads.com/{{ author.goodreads }}\"><i class=\"fab fa-fw fa-goodreads icon-pad-right\" aria-hidden=\"true\"></i>Goodreads</a></li>\n      {% endif %}            \n      {% if author.google_plus %}\n        <li><a href=\"https://plus.google.com/+{{ author.google_plus }}\"><i class=\"fab fa-fw fa-google-plus-g icon-pad-right\" aria-hidden=\"true\"></i>Google+</a></li>\n      {% endif %}            \n      {% if author.keybase %}\n        <li><a href=\"https://keybase.io/{{ author.keybase }}\"><i class=\"fas fa-fw fa-key icon-pad-right\" aria-hidden=\"true\"></i>Keybase</a></li>\n      {% endif %}\n      {% if author.instagram %}\n        <li><a href=\"https://instagram.com/{{ author.instagram }}\"><i class=\"fab fa-fw fa-instagram icon-pad-right\" aria-hidden=\"true\"></i>Instagram</a></li>\n      {% endif %}      \n      {% if author.lastfm %}\n        <li><a href=\"https://last.fm/user/{{ author.lastfm }}\"><i class=\"fab fa-fw fa-lastfm icon-pad-right\" aria-hidden=\"true\"></i>Last.fm</a></li>\n      {% endif %}      \n      {% if author.linkedin %}\n        <li><a href=\"https://www.linkedin.com/in/{{ author.linkedin }}\"><i class=\"fab fa-fw fa-linkedin icon-pad-right\" aria-hidden=\"true\"></i>LinkedIn</a></li>\n      {% endif %}      \n      {% if author.mastodon %}\n        <li><a href=\"{{ author.mastodon }}\"><i class=\"fab fa-fw fa-mastodon icon-pad-right\" aria-hidden=\"true\"></i>Mastodon</a></li>\n      {% endif %}\n      {% if author.medium %}\n        <li><a href=\"{{ author.medium }}\"><i class=\"fab fa-fw fa-medium icon-pad-right\" aria-hidden=\"true\"></i>Medium</a></li>\n      {% endif %}      \n      {% if author.pinterest %}\n        <li><a href=\"https://www.pinterest.com/{{ author.pinterest }}\"><i class=\"fab fa-fw fa-pinterest icon-pad-right\" aria-hidden=\"true\"></i>Pinterest</a></li>\n      {% endif %}            \n      {% if author.soundcloud %}\n        <li><a href=\"https://soundcloud.com/{{ author.soundcloud }}\"><i class=\"fab fa-fw fa-soundcloud icon-pad-right\" aria-hidden=\"true\"></i>Soundcloud</a></li>\n      {% endif %}      \n      {% if author.steam %}\n        <li><a href=\"https://steamcommunity.com/id/{{ author.steam }}\"><i class=\"fab fa-fw fa-steam icon-pad-right\" aria-hidden=\"true\"></i>Steam</a></li>\n      {% endif %}\n      {% if author.telegram %}\n        <li><a href=\"{{ author.telegram }}\"><i class=\"fab fa-fw fa-telegram icon-pad-right\" aria-hidden=\"true\"></i>Telegram</a></li>\n      {% endif %}      \n      {% if author.tumblr %}\n        <li><a href=\"https://{{ author.tumblr }}.tumblr.com\"><i class=\"fab fa-fw fa-tumblr icon-pad-right\" aria-hidden=\"true\"></i>Tumblr</a></li>\n      {% endif %}      \n      {% if author.twitter %}\n        <li><a href=\"https://twitter.com/{{ author.twitter }}\"><i class=\"fab fa-fw fa-x-twitter icon-pad-right\" aria-hidden=\"true\"></i>X (formerly Twitter)</a></li>\n      {% endif %}\n      {% if author.vine %}\n        <li><a href=\"https://vine.co/u/{{ author.vine }}\"><i class=\"fab fa-fw fa-vine icon-pad-right\" aria-hidden=\"true\"></i>Vine</a></li>\n      {% endif %}        \n      {% if author.weibo %}\n        <li><a href=\"https://www.weibo.com/{{ author.weibo }}\"><i class=\"fab fa-fw fa-weibo icon-pad-right\" aria-hidden=\"true\"></i>Weibo</a></li>\n      {% endif %}\n      {% if author.wikipedia %}\n        <li><a href=\"https://en.wikipedia.org/wiki/User:{{ author.wikipedia }}\"><i class=\"fab fa-fw fa-wikipedia-w icon-pad-right\" aria-hidden=\"true\"></i>Wikipedia</a></li>\n      {% endif %}                \n      {% if author.xing %}\n        <li><a href=\"https://www.xing.com/profile/{{ author.xing }}\"><i class=\"fab fa-fw fa-xing icon-pad-right\" aria-hidden=\"true\"></i>XING</a></li>\n      {% endif %}\n      {% if author.youtube %}\n        <li><a href=\"https://www.youtube.com/@{{ author.youtube }}\"><i class=\"fab fa-fw fa-youtube icon-pad-right\" aria-hidden=\"true\"></i>YouTube</a></li>\n      {% endif %}\n      {% if author.zhihu %}\n      <li><a href=\"https://www.zhihu.com/people/{{ author.zhihu }}\"><i class=\"fab fa-fw fa-zhihu icon-pad-right\" aria-hidden=\"true\"></i>Zhihu</a></li>\n      {% endif %}      \n    </ul>\n  </div>\n</div>\n"
  },
  {
    "path": "_includes/base_path",
    "content": "{% if site.url %}\n  {% assign base_path = site.url | append: site.baseurl %}\n{% else %}\n  {% assign base_path = site.github.url %}\n{% endif %}"
  },
  {
    "path": "_includes/breadcrumbs.html",
    "content": "{% include base_path %}\n\n{% case site.categories.type %}\n  {% when \"liquid\" %}\n    {% assign path_type = \"#\" %}\n  {% when \"jekyll-archives\" %}\n    {% assign path_type = nil %}\n{% endcase %}\n\n{% if page.collection != 'posts' %}\n  {% assign path_type = nil %}\n  {% assign crumb_path = '/' %}\n{% else %}\n  {% assign crumb_path = site.categories.path %}\n{% endif %}\n\n<nav class=\"breadcrumbs\">\n  <ol itemscope itemtype=\"http://schema.org/BreadcrumbList\">\n    {% assign crumbs = page.url | split: '/' %}\n    {% assign i = 1 %}\n    {% for crumb in crumbs offset: 1 %}\n      {% if forloop.first %}\n        <li itemprop=\"itemListElement\" itemscope itemtype=\"http://schema.org/ListItem\">\n          <a href=\"{{ base_path }}/\" itemprop=\"item\"><span itemprop=\"name\">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: \"Home\" }}</span></a>\n          <meta itemprop=\"position\" content=\"{{ i }}\" />\n        </li>\n        <span class=\"sep\">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: \"/\" }}</span>\n      {% endif %}\n      {% if forloop.last %}\n        <li class=\"current\">{{ page.title }}</li>\n      {% else %}\n        {% assign i = i | plus: 1 %}\n        <li itemprop=\"itemListElement\" itemscope itemtype=\"http://schema.org/ListItem\">\n          <a href=\"{{ base_path }}{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path }}\" itemprop=\"item\"><span itemprop=\"name\">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>\n          <meta itemprop=\"position\" content=\"{{ i }}\" />\n        </li>\n        <span class=\"sep\">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: \"/\" }}</span>\n      {% endif %}\n    {% endfor %}\n  </ol>\n</nav>"
  },
  {
    "path": "_includes/browser-upgrade.html",
    "content": "<!--[if lt IE 9]>\n<div class=\"notice--danger align-center\" style=\"margin: 0;\">You are using an <strong>outdated</strong> browser. Please <a href=\"http://browsehappy.com/\">upgrade your browser</a> to improve your experience.</div>\n<![endif]-->"
  },
  {
    "path": "_includes/category-list.html",
    "content": "{% include base_path %}\n\n{% include base_path %}\n\n{% case site.category_archive.type %}\n  {% when \"liquid\" %}\n    {% assign path_type = \"#\" %}\n  {% when \"jekyll-archives\" %}\n    {% assign path_type = nil %}\n{% endcase %}\n\n{% if site.category_archive.path %}\n  {% comment %}\n    <!-- Sort alphabetically regardless of case e.g. a B c d E -->\n    <!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->\n  {% endcomment %}\n  {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}\n  {% assign category_hashes = (page_categories | split: ',' | sort:0) %}\n\n  <p class=\"page__taxonomy\">\n    <strong><i class=\"fa fa-fw fa-folder-open\" aria-hidden=\"true\"></i> {{ site.data.ui-text[site.locale].categories_label | default: \"Categories:\" }} </strong>\n    <span itemprop=\"keywords\">\n    {% for hash in category_hashes %}\n      {% assign keyValue = hash | split: '#' %}\n      {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}\n      <a href=\"{{ base_path }}{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path }}\" class=\"page__taxonomy-item\" rel=\"tag\">{{ category_word }}</a>{% unless forloop.last %}<span class=\"sep\">, </span>{% endunless %}\n    {% endfor %}\n    </span>\n  </p>\n{% endif %}"
  },
  {
    "path": "_includes/comment.html",
    "content": "<article id=\"comment{{ include.index }}\" class=\"js-comment comment\">\n  <div class=\"comment__avatar-wrapper\">\n    <img class=\"comment__avatar\" src=\"https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80\">\n  </div>\n  <div class=\"comment__content-wrapper\">\n    <h3 class=\"comment__author\">\n      {% unless include.url == blank %}\n        <a rel=\"nofollow\" href=\"{{ include.url }}\">{{ include.name }}</a>\n      {% else %}\n        {{ include.name }}\n      {% endunless %}\n    </h3>\n    <p class=\"comment__date\">\n      {% if include.date %}\n        {% if include.index %}<a href=\"#comment{{ include.index }}\">{% endif %}\n        <time datetime=\"{{ include.date | date_to_xmlschema }}\">{{ include.date | date: \"%B %d, %Y at %I:%M %p\" }}</time>\n        {% if include.index %}</a>{% endif %}\n      {% endif %}\n    </p>\n    {{ include.message | markdownify }}\n  </div>\n</article>"
  },
  {
    "path": "_includes/comments-providers/custom.html",
    "content": "<!-- start custom comments snippet -->\n\n<!-- end custom comments snippet -->"
  },
  {
    "path": "_includes/comments-providers/discourse.html",
    "content": "{% if site.comments.discourse.server %}\n{% include base_path %}\n{% capture canonical %}{{ base_path }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}\n<script type=\"text/javascript\">\n    DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/',\n                       discourseEmbedUrl: '{{ canonical }}' };\n   (function () {\n     var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;\n     d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';\n     (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);\n   })();\n</script>\n<noscript>Please enable JavaScript to view the comments powered by [Discourse](http://forum.beta-europe.org/c/beta/website).</a></noscript>\n{% endif %}"
  },
  {
    "path": "_includes/comments-providers/disqus.html",
    "content": "{% if site.comments.disqus.shortname %}\n  <script type=\"text/javascript\">\n  \t/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */\n  \tvar disqus_shortname = '{{ site.comments.disqus.shortname }}';\n\n  \t/* * * DON'T EDIT BELOW THIS LINE * * */\n  \t(function() {\n  \t\tvar dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;\n  \t\tdsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';\n  \t\t(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);\n  \t})();\n\n  \t/* * * DON'T EDIT BELOW THIS LINE * * */\n  \t(function () {\n  \t\tvar s = document.createElement('script'); s.async = true;\n  \t\ts.type = 'text/javascript';\n  \t\ts.src = '//' + disqus_shortname + '.disqus.com/count.js';\n  \t\t(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);\n  \t}());\n  </script>\n  <noscript>Please enable JavaScript to view the <a href=\"http://disqus.com/?ref_noscript\">comments powered by Disqus.</a></noscript>\n{% endif %}"
  },
  {
    "path": "_includes/comments-providers/facebook.html",
    "content": "<div id=\"fb-root\"></div>\n<script>(function(d, s, id) {\n  var js, fjs = d.getElementsByTagName(s)[0];\n  if (d.getElementById(id)) return;\n  js = d.createElement(s); js.id = id;\n  js.src = \"//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}\";\n  fjs.parentNode.insertBefore(js, fjs);\n}(document, 'script', 'facebook-jssdk'));</script>"
  },
  {
    "path": "_includes/comments-providers/google-plus.html",
    "content": "<script async type=\"text/javascript\" src=\"//apis.google.com/js/plusone.js?callback=gpcb\"></script>\n<noscript>Please enable JavaScript to view the <a href=\"https://plus.google.com/\">comments powered by Google+.</a></noscript>"
  },
  {
    "path": "_includes/comments-providers/scripts.html",
    "content": "{% if site.comments.provider and page.comments %}\n\n{% case site.comments.provider %}\n{% when \"disqus\" %}\n  {% include /comments-providers/disqus.html %}\n{% when \"discourse\" %}\n  {% include /comments-providers/discourse.html %}\n{% when \"facebook\" %}\n  {% include /comments-providers/facebook.html %}\n{% when \"google-plus\" %}\n  {% include /comments-providers/google-plus.html %}\n{% when \"staticman\" %}\n  {% include /comments-providers/staticman.html %}\n{% when \"custom\" %}\n  {% include /comments-providers/custom.html %}\n{% endcase %}\n\n{% endif %}"
  },
  {
    "path": "_includes/comments-providers/staticman.html",
    "content": "{% if site.repository and site.staticman.branch %}\n  <script>\n    (function ($) {\n    var $comments = $('.js-comments');\n\n    $('#new_comment').submit(function () {\n      var form = this;\n\n      $(form).addClass('disabled');\n      $('#comment-form-submit').html('<i class=\"fa fa-spinner fa-spin fa-fw\"></i> {{ site.data.ui-text[site.locale].loading_label | default: \"Loading...\" }}');\n\n      $.ajax({\n        type: $(this).attr('method'),\n        url: $(this).attr('action'),\n        data: $(this).serialize(),\n        contentType: 'application/x-www-form-urlencoded',\n        success: function (data) {\n          $('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: \"Submitted\" }}');\n          $('.page__comments-form .js-notice').removeClass('notice--danger');\n          $('.page__comments-form .js-notice').addClass('notice--success');\n          showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: \"Thanks for your comment! It will show on the site once it has been approved.\" }}');\n        },\n        error: function (err) {\n          console.log(err);\n          $('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit  | default: \"Submit Comment\" }}');\n          $('.page__comments-form .js-notice').removeClass('notice--success');\n          $('.page__comments-form .js-notice').addClass('notice--danger');\n          showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: \"Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again.\" }}');\n          $(form).removeClass('disabled');\n        }\n      });\n\n      return false;\n    });\n\n    function showAlert(message) {\n      $('.page__comments-form .js-notice').removeClass('hidden');\n      $('.page__comments-form .js-notice-text').html(message);\n    }\n  })(jQuery);\n  </script>\n{% endif %}"
  },
  {
    "path": "_includes/comments.html",
    "content": "{% include base_path %}\n\n<div class=\"page__comments\">\n  {% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: \"Comments\" }}{% endcapture %}\n  {% case site.comments.provider %}\n  {% when \"disqus\" %}\n    <h4 class=\"page__comments-title\">{{ comments_label }}</h4>\n    <section id=\"disqus_thread\"></section>\n    {% include /comments-providers/disqus.html %}\n  {% when \"facebook\" %}\n    <h4 class=\"page__comments-title\">{{ comments_label }}</h4>\n    <section class=\"fb-comments\" data-href=\"{{ base_path }}{{ page.url }}\" data-mobile=\"true\" data-num-posts=\"{{ site.comments.facebook.num_posts | default: 5 }}\" data-width=\"100%\" data-colorscheme=\"{{ site.comments.facebook.colorscheme | default: 'light' }}\"></section>\n  {% when \"google-plus\" %}\n    <h4 class=\"page__comments-title\">{{ comments_label }}</h4>\n    <section class=\"g-comments\" data-href=\"{{ base_path }}{{ page.url }}\" data-first_party_property=\"BLOGGER\" data-view_type=\"FILTERED_POSTMOD\">Loading Google+ Comments ...</section>\n  {% when \"staticman\" %}\n    <section id=\"comments\">\n      {% if site.repository and site.staticman.branch %}\n        <!-- Start static comments -->\n        <div class=\"js-comments\">\n          {% if site.data.comments[page.slug] %}\n            <h4 class=\"page__comments-title\">{{ site.data.ui-text[site.locale].comments_title | default: \"Comments\" }}</h4>\n            {% assign comments = site.data.comments[page.slug] | sort %}\n\n            {% for comment in comments %}\n              {% assign email = comment[1].email %}\n              {% assign name = comment[1].name %}\n              {% assign url = comment[1].url %}\n              {% assign date = comment[1].date %}\n              {% assign message = comment[1].message %}\n              {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}\n            {% endfor %}\n          {% endif %}\n        </div>\n        <!-- End static comments -->\n\n        <!-- Start new comment form -->\n        <h4 class=\"page__comments-title\">{{ site.data.ui-text[site.locale].comments_label | default: \"Leave a Comment\" }}</h4>\n        <p class=\"small\">{{ site.data.ui-text[site.locale].comment_form_info | default: \"Your email address will not be published. Required fields are marked\" }} <span class=\"required\">*</span></p>\n        <form id=\"new_comment\" class=\"page__comments-form js-form form\" method=\"post\" action=\"https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}\">\n          <div class=\"form__spinner\">\n            <i class=\"fa fa-spinner fa-spin fa-3x fa-fw\"></i>\n            <span class=\"sr-only\">{{ site.data.ui-text[site.locale].loading_label | default: \"Loading...\" }}</span>\n          </div>\n\n          <fieldset>\n            <label for=\"comment-form-message\">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: \"Comment\" }} <small class=\"required\">*</small></label>\n            <textarea type=\"text\" rows=\"3\" id=\"comment-form-message\" name=\"fields[message]\" tabindex=\"1\"></textarea>\n            <div class=\"small help-block\"><a href=\"https://daringfireball.net/projects/markdown/\">{{ site.data.ui-text[site.locale].comment_form_md_info | default: \"Markdown is supported.\" }}</a></div>\n          </fieldset>\n          <fieldset>\n            <label for=\"comment-form-name\">{{ site.data.ui-text[site.locale].comment_form_name_label | default: \"Name\" }} <small class=\"required\">*</small></label>\n            <input type=\"text\" id=\"comment-form-name\" name=\"fields[name]\" tabindex=\"2\" />\n          </fieldset>\n          <fieldset>\n            <label for=\"comment-form-email\">{{ site.data.ui-text[site.locale].comment_form_email_label | default: \"Email address\" }} <small class=\"required\">*</small></label>\n            <input type=\"email\" id=\"comment-form-email\" name=\"fields[email]\" tabindex=\"3\" />\n          </fieldset>\n          <fieldset>\n            <label for=\"comment-form-url\">{{ site.data.ui-text[site.locale].comment_form_website_label | default: \"Website (optional)\" }}</label>\n            <input type=\"url\" id=\"comment-form-url\" name=\"fields[url]\" tabindex=\"4\"/>\n          </fieldset>\n          <fieldset class=\"hidden\">\n            <input type=\"hidden\" name=\"options[slug]\" value=\"{{ page.slug }}\">\n            <input type=\"hidden\" name=\"fields[hidden]\"/>\n          </fieldset>\n          <!-- Start comment form alert messaging -->\n          <p class=\"hidden js-notice\">\n            <strong class=\"js-notice-text\"></strong>\n          </p>\n          <!-- End comment form alert messaging -->\n          <fieldset>\n            <button type=\"submit\" id=\"comment-form-submit\" tabindex=\"5\" class=\"btn btn--large\">{{ site.data.ui-text[site.locale].comment_btn_submit | default: \"Submit Comment\" }}</button>\n          </fieldset>\n        </form>\n        <!-- End new comment form -->\n      {% endif %}\n    </section>\n  {% when \"custom\" %}\n    <h4 class=\"page__comments-title\">{{ comments_label }}</h4>\n    <section id=\"comments\"></section>\n    {% include /comments-providers/scripts.html %}\n  {% endcase %}\n</div>"
  },
  {
    "path": "_includes/cv-template.html",
    "content": "{% assign cv = site.data.cv %}\n\n<style>\n  .archive {\n    width: 80%;\n    margin: 0 auto;\n    float: none;\n    padding-right: 0;\n  }\n  \n  @media (min-width: 80em) {\n    .archive {\n      width: 70%;\n    }\n  }\n</style>\n\n<div class=\"cv-container\">\n  <!-- Basic Information -->\n  <div class=\"cv-section cv-header\">\n    <h1>{{ cv.basics.name }}</h1>\n    {% if cv.basics.label %}\n    <h2>{{ cv.basics.label }}</h2>\n    {% endif %}\n    \n    <div class=\"cv-contact\">\n      {% if cv.basics.email %}\n      <div class=\"cv-contact-item\">\n        <i class=\"fas fa-envelope\"></i> {{ cv.basics.email }}\n      </div>\n      {% endif %}\n      \n      {% if cv.basics.phone %}\n      <div class=\"cv-contact-item\">\n        <i class=\"fas fa-phone\"></i> {{ cv.basics.phone }}\n      </div>\n      {% endif %}\n      \n      {% if cv.basics.website %}\n      <div class=\"cv-contact-item\">\n        <i class=\"fas fa-globe\"></i> <a href=\"{{ cv.basics.website }}\" target=\"_blank\">{{ cv.basics.website }}</a>\n      </div>\n      {% endif %}\n      \n      {% if cv.basics.location.city %}\n      <div class=\"cv-contact-item\">\n        <i class=\"fas fa-map-marker-alt\"></i> {{ cv.basics.location.city }}{% if cv.basics.location.region %}, {{ cv.basics.location.region }}{% endif %}{% if cv.basics.location.countryCode %}, {{ cv.basics.location.countryCode }}{% endif %}\n      </div>\n      {% endif %}\n    </div>\n    \n    {% if cv.basics.profiles.size > 0 %}\n    <div class=\"cv-profiles\">\n      {% for profile in cv.basics.profiles %}\n      <a href=\"{{ profile.url }}\" target=\"_blank\" class=\"cv-profile-link\">\n        <i class=\"fab fa-{{ profile.network | downcase }}\"></i> {{ profile.network }}\n      </a>\n      {% endfor %}\n    </div>\n    {% endif %}\n  </div>\n  \n  {% if cv.basics.summary %}\n  <!-- Summary -->\n  <div class=\"cv-section\">\n    <h2>Summary</h2>\n    <p>{{ cv.basics.summary }}</p>\n  </div>\n  {% endif %}\n  \n  {% if cv.education.size > 0 %}\n  <!-- Education -->\n  <div class=\"cv-section\">\n    <h2>Education</h2>\n    <ul class=\"cv-list\">\n      {% for education in cv.education %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-header\">\n          <div class=\"cv-item-title\">{{ education.area }}</div>\n          <div class=\"cv-item-date\">{{ education.endDate }}</div>\n        </div>\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-subtitle\">{{ education.institution }}</div>\n          {% if education.gpa %}\n          <div class=\"cv-item-detail\">GPA: {{ education.gpa }}</div>\n          {% endif %}\n          {% if education.courses.size > 0 %}\n          <div class=\"cv-item-detail\">\n            <strong>Courses:</strong> {{ education.courses | join: \", \" }}\n          </div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.work.size > 0 %}\n  <!-- Work Experience -->\n  <div class=\"cv-section\">\n    <h2>Work Experience</h2>\n    <ul class=\"cv-list\">\n      {% for work in cv.work %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-header\">\n          <div class=\"cv-item-title\">{{ work.position }}</div>\n          <div class=\"cv-item-date\">{{ work.startDate }}{% if work.endDate %} - {{ work.endDate }}{% endif %}</div>\n        </div>\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-subtitle\">{{ work.company }}</div>\n          {% if work.summary %}\n          <div class=\"cv-item-detail\">{{ work.summary }}</div>\n          {% endif %}\n          {% if work.highlights.size > 0 %}\n          <ul class=\"cv-highlights\">\n            {% for highlight in work.highlights %}\n            <li>{{ highlight }}</li>\n            {% endfor %}\n          </ul>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.skills.size > 0 %}\n  <!-- Skills -->\n  <div class=\"cv-section\">\n    <h2>Skills</h2>\n    <div class=\"cv-skills\">\n      {% for skill in cv.skills %}\n      <div class=\"cv-skill-category\">\n        <h3>{{ skill.name }}</h3>\n        <ul class=\"cv-skill-list\">\n          {% for keyword in skill.keywords %}\n          <li>{{ keyword }}</li>\n          {% endfor %}\n        </ul>\n      </div>\n      {% endfor %}\n    </div>\n  </div>\n  {% endif %}\n  \n  {% if cv.publications.size > 0 %}\n  <!-- Publications -->\n  <div class=\"cv-section\">\n    <h2>Publications</h2>\n    <ul class=\"cv-list\">\n      {% for publication in cv.publications %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-header\">\n          <div class=\"cv-item-title\">{{ publication.name }}</div>\n          <div class=\"cv-item-date\">{{ publication.releaseDate | slice: 0, 4 }}</div>\n        </div>\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-subtitle\">{{ publication.publisher }}</div>\n          {% if publication.summary %}\n          <div class=\"cv-item-detail\">{{ publication.summary }}</div>\n          {% endif %}\n          {% if publication.website %}\n          <div class=\"cv-item-detail\">\n            <a href=\"{{ publication.website }}\" target=\"_blank\">View Publication</a>\n          </div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.presentations.size > 0 %}\n  <!-- Presentations/Talks -->\n  <div class=\"cv-section\">\n    <h2>Presentations</h2>\n    <ul class=\"cv-list\">\n      {% for talk in cv.presentations %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-header\">\n          <div class=\"cv-item-title\">{{ talk.name }}</div>\n          <div class=\"cv-item-date\">{{ talk.date | slice: 0, 4 }}</div>\n        </div>\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-subtitle\">{{ talk.event }}</div>\n          {% if talk.location %}\n          <div class=\"cv-item-detail\">{{ talk.location }}</div>\n          {% endif %}\n          {% if talk.description %}\n          <div class=\"cv-item-detail\">{{ talk.description }}</div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.teaching.size > 0 %}\n  <!-- Teaching -->\n  <div class=\"cv-section\">\n    <h2>Teaching</h2>\n    <ul class=\"cv-list\">\n      {% for teaching in cv.teaching %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-header\">\n          <div class=\"cv-item-title\">{{ teaching.course }}</div>\n          <div class=\"cv-item-date\">{{ teaching.date | slice: 0, 4 }}</div>\n        </div>\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-subtitle\">{{ teaching.institution }}</div>\n          {% if teaching.role %}\n          <div class=\"cv-item-detail\">Role: {{ teaching.role }}</div>\n          {% endif %}\n          {% if teaching.description %}\n          <div class=\"cv-item-detail\">{{ teaching.description }}</div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.portfolio.size > 0 %}\n  <!-- Portfolio -->\n  <div class=\"cv-section\">\n    <h2>Portfolio</h2>\n    <ul class=\"cv-list\">\n      {% for item in cv.portfolio %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-header\">\n          <div class=\"cv-item-title\">{{ item.name }}</div>\n          <div class=\"cv-item-date\">{{ item.date | slice: 0, 4 }}</div>\n        </div>\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-subtitle\">{{ item.category | capitalize }}</div>\n          {% if item.description %}\n          <div class=\"cv-item-detail\">{{ item.description }}</div>\n          {% endif %}\n          {% if item.url %}\n          <div class=\"cv-item-detail\">\n            <a href=\"{{ item.url }}\" target=\"_blank\">View Project</a>\n          </div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.languages.size > 0 %}\n  <!-- Languages -->\n  <div class=\"cv-section\">\n    <h2>Languages</h2>\n    <ul class=\"cv-list\">\n      {% for language in cv.languages %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-title\">{{ language.language }}</div>\n          <div class=\"cv-item-detail\">{{ language.fluency }}</div>\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.interests.size > 0 %}\n  <!-- Interests -->\n  <div class=\"cv-section\">\n    <h2>Interests</h2>\n    <ul class=\"cv-list\">\n      {% for interest in cv.interests %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-title\">{{ interest.name }}</div>\n          {% if interest.keywords.size > 0 %}\n          <div class=\"cv-item-detail\">{{ interest.keywords | join: \", \" }}</div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n  \n  {% if cv.references.size > 0 %}\n  <!-- References -->\n  <div class=\"cv-section\">\n    <h2>References</h2>\n    <ul class=\"cv-list\">\n      {% for reference in cv.references %}\n      <li class=\"cv-item\">\n        <div class=\"cv-item-content\">\n          <div class=\"cv-item-title\">{{ reference.name }}</div>\n          {% if reference.reference %}\n          <div class=\"cv-item-detail\">{{ reference.reference }}</div>\n          {% endif %}\n        </div>\n      </li>\n      {% endfor %}\n    </ul>\n  </div>\n  {% endif %}\n</div>\n"
  },
  {
    "path": "_includes/feature_row",
    "content": "{% include base_path %}\n\n{% if include.id %}\n  {% assign feature_row = page.[include.id] %}\n{% else %}\n  {% assign feature_row = page.feature_row %}\n{% endif %}\n\n<div class=\"feature__wrapper\">\n\n  {% for f in feature_row %}\n\n    {% if f.url contains \"://\" %}\n      {% capture f_url %}{{ f.url }}{% endcapture %}\n    {% else %}\n      {% capture f_url %}{{ f.url | prepend: base_path }}{% endcapture %}\n    {% endif %}\n\n    <div class=\"feature__item{% if include.type %}--{{ include.type }}{% endif %}\">\n      <div class=\"archive__item\">\n        {% if f.image_path %}\n          <div class=\"archive__item-teaser\">\n            <img src=\n              {% if f.image_path contains \"://\" %}\n                \"{{ f.image_path }}\"\n              {% else %}\n                \"{{ f.image_path | prepend: \"/images/\" | prepend: base_path }}\"\n              {% endif %}\n            alt=\"{% if f.alt %}{{ f.alt }}{% endif %}\">\n          </div>\n        {% endif %}\n\n        <div class=\"archive__item-body\">\n          {% if f.title %}\n            <h2 class=\"archive__item-title\">{{ f.title }}</h2>\n          {% endif %}\n\n          {% if f.excerpt %}\n            <div class=\"archive__item-excerpt\">\n              {{ f.excerpt | markdownify }}\n            </div>\n          {% endif %}\n\n          {% if f.url %}\n            <p><a href=\"{{ f_url }}\" class=\"btn {{ f.btn_class }}\">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: \"Learn More\" }}</a></p>\n          {% endif %}\n        </div>\n      </div>\n    </div>\n  {% endfor %}\n\n</div>"
  },
  {
    "path": "_includes/footer/custom.html",
    "content": "<!-- start custom footer snippets -->\n\n<a href=\"/sitemap/\">Sitemap</a>\n\n<!-- Support for MatJax -->\n<script defer src=\"https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6\"></script>\n<script defer src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\" id=\"MathJax-script\"></script>\n\n<!-- Support for Mermaid -->\n<script type=\"module\">\n    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';\n    mermaid.initialize({startOnLoad:true, theme:'default'});\n    await mermaid.run({querySelector:'code.language-mermaid'});\n</script>\n\n<!-- end custom footer snippets -->\n"
  },
  {
    "path": "_includes/footer.html",
    "content": "{% include base_path %}\n\n{% if site.author.github or site.author.bitbucket or site.atom_feed.hide != true %}\n<div class=\"page__footer-follow\">\n  <ul class=\"social-icons\">\n    {% if site.data.ui-text[site.locale].follow_label %}\n      <li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>\n    {% endif %}\n    {% if site.author.github %}\n      <li><a href=\"https://github.com/{{ site.author.github }}\"><i class=\"fab fa-github\" aria-hidden=\"true\"></i> GitHub</a></li>\n    {% endif %}\n    {% if site.author.bitbucket %}\n      <li><a href=\"https://bitbucket.org/{{ site.author.bitbucket }}\"><i class=\"fab fa-bitbucket\" aria-hidden=\"true\"></i> Bitbucket</a></li>\n    {% endif %}\n    {% if site.atom_feed.hide != true %}\n    <li><a href=\"{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}\"><i class=\"fa fa-fw fa-rss-square\" aria-hidden=\"true\"></i> {{ site.data.ui-text[site.locale].feed_label | default: \"Feed\" }}</a></li>\n    {% endif %}\n  </ul>\n</div>\n{% endif %}\n\n<div class=\"page__footer-copyright\">\n  &copy; {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}, {{ site.data.ui-text[site.locale].powered_by | default: \"Powered by\" }} <a href=\"https://jekyllrb.com\" rel=\"nofollow\">Jekyll</a> &amp; <a href=\"https://github.com/academicpages/academicpages.github.io\">AcademicPages</a>, a fork of <a href=\"https://mademistakes.com/work/minimal-mistakes-jekyll-theme/\" rel=\"nofollow\">Minimal Mistakes</a>.<br />\n  Site last updated {{ \"now\" | date: '%Y-%m-%d' }}\n</div>\n"
  },
  {
    "path": "_includes/gallery",
    "content": "{% include base_path %}\n\n{% if include.id %}\n  {% assign gallery = page.[include.id] %}\n{% else %}\n  {% assign gallery = page.gallery %}\n{% endif %}\n\n{% if gallery.size == 2 %}\n  {% assign gallery_layout = 'half' %}\n{% elsif gallery.size >= 3 %}\n  {% assign gallery_layout = 'third' %}\n{% else %}\n  {% assign gallery_layout = '' %}\n{% endif %}\n\n<figure class=\"{{ gallery_layout }} {{ include.class }}\">\n  {% for img in gallery %}\n    {% if img.url %}\n      <a href=\n        {% if img.url contains \"://\" %}\n          \"{{ img.url }}\"\n        {% else %}\n          \"{{ img.url | prepend: \"/images/\" | prepend: base_path }}\"\n        {% endif %}\n        {% if img.title %}title=\"{{ img.title }}\"{% endif %}\n      >\n        <img src=\n          {% if img.image_path contains \"://\" %}\n            \"{{ img.image_path }}\"\n          {% else %}\n            \"{{ img.image_path | prepend: \"/images/\" | prepend: base_path }}\"\n          {% endif %}\n          alt=\"{% if img.alt %}{{ img.alt }}{% endif %}\">\n      </a>\n    {% else %}\n      <img src=\n        {% if img.image_path contains \"://\" %}\n          \"{{ img.image_path }}\"\n        {% else %}\n          \"{{ img.image_path | prepend: \"/images/\" | prepend: base_path }}\"\n        {% endif %}\n        alt=\"{% if img.alt %}{{ img.alt }}{% endif %}\">\n    {% endif %}\n  {% endfor %}\n  {% if include.caption %}\n    <figcaption>{{ include.caption | markdownify | remove: \"<p>\" | remove: \"</p>\" }}</figcaption>\n  {% endif %}\n</figure>"
  },
  {
    "path": "_includes/group-by-array",
    "content": "<!--\n# Jekyll Group-By-Array 0.1.0\n# https://github.com/mushishi78/jekyll-group-by-array\n# © 2015 Max White <mushishi78@gmail.com>\n# MIT License\n-->\n\n<!-- Initialize -->\n{% assign __empty_array = '' | split: ',' %}\n{% assign group_names = __empty_array %}\n{% assign group_items = __empty_array %}\n\n<!-- Map -->\n{% assign __names =  include.collection | map: include.field %}\n\n<!-- Flatten -->\n{% assign __names =  __names | join: ',' | join: ',' | split: ',' %}\n\n<!-- Uniq -->\n{% assign __names =  __names | sort %}\n{% for name in __names | sort %}\n\n<!-- If not equal to previous then it must be unique as sorted -->\n{% unless name == previous %}\n\n<!-- Push to group_names -->\n{% assign group_names = group_names | push: name %}\n{% endunless %}\n\n{% assign previous = name %}\n{% endfor %}\n\n\n<!-- group_items -->\n{% for name in group_names %}\n\n<!-- Collect if contains -->\n{% assign __item = __empty_array %}\n{% for __element in include.collection %}\n{% if __element[include.field] contains name %}\n{% assign __item = __item | push: __element %}\n{% endif %}\n{% endfor %}\n\n<!-- Push to group_items -->\n{% assign group_items = group_items | push: __item %}\n{% endfor %}"
  },
  {
    "path": "_includes/head/custom.html",
    "content": "{% include base_path %}\n\n<!-- start custom head snippets -->\n\n<!-- Support for Academicons -->\n<link rel=\"stylesheet\" href=\"{{ base_path }}/assets/css/academicons.css\"/>\n\n<!-- favicon from https://commons.wikimedia.org/wiki/File:OOjs_UI_icon_academic-progressive.svg -->\n<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"{{ base_path }}/images/apple-touch-icon-180x180.png\"/>\n<link rel=\"icon\" type=\"image/svg+xml\" href=\"{{ base_path }}/images/favicon.svg\"/>\n<link rel=\"icon\" type=\"image/png\" href=\"{{ base_path }}/images/favicon-32x32.png\" sizes=\"32x32\"/>\n<link rel=\"icon\" type=\"image/png\" href=\"{{ base_path }}/images/favicon-192x192.png\" sizes=\"192x192\"/>\n<link rel=\"manifest\" href=\"{{ base_path }}/images/manifest.json\"/>\n<link rel=\"icon\" href=\"/images/favicon.ico\"/>\n<meta name=\"theme-color\" content=\"#ffffff\"/>\n\n<!-- end custom head snippets -->\n"
  },
  {
    "path": "_includes/head.html",
    "content": "{% include base_path %}\n\n<meta charset=\"utf-8\">\n\n{% include seo.html %}\n\n<link href=\"{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}\" type=\"application/atom+xml\" rel=\"alternate\" title=\"{{ site.title }} Feed\">\n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<script>\n  document.documentElement.className = document.documentElement.className.replace(/\\bno-js\\b/g, '') + ' js ';\n</script>\n\n<!-- For all browsers -->\n<link rel=\"stylesheet\" href=\"{{ base_path }}/assets/css/main.css\">\n"
  },
  {
    "path": "_includes/masthead.html",
    "content": "{% include base_path %}\n<div class=\"masthead\">\n  <div class=\"masthead__inner-wrap\">\n    <div class=\"masthead__menu\">\n      <nav id=\"site-nav\" class=\"greedy-nav\">\n        <button><span class=\"navicon\"></span></button>\n        <ul class=\"visible-links\">\n          <li class=\"masthead__menu-item masthead__menu-item--lg persist {% if page.url == '/' or page.url == '/index.html' %}selected{% endif %}\">\n            <a href=\"{{ base_path }}/\">{{ site.title }}</a>\n          </li>\n          {% for link in site.data.navigation.main %}\n            {% if link.url contains 'http' %}\n              {% assign domain = '' %}\n            {% else %}\n              {% assign domain = base_path %}\n            {% endif %}\n            <li class=\"masthead__menu-item {% if page.url contains link.url and link.url != '/' %}selected{% endif %}\">\n              <a href=\"{{ domain }}{{ link.url }}\">{{ link.title }}</a>\n            </li>\n          {% endfor %}\n          <li id=\"theme-toggle\" class=\"masthead__menu-item persist tail\">\n            <a role=\"button\" aria-labelledby=\"theme-icon\"><i id=\"theme-icon\" class=\"fa-solid fa-sun\" aria-hidden=\"true\" title=\"toggle theme\"></i></a>\n          </li>\n        </ul>\n        <ul class=\"hidden-links hidden\"></ul>\n      </nav>\n    </div>\n  </div>\n</div>\n"
  },
  {
    "path": "_includes/nav_list",
    "content": "{% include base_path %}\n{% assign navigation = site.data.navigation[include.nav] %}\n\n<nav class=\"nav__list\">\n  {% if page.sidebar.title %}<header><h4 class=\"nav__title\" style=\"padding: 0;\">{{ page.sidebar.title }}</h4></header>{% endif %}\n  <ul>\n    {% for nav in navigation %}\n      <li>\n        {% if nav.url %}\n          {% comment %}internal/external URL check{% endcomment %}\n          {% if nav.url contains \"://\" %}\n            {% assign domain = \"\" %}\n          {% else %}\n            {% assign domain = base_path %}\n          {% endif %}\n\n          <a href=\"{{ domain }}{{ nav.url }}\"><span class=\"nav__sub-title\">{{ nav.title }}</span></a>\n        {% else %}\n          <span class=\"nav__sub-title\">{{ nav.title }}</span>\n        {% endif %}\n\n        {% if nav.children != null %}\n        <ul>\n          {% for child in nav.children %}\n            {% comment %}internal/external URL check{% endcomment %}\n            {% if child.url contains \"://\" %}\n              {% assign domain = \"\" %}\n            {% else %}\n              {% assign domain = base_path %}\n            {% endif %}\n\n            {% comment %}set \"active\" class on current page{% endcomment %}\n            {% if child.url == page.url %}\n              {% assign active = \"active\" %}\n            {% else %}\n              {% assign active = \"\" %}\n            {% endif %}\n\n            <li><a href=\"{{ domain }}{{ child.url }}\" class=\"{{ active }}\">{{ child.title }}</a></li>\n          {% endfor %}\n        </ul>\n        {% endif %}\n      </li>\n    {% endfor %}\n  </ul>\n</nav>"
  },
  {
    "path": "_includes/page__hero.html",
    "content": "{% include base_path %}\n\n{% if page.header.image contains \"://\" %}\n  {% capture img_path %}{{ page.header.image }}{% endcapture %}\n{% else %}\n  {% capture img_path %}{{ page.header.image | prepend: \"/images/\" | prepend: base_path }}{% endcapture %}\n{% endif %}\n\n{% if page.header.cta_url contains \"://\" %}\n  {% capture cta_path %}{{ page.header.cta_url }}{% endcapture %}\n{% else %}\n  {% capture cta_path %}{{ page.header.cta_url | prepend: base_path }}{% endcapture %}\n{% endif %}\n\n{% if page.header.overlay_image contains \"://\" %}\n  {% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %}\n{% elsif page.header.overlay_image %}\n  {% capture overlay_img_path %}{{ page.header.overlay_image | prepend: \"/images/\" | prepend: base_path }}{% endcapture %}\n{% endif %}\n\n{% if page.header.overlay_filter contains \"rgba\" %}\n  {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}\n{% elsif page.header.overlay_filter %}\n  {% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}\n{% endif %}\n\n<div class=\"page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}\"\n  style=\"{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}\"\n>\n  {% if page.header.overlay_color or page.header.overlay_image %}\n    <div class=\"wrapper\">\n      <h1 class=\"page__title\" itemprop=\"headline\">\n        {% if paginator %}\n          {{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: \"Page\" }} {{ paginator.page }}{% endunless %}\n        {% else %}\n          {{ page.title | default: site.title | markdownify | remove: \"<p>\" | remove: \"</p>\" }}\n        {% endif %}\n      </h1>\n      {% if page.excerpt %}\n        <p class=\"page__lead\">{{ page.excerpt | markdownify | remove: \"<p>\" | remove: \"</p>\" }}</p>\n      {% endif %}\n      {% if site.read_time and page.read_time %}\n        <p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {% include read-time.html %}</p>\n      {% endif %}\n      {% if page.header.cta_url %}\n        <p><a href=\"{{ cta_path }}\" class=\"btn btn--light-outline btn--large\">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: \"Learn More\" }}</a></p>\n      {% endif %}\n    </div>\n  {% else %}\n    <img src=\"{{ img_path }}\" alt=\"{{ page.title }}\" class=\"page__hero-image\">\n  {% endif %}\n  {% if page.header.caption %}\n    <span class=\"page__hero-caption\">{{ page.header.caption | markdownify | remove: \"<p>\" | remove: \"</p>\" }}</span>\n  {% endif %}\n</div>"
  },
  {
    "path": "_includes/page__taxonomy.html",
    "content": "{% include base_path %}\n\n{% if site.tag_archive.type and page.tags[0] %}\n  {% include tag-list.html %}\n{% endif %}\n\n{% if site.category_archive.type and page.categories[0] and page.collection != 'publications' %}\n  {% include category-list.html %}\n{% endif %}"
  },
  {
    "path": "_includes/paginator.html",
    "content": "{% include base_path %}\n\n{% if paginator.total_pages > 1 %}\n<nav class=\"pagination\">\n  <ul>\n    {% comment %} Link for previous page {% endcomment %}\n    {% if paginator.previous_page %}\n      {% if paginator.previous_page == 1 %}\n        <li><a href=\"{{ base_path }}/\">{{ site.data.ui-text[site.locale].pagination_previous | default: \"Previous\" }}</a></li>\n      {% else %}\n        <li><a href=\"{{ base_path }}/page{{ paginator.previous_page }}/\">{{ site.data.ui-text[site.locale].pagination_previous | default: \"Previous\" }}</a></li>\n      {% endif %}\n    {% else %}\n      <li><a href=\"#\" class=\"disabled\"><span aria-hidden=\"true\">{{ site.data.ui-text[site.locale].pagination_previous | default: \"Previous\" }}</span></a></li>\n    {% endif %}\n\n    {% comment %} First page {% endcomment %}\n    {% if paginator.page == 1 %}\n      <li><a href=\"#\" class=\"disabled current\">1</a></li>\n    {% else %}\n      <li><a href=\"{{ base_path }}/\">1</a></li>\n    {% endif %}\n\n    {% assign page_start = 2 %}\n    {% if paginator.page > 4 %}\n      {% assign page_start = paginator.page | minus: 2 %}\n      {% comment %} Ellipsis for truncated links {% endcomment %}\n      <li><a href=\"#\" class=\"disabled\">&hellip;</a></li>\n    {% endif %}\n\n    {% assign page_end = paginator.total_pages | minus: 1 %}\n    {% assign pages_to_end = paginator.total_pages | minus: paginator.page %}\n    {% if pages_to_end > 4 %}\n      {% assign page_end = paginator.page | plus: 2 %}\n    {% endif %}\n\n    {% for index in (page_start..page_end) %}\n      {% if index == paginator.page %}\n        <li><a href=\"{{ base_path }}/page{{ index }}/\" class=\"disabled current\">{{ index }}</a></li>\n      {% else %}\n        {% comment %} Distance from current page and this link {% endcomment %}\n        {% assign dist = paginator.page | minus: index %}\n        {% if dist < 0 %}\n          {% comment %} Distance must be a positive value {% endcomment %}\n          {% assign dist = 0 | minus: dist %}\n        {% endif %}\n        <li><a href=\"{{ base_path }}/page{{ index }}/\">{{ index }}</a></li>\n      {% endif %}\n    {% endfor %}\n\n    {% comment %} Ellipsis for truncated links {% endcomment %}\n    {% if pages_to_end > 3 %}\n      <li><a href=\"#\" class=\"disabled\">&hellip;</a></li>\n    {% endif %}\n\n    {% if paginator.page == paginator.total_pages %}\n      <li><a href=\"#\" class=\"disabled current\">{{ paginator.page }}</a></li>\n    {% else %}\n      <li><a href=\"{{ base_path }}/page{{ paginator.total_pages }}/\">{{ paginator.total_pages }}</a></li>\n    {% endif %}\n\n    {% comment %} Link next page {% endcomment %}\n    {% if paginator.next_page %}\n      <li><a href=\"{{ base_path }}/page{{ paginator.next_page }}/\">{{ site.data.ui-text[site.locale].pagination_next | default: \"Next\" }}</a></li>\n    {% else %}\n      <li><a href=\"#\" class=\"disabled\"><span aria-hidden=\"true\">{{ site.data.ui-text[site.locale].pagination_next | default: \"Next\" }}</span></a></li>\n    {% endif %}\n  </ul>\n</nav>\n{% endif %}"
  },
  {
    "path": "_includes/post_pagination.html",
    "content": "{% include base_path %}\n\n{% if page.previous or page.next %}\n  <nav class=\"pagination\">\n    {% if page.previous %}\n      <a href=\"{{ base_path }}{{ page.previous.url }}\" class=\"pagination--pager\" title=\"{{ page.previous.title | markdownify | strip_html }}\">{{ site.data.ui-text[site.locale].pagination_previous | default: \"Previous\" }}</a>\n    {% else %}\n      <a href=\"#\" class=\"pagination--pager disabled\">{{ site.data.ui-text[site.locale].pagination_previous | default: \"Previous\" }}</a>\n    {% endif %}\n    {% if page.next %}\n      <a href=\"{{ base_path }}{{ page.next.url }}\" class=\"pagination--pager\" title=\"{{ page.next.title | markdownify | strip_html }}\">{{ site.data.ui-text[site.locale].pagination_next | default: \"Next\" }}</a>\n    {% else %}\n      <a href=\"#\" class=\"pagination--pager disabled\">{{ site.data.ui-text[site.locale].pagination_next | default: \"Next\" }}</a>\n    {% endif %}\n  </nav>\n{% endif %}"
  },
  {
    "path": "_includes/read-time.html",
    "content": "{% if post.read_time %}\n  {% assign words = post.content | strip_html | number_of_words %}\n{% elsif page.read_time %}\n  {% assign words = page.content | strip_html | number_of_words %}\n{% endif %}\n\n{% if site.words_per_minute %}\n  {% if words < 180 %}\n\t  {{ site.data.ui-text[site.locale].less_than | default: \"less than\" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: \"minute read\" }}\n\t{% elsif words < 360 %}\n\t  1 {{ site.data.ui-text[site.locale].minute_read | default: \"minute read\" }}\n\t{% else %}\n\t  {{ words | divided_by:site.words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: \"minute read\" }}\n\t{% endif %}\n{% else %}\n  {{ site.data.ui-text[site.locale].undefined_wpm | \"Undefined parameter words_per_minute at _config.yml\" }}\n{% endif %}"
  },
  {
    "path": "_includes/scripts.html",
    "content": "<script type=\"module\" src=\"{{ base_path }}/assets/js/main.min.js\"></script>\n\n{% include analytics.html %}\n"
  },
  {
    "path": "_includes/seo.html",
    "content": "{% include base_path %}\n\n<!-- begin SEO -->\n{% if site.url %}\n  {% assign seo_url = site.url | append: site.baseurl %}\n{% endif %}\n{% assign seo_url = seo_url | default: site.github.url %}\n\n{% if page.title %}\n  {% assign seo_title = page.title | append: \" \" | append: site.title_separator | append: \" \" | append: site.title %}\n{% endif %}\n\n{% if seo_title %}\n  {% assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once %}\n{% endif %}\n\n{% if site.url %}\n  {% assign canonical_url = page.url | replace: \"index.html\", \"\" | prepend: site.url %}\n{% endif %}\n\n<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ site.title_separator }} {{ site.data.ui-text[site.locale].page | default: \"Page\" }} {{ paginator.page }}{% endunless %}{% endif %}</title>\n\n{% assign seo_description = page.description | default: page.excerpt | default: site.description %}\n{% if seo_description %}\n  {% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %}\n{% endif %}\n<meta name=\"description\" content=\"{{ seo_description }}\">\n\n{% assign seo_author = page.author | default: page.author[0] | default: site.author[0] %}\n{% if seo_author %}\n  {% if seo_author.twitter %}\n    {% assign seo_author_twitter = seo_author.twitter %}\n  {% else %}\n    {% if site.data.authors and site.data.authors[seo_author] %}\n      {% assign seo_author_twitter = site.data.authors[seo_author].twitter  %}\n    {% else %}\n      {% assign seo_author_twitter = seo_author  %}\n    {% endif %}\n  {% endif %}\n  {% assign seo_author_twitter = seo_author_twitter | replace: \"@\", \"\" %}\n{% endif %}\n\n{% if page.date %}\n  <meta property=\"article:published_time\" content=\"{{ page.date | date_to_xmlschema }}\">\n{% endif %}\n\n{% if seo_url %}\n  <link rel=\"canonical\" href=\"{{ page.url | prepend: seo_url | replace: \"/index.html\", \"/\" }}\">\n{% endif %}\n\n{% if site.twitter.username %}\n  <meta name=\"twitter:site\" content=\"@{{ site.twitter.username | replace: \"@\", \"\" }}\">\n  <meta name=\"twitter:title\" content=\"{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}\">\n  <meta name=\"twitter:description\" content=\"{{ seo_description }}\">\n  <meta name=\"twitter:url\" content=\"{{ canonical_url }}\">\n\n  {% if page.header.image %}\n    <meta name=\"twitter:card\" content=\"summary_large_image\">\n    <meta name=\"twitter:image\" content=\"{% if page.header.image contains \"://\" %}{{ page.header.image }}{% else %}{{ page.header.image | prepend: \"/images/\" | prepend: base_path }}{% endif %}\">\n  {% else %}\n    <meta name=\"twitter:card\" content=\"summary\">\n    {% if site.og_image %}\n      <meta name=\"twitter:image\" content=\"{{ site.og_image | prepend: \"/images/\" | prepend: base_path }}\">\n    {% endif %}\n  {% endif %}\n\n  {% if seo_author_twitter %}\n    <meta name=\"twitter:creator\" content=\"@{{ seo_author_twitter }}\">\n  {% endif %}\n{% endif %}\n\n{% if site.facebook %}\n  {% if site.facebook.publisher %}\n    <meta property=\"article:publisher\" content=\"{{ site.facebook.publisher }}\">\n  {% endif %}\n\n  {% if site.facebook.app_id %}\n    <meta property=\"fb:app_id\" content=\"{{ site.facebook.app_id }}\">\n  {% endif %}\n{% endif %}\n\n{% if paginator.previous_page %}\n  <link rel=\"prev\" href=\"{{ paginator.previous_page_path | prepend: seo_url }}\">\n{% endif %}\n{% if paginator.next_page %}\n  <link rel=\"next\" href=\"{{ paginator.next_page_path | prepend: seo_url }}\">\n{% endif %}\n\n{% if site.social %}\n  <script type=\"application/ld+json\">\n    {\n      \"@context\" : \"http://schema.org\",\n      \"@type\" : \"{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}\",\n      \"name\" : \"{{ site.social.name | default: site.name }}\",\n      \"url\" : {{ seo_url | jsonify }},\n      \"sameAs\" : {{ site.social.links | jsonify }}\n    }\n  </script>\n{% endif %}\n\n{% if site.google_site_verification %}\n  <meta name=\"google-site-verification\" content=\"{{ site.google_site_verification }}\" />\n{% endif %}\n{% if site.bing_site_verification %}\n  <meta name=\"msvalidate.01\" content=\"{{ site.bing_site_verification }}\">\n{% endif %}\n{% if site.alexa_site_verification %}\n  <meta name=\"alexaVerifyID\" content=\"{{ site.alexa_site_verification }}\">\n{% endif %}\n{% if site.yandex_site_verification %}\n  <meta name=\"yandex-verification\" content=\"{{ site.yandex_site_verification }}\">\n{% endif %}\n<!-- end SEO -->\n\n<!-- Open Graph protocol data (https://ogp.me/), used by social media -->\n<meta property=\"og:locale\" content=\"{{ site.locale | default: \"en\" }}\">\n<meta property=\"og:site_name\" content=\"{{ site.title }}\"> \n<meta property=\"og:title\" content=\"{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}\">\n{% if page.date %}\n  <meta property=\"og:type\" content=\"article\">\n{% endif %}\n{% if page.excerpt %}\n  <meta property=\"og:description\" name=\"description\" content=\"{{ seo_description }}\">\n{% elsif site.og_description %}\n  <meta property=\"og:description\" name=\"description\" content=\"{{ site.og_description }}\">\n{% endif %}\n{% if seo_url %}\n  <meta property=\"og:url\" content=\"{{ page.url | prepend: seo_url | replace: \"/index.html\", \"/\" }}\">\n{% endif %}\n\n{% if site.og_image %}\n  <script type=\"application/ld+json\">\n    {\n      \"@context\": \"http://schema.org\",\n      \"@type\": \"Organization\",\n      \"url\": {{ seo_url | jsonify }},\n      \"logo\": {{ site.og_image | prepend: \"/images/\" | prepend: base_path | jsonify }}\n    }\n  </script>\n{% endif %}\n\n{% if page.header.image %}\n  <meta property=\"og:image\" content=\"{% if page.header.image contains \"://\" %}{{ page.header.image }}{% else %}{{ page.header.image | prepend: \"/images/\" | prepend: base_path }}{% endif %}\">\n{% elsif page.header.overlay_image %}\n  <meta property=\"og:image\" content=\"{% if page.header.overlay_image contains \"://\" %}{{ page.header.overlay_image }}{% else %}{{ page.header.overlay_image | prepend: \"/images/\" | prepend: base_path }}{% endif %}\">\n{% endif %}\n<!-- end Open Graph protocol -->"
  },
  {
    "path": "_includes/sidebar.html",
    "content": "{% include base_path %}\n\n{% if page.author_profile or layout.author_profile or page.sidebar %}\n  <div class=\"sidebar sticky\">\n  {% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %}\n  {% if page.sidebar %}\n    {% for s in page.sidebar %}\n      {% if s.image %}\n        <img src=\n        {% if s.image contains \"://\" %}\n          \"{{ s.image }}\"\n        {% else %}\n          \"{{ s.image | prepend: \"/images/\" | prepend: base_path }}\"\n        {% endif %}\n        alt=\"{% if s.image_alt %}{{ s.image_alt }}{% endif %}\">\n      {% endif %}\n      {% if s.title %}<h3>{{ s.title }}</h3>{% endif %}\n      {% if s.text %}{{ s.text | markdownify }}{% endif %}\n    {% endfor %}\n    {% if page.sidebar.nav %}\n      {% include nav_list nav=page.sidebar.nav %}\n    {% endif %}\n  {% endif %}\n  </div>\n{% endif %}"
  },
  {
    "path": "_includes/social-share.html",
    "content": "{% include base_path %}\n\n<section class=\"page__share\">\n  {% if site.data.ui-text[site.locale].share_on_label %}\n    <h4 class=\"page__share-title\">{{ site.data.ui-text[site.locale].share_on_label | default: \"Share on\" }}</h4>\n  {% endif %}\n\n  <a href=\"https://bsky.app/intent/compose?text={{ base_path }}{{ page.url }}\" class=\"btn btn--bluesky\" title=\"{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Bluesky\"><i class=\"fab fa-bluesky\" aria-hidden=\"true\"></i><span> Bluesky</span></a>\n\n  <a href=\"https://www.facebook.com/sharer/sharer.php?u={{ base_path }}{{ page.url }}\" class=\"btn btn--facebook\" title=\"{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook\"><i class=\"fab fa-facebook\" aria-hidden=\"true\"></i><span> Facebook</span></a>\n\n  <a href=\"https://www.linkedin.com/shareArticle?mini=true&url={{ base_path }}{{ page.url }}\" class=\"btn btn--linkedin\" title=\"{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn\"><i class=\"fab fa-linkedin\" aria-hidden=\"true\"></i><span> LinkedIn</span></a>\n\n  <a href=\"https://www.addtoany.com/add_to/mastodon?linkurl={{  base_path | append: page.url | url_encode }}\" class=\"btn btn--mastodon\" title=\"{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Mastodon\"><i class=\"fab fa-mastodon\" aria-hidden=\"true\"></i><span> Mastodon</span></a>\n\n  <a href=\"https://x.com/intent/post?text={{ base_path }}{{ page.url }}\" class=\"btn btn--x\" title=\"{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} X\"><i class=\"fab fa-x-twitter\" aria-hidden=\"true\"></i><span> X (formerly Twitter)</span></a>\n</section>\n"
  },
  {
    "path": "_includes/tag-list.html",
    "content": "{% include base_path %}\n\n{% case site.tag_archive.type %}\n  {% when \"liquid\" %}\n    {% assign path_type = \"#\" %}\n  {% when \"jekyll-archives\" %}\n    {% assign path_type = nil %}\n{% endcase %}\n\n{% if site.tag_archive.path %}\n  {% comment %}\n    <!-- Sort alphabetically regardless of case e.g. a B c d E -->\n    <!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->\n  {% endcomment %}\n  {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}\n  {% assign tag_hashes = (page_tags | split: ',' | sort:0) %}\n\n  <p class=\"page__taxonomy\">\n    <strong><i class=\"fa fa-fw fa-tags\" aria-hidden=\"true\"></i> {{ site.data.ui-text[site.locale].tags_label | default: \"Tags:\" }} </strong>\n    <span itemprop=\"keywords\">\n    {% for hash in tag_hashes %}\n      {% assign keyValue = hash | split: '#' %}\n      {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}\n      <a href=\"{{ base_path }}{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path }}\" class=\"page__taxonomy-item\" rel=\"tag\">{{ tag_word }}</a>{% unless forloop.last %}<span class=\"sep\">, </span>{% endunless %}\n    {% endfor %}\n    </span>\n  </p>\n{% endif %}"
  },
  {
    "path": "_includes/toc",
    "content": "<aside class=\"sidebar__right\">\n<nav class=\"toc\" markdown=\"1\">\n<header><h4 class=\"nav__title\"><i class=\"fa fa-{{ include.icon | default: 'file-text' }}\"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header>\n*  Auto generated table of contents\n{:toc .toc__menu}\n</nav>\n</aside>"
  },
  {
    "path": "_layouts/archive-taxonomy.html",
    "content": "---\nlayout: default\nauthor_profile: false\n---\n\n<div id=\"main\" role=\"main\">\n  {% include sidebar.html %}\n\n  <div class=\"archive\">\n    <h1 class=\"page__title\">{{ page.title }}</h1>\n    {% include base_path %}\n    {% for post in page.posts %}\n      {% include archive-single.html %}\n    {% endfor %}\n  </div>\n</div>"
  },
  {
    "path": "_layouts/archive.html",
    "content": "---\nlayout: default\n---\n\n{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}\n  {% include page__hero.html %}\n{% endif %}\n\n{% if page.url != \"/\" and site.breadcrumbs %}\n  {% unless paginator %}\n    {% include breadcrumbs.html %}\n  {% endunless %}\n{% endif %}\n\n<div id=\"main\" role=\"main\">\n  {% include sidebar.html %}\n\n  <div class=\"archive\">\n    {% unless page.header.overlay_color or page.header.overlay_image %}\n      <h1 class=\"page__title\">{{ page.title }}</h1>\n    {% endunless %}\n    {{ content }}\n  </div>\n</div>\n"
  },
  {
    "path": "_layouts/compress.html",
    "content": "---\n# Jekyll layout that compresses HTML\n# v3.0.2\n# https://jch.penibelst.de/\n# © 2014–2015 Anatol Broder\n# MIT License\n---\n\n{% capture _LINE_FEED %}\n{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == \"all\" %}{% assign _endings = \"html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th\" | split: \" \" %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == \"all\" %}{% assign _comments = \"<!-- -->\" | split: \" \" %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: \"<pre\" %}{% assign _content = \"\" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: \"</pre>\" %}{% assign _pres_after = \"\" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: \" \" | join: \" \" %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: \" \" | join: \" \" %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains \"</pre>\" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains \"</pre>\" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == \"all\" %}{% assign _clippings = \"html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th\" | split: \" \" %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = \" <e;<e; </e>;</e>;</e> ;</e>\" | replace: \"e\", _element | split: \";\" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id=\"compress_html_profile_{{ site.time | date: \"%Y%m%d\" }}\" class=\"compress_html_profile\"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}\n"
  },
  {
    "path": "_layouts/cv-layout.html",
    "content": "---\nlayout: compress\n---\n\n{% include base_path %}\n\n<!doctype html>\n<html lang=\"{{ site.locale | slice: 0,2 | default: \"en\" }}\" class=\"no-js\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} | {{ site.name | default: site.title }}</title>\n    {% include head.html %}\n    {% include head/custom.html %}\n    <link rel=\"stylesheet\" href=\"{{ site.baseurl }}/assets/css/cv-layout.css\">\n  </head>\n\n  <body class=\"cv-layout\">\n    {% include browser-upgrade.html %}\n    {% include masthead.html %}\n\n    <div id=\"main\" role=\"main\">\n      <div class=\"container\">\n        {{ content }}\n      </div>\n    </div>\n\n    <div class=\"page__footer\">\n      <footer>\n        {% include footer/custom.html %}\n        {% include footer.html %}\n      </footer>\n    </div>\n\n    {% include scripts.html %}\n\n  </body>\n</html>\n"
  },
  {
    "path": "_layouts/default.html",
    "content": "---\nlayout: compress\n---\n\n{% include base_path %}\n\n<!doctype html>\n<html lang=\"{{ site.locale | slice: 0,2 }}\" class=\"no-js\"{% if site.site_theme == \"dark\" %} data-theme=\"dark\"{% endif %}>\n  <head>\n    {% include head.html %}\n    {% include head/custom.html %}\n  </head>\n\n  <body>\n\n    {% include browser-upgrade.html %}\n    {% include masthead.html %}\n\n    {{ content }}\n\n    <div class=\"page__footer\">\n      <footer>\n        {% include footer/custom.html %}\n        {% include footer.html %}\n      </footer>\n    </div>\n\n    {% include scripts.html %}\n\n  </body>\n</html>\n"
  },
  {
    "path": "_layouts/single.html",
    "content": "---\nlayout: default\n---\n\n{% include base_path %}\n\n{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}\n  {% include page__hero.html %}\n{% endif %}\n\n{% if page.url != \"/\" and site.breadcrumbs %}\n  {% unless paginator %}\n    {% include breadcrumbs.html %}\n  {% endunless %}\n{% endif %}\n\n<div id=\"main\" role=\"main\">\n  {% include sidebar.html %}\n\n  <article class=\"page\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    {% if page.title %}<meta itemprop=\"headline\" content=\"{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}\">{% endif %}\n    {% if page.excerpt %}<meta itemprop=\"description\" content=\"{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}\">{% endif %}\n    {% if page.date %}<meta itemprop=\"datePublished\" content=\"{{ page.date | date: \"%B %d, %Y\" }}\">{% endif %}\n    {% if page.modified %}<meta itemprop=\"dateModified\" content=\"{{ page.modified | date: \"%B %d, %Y\" }}\">{% endif %}\n\n    <div class=\"page__inner-wrap\">\n      {% unless page.header.overlay_color or page.header.overlay_image %}\n        <header>\n          {% if page.title %}<h1 class=\"page__title\" itemprop=\"headline\">{{ page.title | markdownify | remove: \"<p>\" | remove: \"</p>\" }}</h1>{% endif %}\n          {% if page.read_time %}\n            <p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {% include read-time.html %}</p>\n          {% endif %}\n        {% if page.modified %}\n          <p class=\"page__date\"><strong><i class=\"fa fa-fw fa-calendar\" aria-hidden=\"true\"></i> {{ site.data.ui-text[site.locale].date_label | default: \"Published:\" }}</strong> <time datetime=\"{{ page.modified | date: \"%Y-%m-%d\" }}\">{{ page.modified | date: \"%B %d, %Y\" }}</time></p>\n        {% endif %}\n        \n        {% if page.collection == 'teaching' %}\n          <p> {{ page.type }}, <i>{{ page.venue }}</i>, {{ page.date | default: \"1900-01-01\" | date: \"%Y\" }} </p>\n        {% elsif page.venue and page.date %}\n          <p>Published in <i>{{ page.venue }}</i>, {{ page.date | default: \"1900-01-01\" | date: \"%Y\" }} </p>\n        {% elsif page.date %}\n          <p class=\"page__date\"><strong><i class=\"fa fa-fw fa-calendar\" aria-hidden=\"true\"></i> {{ site.data.ui-text[site.locale].date_label | default: \"Published:\" }}</strong> <time datetime=\"{{ page.date | date_to_xmlschema }}\">{{ page.date | default: \"1900-01-01\" | date: \"%B %d, %Y\" }}</time></p>\n        {% endif %}    \n        </header>\n      {% endunless %}\n\n      <section class=\"page__content\" itemprop=\"text\">\n        {{ content }}\n\n        {% if page.citation and page.paperurl and page.slidesurl and page.bibtexurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.paperurl }}\">Download Paper</a> | <a href=\"{{ page.slidesurl }}\">Download Slides</a> | <a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% elsif page.citation and page.paperurl and page.slidesurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.paperurl }}\">Download Paper</a> | <a href=\"{{ page.slidesurl }}\">Download Slides</a></p>\n        {% elsif page.citation and page.paperurl and page.bibtexurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.paperurl }}\">Download Paper</a> | <a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% elsif page.citation and page.paperurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.paperurl }}\">Download Paper</a></p>\n        {% elsif page.citation and page.slidesurl and page.bibtexurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.slidesurl }}\">Download Slides</a> | <a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% elsif page.citation and page.slidesurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.slidesurl }}\">Download Slides</a></p>\n        {% elsif page.slidesurl and page.bibtexurl %}\n          <p style=\"font-size: smaller\"><a href=\"{{ page.slidesurl }}\">Download Slides</a> | <a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% elsif page.paperurl and page.bibtexurl %}\n          <p style=\"font-size: smaller\"><a href=\"{{ page.paperurl }}\">Download Paper</a> | <a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% elsif page.citation and page.bibtexurl %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}<br /><a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% elsif page.citation %}\n          <p style=\"font-size: smaller\">Recommended citation: {{ page.citation }}</p>\n        {% elsif page.slidesurl %}\n          <p style=\"font-size: smaller\"><a href=\"{{ page.slidesurl }}\">Download Slides</a></p>\n        {% elsif page.bibtexurl %}\n          <p style=\"font-size: smaller\"><a href=\"{{ page.bibtexurl }}\">Download Bibtex</a></p>\n        {% endif %}\n\n        {% if page.link %}<div><a href=\"{{ page.link }}\" class=\"btn\">{{ site.data.ui-text[site.locale].ext_link_label | default: \"Direct Link\" }}</a></div>{% endif %}\n      </section>\n\n      <footer class=\"page__meta\">\n        {% if site.data.ui-text[site.locale].meta_label %}\n          <h4 class=\"page__meta-title\">{{ site.data.ui-text[site.locale].meta_label }}</h4>\n        {% endif %}\n        {% include page__taxonomy.html %}\n      </footer>\n\n      {% if page.share %}{% include social-share.html %}{% endif %}\n\n      {% include post_pagination.html %}\n    </div>\n\n    {% if site.comments.provider and page.comments %}\n      {% include comments.html %}\n    {% endif %}\n  </article>\n\n  {% comment %}<!-- only show related on a post page when not disabled -->{% endcomment %}\n  {% if page.id and page.related and site.related_posts.size > 0 %}\n    <div class=\"page__related\">\n      {% if site.data.ui-text[site.locale].related_label %}\n        <h4 class=\"page__related-title\">{{ site.data.ui-text[site.locale].related_label | default: \"You May Also Enjoy\" }}</h4>\n      {% endif %}\n      <div class=\"grid__wrapper\">\n        {% for post in site.related_posts limit:4 %}\n          {% include archive-single.html type=\"grid\" %}\n        {% endfor %}\n      </div>\n    </div>\n  {% endif %}\n</div>\n"
  },
  {
    "path": "_layouts/splash.html",
    "content": "---\nlayout: default\n---\n\n{% include base_path %}\n\n{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}\n  {% include page__hero.html %}\n{% endif %}\n\n<div id=\"main\" role=\"main\">\n  <article class=\"splash\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    {% if page.title %}<meta itemprop=\"headline\" content=\"{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}\">{% endif %}\n    {% if page.excerpt %}<meta itemprop=\"description\" content=\"{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}\">{% endif %}\n    {% if page.date %}<meta itemprop=\"datePublished\" content=\"{{ page.date | date: \"%B %d, %Y\" }}\">{% endif %}\n    {% if page.modified %}<meta itemprop=\"dateModified\" content=\"{{ page.modified | date: \"%B %d, %Y\" }}\">{% endif %}\n\n    <section class=\"page__content\" itemprop=\"text\">\n      {{ content }}\n    </section>\n  </article>\n</div>\n"
  },
  {
    "path": "_layouts/talk.html",
    "content": "---\nlayout: default\n---\n\n{% include base_path %}\n\n{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}\n  {% include page__hero.html %}\n{% endif %}\n\n{% if page.url != \"/\" and site.breadcrumbs %}\n  {% unless paginator %}\n    {% include breadcrumbs.html %}\n  {% endunless %}\n{% endif %}\n\n<div id=\"main\" role=\"main\">\n  {% include sidebar.html %}\n\n  <article class=\"page\" itemscope itemtype=\"http://schema.org/CreativeWork\">\n    {% if page.title %}<meta itemprop=\"headline\" content=\"{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}\">{% endif %}\n    {% if page.excerpt %}<meta itemprop=\"description\" content=\"{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}\">{% endif %}\n    {% if page.date %}<meta itemprop=\"datePublished\" content=\"{{ page.date | date: \"%B %d, %Y\" }}\">{% endif %}\n    {% if page.modified %}<meta itemprop=\"dateModified\" content=\"{{ page.modified | date: \"%B %d, %Y\" }}\">{% endif %}\n\n    <div class=\"page__inner-wrap\">\n      {% unless page.header.overlay_color or page.header.overlay_image %}\n        <header>\n          {% if page.title %}<h1 class=\"page__title\" itemprop=\"headline\">{{ page.title | markdownify | remove: \"<p>\" | remove: \"</p>\" }}</h1>{% endif %}\n          {% if page.read_time %}\n            <p class=\"page__meta\"><i class=\"fa fa-clock\" aria-hidden=\"true\"></i> {% include read-time.html %}</p>\n          {% endif %}\n        {% if page.modified %}\n          <p class=\"page__date\"><strong><i class=\"fa fa-fw fa-calendar\" aria-hidden=\"true\"></i>Date:</strong> <time datetime=\"{{ page.modified | date: \"%Y-%m-%d\" }}\">{{ page.modified | date: \"%B %d, %Y\" }}</time></p>\n        {% elsif page.date %}\n          <p class=\"page__date\"><strong><i class=\"fa fa-fw fa-calendar\" aria-hidden=\"true\"></i>Date:</strong> <time datetime=\"{{ page.date | date_to_xmlschema }}\">{{ page.date | date: \"%B %d, %Y\" }}</time></p>\n        {% endif %}\n        {% if page.talk_type %}<p>{{page.talk_type}} at {{ page.venue }},  {{page.location}} {% endif %}\n\n        </header>\n      {% endunless %}\n\n      <section class=\"page__content\" itemprop=\"text\">\n        {{ content }}\n        {% if page.link %}<div><a href=\"{{ page.link }}\" class=\"btn\">{{ site.data.ui-text[site.locale].ext_link_label | default: \"Direct Link\" }}</a></div>{% endif %}\n      </section>\n\n      <footer class=\"page__meta\">\n        {% if site.data.ui-text[site.locale].meta_label %}\n          <h4 class=\"page__meta-title\">{{ site.data.ui-text[site.locale].meta_label }}</h4>\n        {% endif %}\n        {% include page__taxonomy.html %}\n      </footer>\n\n      {% if page.share %}{% include social-share.html %}{% endif %}\n\n      {% include post_pagination.html %}\n    </div>\n\n    {% if site.comments.provider and page.comments %}\n      {% include comments.html %}\n    {% endif %}\n  </article>\n\n  {% comment %}<!-- only show related on a post page when not disabled -->{% endcomment %}\n  {% if page.id and page.related and site.related_posts.size > 0 %}\n    <div class=\"page__related\">\n      {% if site.data.ui-text[site.locale].related_label %}\n        <h4 class=\"page__related-title\">{{ site.data.ui-text[site.locale].related_label | default: \"You May Also Enjoy\" }}</h4>\n      {% endif %}\n      <div class=\"grid__wrapper\">\n        {% for post in site.related_posts limit:4 %}\n          {% include archive-single.html type=\"grid\" %}\n        {% endfor %}\n      </div>\n    </div>\n  {% endif %}\n</div>\n"
  },
  {
    "path": "_pages/404.md",
    "content": "---\ntitle: \"Page Not Found\"\nsitemap: false\npermalink: /404.html\n---\n\nSorry, but the page you were trying to view does not exist.\n"
  },
  {
    "path": "_pages/about.md",
    "content": "---\npermalink: /\ntitle: \"Academic Pages is a ready-to-fork GitHub Pages template for academic personal websites\"\nauthor_profile: true\nredirect_from: \n  - /about/\n  - /about.html\n---\n\nThis is the front page of a website that is powered by the [Academic Pages template](https://github.com/academicpages/academicpages.github.io) and hosted on GitHub pages. [GitHub pages](https://pages.github.com) is a free service in which websites are built and hosted from code and data stored in a GitHub repository, automatically updating when a new commit is made to the repository. This template was forked from the [Minimal Mistakes Jekyll Theme](https://mmistakes.github.io/minimal-mistakes/) created by Michael Rose, and then extended to support the kinds of content that academics have: publications, talks, teaching, a portfolio, blog posts, and a dynamically-generated CV. Incidentally, these same features make it a great template for anyone that needs to show off a professional template!\n\n You can fork [this template](https://github.com/academicpages/academicpages.github.io) right now, modify the configuration and Markdown files, add your own PDFs and other content, and have your own site for free, with no ads!\n\nA data-driven personal website\n======\nLike many other Jekyll-based GitHub Pages templates, Academic Pages makes you separate the website's content from its form. The content & metadata of your website are in structured Markdown files, while various other files constitute the theme, specifying how to transform that content & metadata into HTML pages. You keep these various Markdown (.md), YAML (.yml), HTML, and CSS files in a public GitHub repository. Each time you commit and push an update to the repository, the [GitHub pages](https://pages.github.com/) service creates static HTML pages based on these files, which are hosted on GitHub's servers free of charge.\n\nMany of the features of dynamic content management systems (like Wordpress) can be achieved in this fashion, using a fraction of the computational resources and with far less vulnerability to hacking and DDoSing. You can also modify the theme to your heart's content without touching the content of your site. If you get to a point where you've broken something in Jekyll/HTML/CSS beyond repair, your Markdown files describing your talks, publications, etc. are safe. You can rollback the changes or even delete the repository and start over - just be sure to save the Markdown files! You can also write scripts that process the structured data on the site, such as [this one](https://github.com/academicpages/academicpages.github.io/blob/master/talkmap.ipynb) that analyzes metadata in pages about talks to display [a map of every location you've given a talk](https://academicpages.github.io/talkmap.html).\n\nFor those users that need more advanced functionality, the template also supports the following popular tools:\n- [MathJax](https://www.mathjax.org/) for mathematical equations\n- [Mermaid](https://mermaid.js.org/) for diagraming\n- [Plotly](https://plotly.com/javascript/) for plotting\n\nGetting started\n======\n1. Register a GitHub account if you don't have one and confirm your e-mail (required!)\n1. Fork [this template](https://github.com/academicpages/academicpages.github.io) by clicking the \"Use this template\" button in the top right. \n1. Go to the repository's settings (rightmost item in the tabs that start with \"Code\", should be below \"Unwatch\"). Rename the repository \"[your GitHub username].github.io\", which will also be your website's URL.\n1. Set site-wide configuration and create content & metadata (see below -- also see [this set of diffs](https://archive.is/3TPas) showing what files were changed to set up [an example site](https://getorg-testacct.github.io) for a user with the username \"getorg-testacct\")\n1. Upload any files (like PDFs, .zip files, etc.) to the files/ directory. They will appear at https://[your GitHub username].github.io/files/example.pdf.  \n1. Check status by going to the repository settings, in the \"GitHub pages\" section\n\nSite-wide configuration\n------\nThe main configuration file for the site is in the base directory in [_config.yml](https://github.com/academicpages/academicpages.github.io/blob/master/_config.yml), which defines the content in the sidebars and other site-wide features. You will need to replace the default variables with ones about yourself and your site's github repository. The configuration file for the top menu is in [_data/navigation.yml](https://github.com/academicpages/academicpages.github.io/blob/master/_data/navigation.yml). For example, if you don't have a portfolio or blog posts, you can remove those items from that navigation.yml file to remove them from the header. \n\nCreate content & metadata\n------\nFor site content, there is one Markdown file for each type of content, which are stored in directories like _publications, _talks, _posts, _teaching, or _pages. For example, each talk is a Markdown file in the [_talks directory](https://github.com/academicpages/academicpages.github.io/tree/master/_talks). At the top of each Markdown file is structured data in YAML about the talk, which the theme will parse to do lots of cool stuff. The same structured data about a talk is used to generate the list of talks on the [Talks page](https://academicpages.github.io/talks), each [individual page](https://academicpages.github.io/talks/2012-03-01-talk-1) for specific talks, the talks section for the [CV page](https://academicpages.github.io/cv), and the [map of places you've given a talk](https://academicpages.github.io/talkmap.html) (if you run this [python file](https://github.com/academicpages/academicpages.github.io/blob/master/talkmap.py) or [Jupyter notebook](https://github.com/academicpages/academicpages.github.io/blob/master/talkmap.ipynb), which creates the HTML for the map based on the contents of the _talks directory).\n\n**Markdown generator**\n\nThe repository includes [a set of Jupyter notebooks](https://github.com/academicpages/academicpages.github.io/tree/master/markdown_generator\n) that converts a CSV containing structured data about talks or presentations into individual Markdown files that will be properly formatted for the Academic Pages template. The sample CSVs in that directory are the ones I used to create my own personal website at stuartgeiger.com. My usual workflow is that I keep a spreadsheet of my publications and talks, then run the code in these notebooks to generate the Markdown files, then commit and push them to the GitHub repository.\n\nHow to edit your site's GitHub repository\n------\nMany people use a git client to create files on their local computer and then push them to GitHub's servers. If you are not familiar with git, you can directly edit these configuration and Markdown files directly in the github.com interface. Navigate to a file (like [this one](https://github.com/academicpages/academicpages.github.io/blob/master/_talks/2012-03-01-talk-1.md) and click the pencil icon in the top right of the content preview (to the right of the \"Raw | Blame | History\" buttons). You can delete a file by clicking the trashcan icon to the right of the pencil icon. You can also create new files or upload files by navigating to a directory and clicking the \"Create new file\" or \"Upload files\" buttons. \n\nExample: editing a Markdown file for a talk\n![Editing a Markdown file for a talk](/images/editing-talk.png)\n\nFor more info\n------\nMore info about configuring Academic Pages can be found in [the guide](https://academicpages.github.io/markdown/), the [growing wiki](https://github.com/academicpages/academicpages.github.io/wiki), and you can always [ask a question on GitHub](https://github.com/academicpages/academicpages.github.io/discussions). The [guides for the Minimal Mistakes theme](https://mmistakes.github.io/minimal-mistakes/docs/configuration/) (which this theme was forked from) might also be helpful.\n"
  },
  {
    "path": "_pages/archive-layout-with-content.md",
    "content": "---\ntitle: \"Archive Layout with Content\"\nlayout: archive\npermalink: /archive-layout-with-content/\n---\n\nA variety of common markup showing how the theme styles them.\n\n# Header one\n\n## Header two\n\n### Header three\n\n#### Header four\n\n##### Header five\n\n###### Header six\n\n## Blockquotes\n\nSingle line blockquote:\n\n> Quotes are cool.\n\n## Tables\n\n| Entry            | Item   |                                                              |\n| --------         | ------ | ------------------------------------------------------------ |\n| [John Doe](#)    | 2016   | Description of the item in the list                          |\n| [Jane Doe](#)    | 2019   | Description of the item in the list                          |\n| [Doe Doe](#)     | 2022   | Description of the item in the list                          |\n\n| Header1 | Header2 | Header3 |\n|:--------|:-------:|--------:|\n| cell1   | cell2   | cell3   |\n| cell4   | cell5   | cell6   |\n|-----------------------------|\n| cell1   | cell2   | cell3   |\n| cell4   | cell5   | cell6   |\n|=============================|\n| Foot1   | Foot2   | Foot3   |\n\n## Definition Lists\n\nDefinition List Title\n:   Definition list division.\n\nStartup\n:   A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.\n\n#dowork\n:   Coined by Rob Dyrdek and his personal body guard Christopher \"Big Black\" Boykins, \"Do Work\" works as a self motivator, to motivating your friends.\n\nDo It Live\n:   I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c \"We'll Do It Live\") this one.\n\n## Unordered Lists (Nested)\n\n  * List item one \n      * List item one \n          * List item one\n          * List item two\n          * List item three\n          * List item four\n      * List item two\n      * List item three\n      * List item four\n  * List item two\n  * List item three\n  * List item four\n\n## Ordered List (Nested)\n\n  1. List item one \n      1. List item one \n          1. List item one\n          2. List item two\n          3. List item three\n          4. List item four\n      2. List item two\n      3. List item three\n      4. List item four\n  2. List item two\n  3. List item three\n  4. List item four\n\n## Buttons\n\nMake any link standout more when applying the `.btn` class.\n\n## Notices\n\n**Watch out!** You can also add notices by appending `{: .notice}` to a paragraph.\n{: .notice}\n\n## HTML Tags\n\n### Address Tag\n\n<address>\n  1 Infinite Loop<br /> Cupertino, CA 95014<br /> United States\n</address>\n\n### Anchor Tag (aka. Link)\n\nThis is an example of a [link](https://github.com \"GitHub\").\n\n### Abbreviation Tag\n\nThe abbreviation CSS stands for \"Cascading Style Sheets\".\n\n*[CSS]: Cascading Style Sheets\n\n### Cite Tag\n\n\"Code is poetry.\" ---<cite>Automattic</cite>\n\n### Code Tag\n\nYou will learn later on in these tests that `word-wrap: break-word;` will be your best friend.\n\n### Strike Tag\n\nThis tag will let you <strike>strikeout text</strike>.\n\n### Emphasize Tag\n\nThe emphasize tag should _italicize_ text.\n\n### Insert Tag\n\nThis tag should denote <ins>inserted</ins> text.\n\n### Keyboard Tag\n\nThis scarcely known tag emulates <kbd>keyboard text</kbd>, which is usually styled like the `<code>` tag.\n\n### Preformatted Tag\n\nThis tag styles large blocks of code.\n\n<pre>\n.post-title {\n  margin: 0 0 5px;\n  font-weight: bold;\n  font-size: 38px;\n  line-height: 1.2;\n  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;\n}\n</pre>\n\n### Quote Tag\n\n<q>Developers, developers, developers&#8230;</q> &#8211;Steve Ballmer\n\n### Strong Tag\n\nThis tag shows **bold text**.\n\n### Subscript Tag\n\nGetting our science styling on with H<sub>2</sub>O, which should push the \"2\" down.\n\n### Superscript Tag\n\nStill sticking with science and Isaac Newton's E = MC<sup>2</sup>, which should lift the 2 up.\n\n### Variable Tag\n\nThis allows you to denote <var>variables</var>.\n\n{% include base_path %}\n{% for post in site.pages %}\n{% include archive-single.html %}\n{% endfor %}\n"
  },
  {
    "path": "_pages/category-archive.html",
    "content": "---\nlayout: archive\npermalink: /categories/\ntitle: \"Posts by Category\"\nauthor_profile: true\n---\n\n{% include base_path %}\n{% include group-by-array collection=site.posts field=\"categories\" %}\n\n{% for category in group_names %}\n  {% assign posts = group_items[forloop.index0] %}\n  <h2 id=\"{{ category | slugify }}\" class=\"archive__subtitle\">{{ category }}</h2>\n  {% for post in posts %}\n    {% include archive-single.html %}\n  {% endfor %}\n{% endfor %}"
  },
  {
    "path": "_pages/collection-archive.html",
    "content": "---\nlayout: archive\ntitle: \"Posts by Collection\"\npermalink: /collection-archive/\nauthor_profile: true\n---\n\n{% include base_path %}\n{% capture written_label %}'None'{% endcapture %}\n\n{% for collection in site.collections %}\n  {% unless collection.output == false or collection.label == \"posts\" %}\n    {% capture label %}{{ collection.label }}{% endcapture %}\n    {% if label != written_label %}\n      <h2 id=\"{{ label | slugify }}\" class=\"archive__subtitle\">{{ label }}</h2>\n      {% capture written_label %}{{ label }}{% endcapture %}\n    {% endif %}\n  {% endunless %}\n  {% for post in collection.docs %}\n    {% unless collection.output == false or collection.label == \"posts\" %}\n      {% include archive-single.html %}\n    {% endunless %}\n  {% endfor %}\n{% endfor %}"
  },
  {
    "path": "_pages/cv-json.md",
    "content": "---\nlayout: archive\ntitle: \"CV\"\npermalink: /cv-json/\nauthor_profile: false\nredirect_from:\n  - /resume-json\n---\n\n{% include base_path %}\n\n{% include cv-template.html %}\n\n<div class=\"cv-download-links\">\n  <a href=\"{{ base_path }}/files/cv.pdf\" class=\"btn btn--primary\">Download CV as PDF</a>\n  <a href=\"{{ base_path }}\" class=\"btn btn--inverse\">View Markdown CV</a>\n</div>\n"
  },
  {
    "path": "_pages/cv.md",
    "content": "---\nlayout: archive\ntitle: \"CV\"\npermalink: /cv/\nauthor_profile: true\nredirect_from:\n  - /resume\n---\n\n{% include base_path %}\n\nEducation\n======\n* Ph.D in Version Control Theory, GitHub University, 2018 (expected)\n* M.S. in Jekyll, GitHub University, 2014\n* B.S. in GitHub, GitHub University, 2012\n\nWork experience\n======\n* Spring 2024: Academic Pages Collaborator\n  * GitHub University\n  * Duties includes: Updates and improvements to template\n  * Supervisor: The Users\n\n* Fall 2015: Research Assistant\n  * GitHub University\n  * Duties included: Merging pull requests\n  * Supervisor: Professor Hub\n\n* Summer 2015: Research Assistant\n  * GitHub University\n  * Duties included: Tagging issues\n  * Supervisor: Professor Git\n  \nSkills\n======\n* Skill 1\n* Skill 2\n  * Sub-skill 2.1\n  * Sub-skill 2.2\n  * Sub-skill 2.3\n* Skill 3\n\nPublications\n======\n  <ul>{% for post in site.publications reversed %}\n    {% include archive-single-cv.html %}\n  {% endfor %}</ul>\n  \nTalks\n======\n  <ul>{% for post in site.talks reversed %}\n    {% include archive-single-talk-cv.html  %}\n  {% endfor %}</ul>\n  \nTeaching\n======\n  <ul>{% for post in site.teaching reversed %}\n    {% include archive-single-cv.html %}\n  {% endfor %}</ul>\n  \nService and leadership\n======\n* Currently signed in to 43 different slack teams\n"
  },
  {
    "path": "_pages/markdown.md",
    "content": "---\npermalink: /markdown/\ntitle: \"Markdown\"\nauthor_profile: true\nredirect_from: \n  - /md/\n  - /markdown.html\n---\n\n{% include toc %}\n\n## Locations of key files/directories\n\n* Basic config options: _config.yml\n* Top navigation bar config: _data/navigation.yml\n* Single pages: _pages/\n* Collections of pages are .md or .html files in:\n  * _publications/\n  * _portfolio/\n  * _posts/\n  * _teaching/\n  * _talks/\n* Footer: _includes/footer.html\n* Static files (like PDFs): /files/\n* Profile image (can set in _config.yml): images/profile.png\n\n## Tips and hints\n\n* Name a file \".md\" to have it render in markdown, name it \".html\" to render in HTML.\n* Go to the [commit list](https://github.com/academicpages/academicpages.github.io/commits/master) (on your repo) to find the last version GitHub built with Jekyll. \n  * Green check: successful build\n  * Orange circle: building\n  * Red X: error\n  * No icon: not built\n\n* Academic Pages uses [Jekyll Kramdown](https://jekyllrb.com/docs/configuration/markdown/), GitHub Flavored Markdown (GFM) parser, which is similar to the version of Markdown used on GitHub, but may have some minor differences. \n  * Some of emoji supported on GitHub should be supposed via the [Jemoji](https://github.com/jekyll/jemoji) plugin :computer:.\n  * The best list of the supported emoji can be found in the [Emojis for Jekyll via Jemoji](https://www.fabriziomusacchio.com/blog/2021-08-16-emojis_for_Jekyll/#computer) blog post.\n\n* While GitHub Pages prevents server side code from running, client-side scripts are supported.\n  * This means that Google Analytics is supported, and [the wiki](https://github.com/academicpages/academicpages.github.io/wiki/Adding-Google-Analytics) should contain the most up-to-date information on getting it working.\n\n* Your CV can be written using either Markdown ([preview](https://academicpages.github.io/cv/)) or generated via JSON ([preview](https://academicpages.github.io/cv-json/)) and the layouts are slightly different. You can update the path to the one being used in `_data/navigation.yml` with the JSON formatted CV being hidden by default.\n\n * The [Liquid syntax guide](https://shopify.github.io/liquid/tags/control-flow/) is a useful guide for those that want to add functionality to the template or to become contributors to the [template on GitHub](https://github.com/academicpages/academicpages.github.io).\n\n## MathJax \n\nSupport for MathJax (version 3.* via [jsDelivr](https://www.jsdelivr.com/), [documentation](https://docs.mathjax.org/en/latest/)) is included in the template:\n\n$$\n\\displaylines{\n\\nabla \\cdot E= \\frac{\\rho}{\\epsilon_0} \\\\\\\n\\nabla \\cdot B=0 \\\\\\\n\\nabla \\times E= -\\partial_tB \\\\\\\n\\nabla \\times B  = \\mu_0 \\left(J + \\varepsilon_0 \\partial_t E \\right)\n}\n$$\n\nThe default delimiters of `$$...$$` and `\\\\[...\\\\]` are supported for displayed mathematics, while `\\\\(...\\\\)` should be used for in-line mathematics (ex., \\\\(a^2 + b^2 = c^2\\\\))\n\n**Note** that since Academic Pages uses Markdown which cases some interference with MathJax and LaTeX for escaping characters and new lines, although [some workarounds exist](https://math.codidact.com/posts/278763/278772#answer-278772). In some cases, such as when you are including MathJax in a `citation` field for publications, it may be necessary to use `\\(...\\)` for inline delineation.\n\n## Mermaid diagrams\nAcademic Pages includes support for [Mermaid diagrams](https://mermaid.js.org/) (version 11.* via [jsDelivr](https://www.jsdelivr.com/)) and in addition to their [tutorials](https://mermaid.js.org/ecosystem/tutorials.html) and [GitHub documentation](https://github.com/mermaid-js/mermaid) the basic syntax is as follows:\n\n```markdown\n    ```mermaid\n    graph LR\n    A-->B\n    ```\n```\n\nWhich produces the following plot with the [default theme](https://mermaid.js.org/config/theming.html) applied:\n\n```mermaid\ngraph LR\nA-->B\n```\n\nWhile a more advanced plot with the `forest` theme applied looks like the following:\n\n```mermaid\n---\nconfig:\n  theme: 'forest'\n---\ngraph TD;\n    A-->B;\n    A-->C;\n    B-->D;\n    C-->D;\n```\n\n## Plotly\nAcademic Pages includes support for Plotly diagrams via a hook in the Markdown code elements, although those that are comfortable with HTML and JavaScript can also access it [via those routes](https://plotly.com/javascript/getting-started/). Plotly is included via an `npm` [package](https://www.npmjs.com/package/plotly.js?activeTab=readme) and is distributed as part of the minimized JavaScript that is part of the template.\n\nIn order to render a Plotly plot via Markdown the relevant plot data need to be added as follows:\n\n```markdown\n    ```plotly\n    {\n      \"data\": [\n        {\n          \"x\": [1, 2, 3, 4],\n          \"y\": [10, 15, 13, 17],\n          \"type\": \"scatter\"\n        },\n        {\n          \"x\": [1, 2, 3, 4],\n          \"y\": [16, 5, 11, 9],\n          \"type\": \"scatter\"\n        }\n      ]\n    }\n    ```\n```\n\n**Important!** Since the data is parsed as JSON *all* of the keys will need to be quoted for the plot to render. The use of a tool like [JSONLint](https://jsonlint.com/) to check syntax is highly recommended.\n{: .notice}\n\nWhich produces the following:\n```plotly\n{\n  \"data\": [\n    {\n      \"x\": [1, 2, 3, 4],\n      \"y\": [10, 15, 13, 17],\n      \"type\": \"scatter\"\n    },\n    {\n      \"x\": [1, 2, 3, 4],\n      \"y\": [16, 5, 11, 9],\n      \"type\": \"scatter\"\n    }\n  ]\n}\n```\n\nEssentially what is taking place is that the [Plotly attributes](https://plotly.com/javascript/reference/index/) are being taken from the code block as JSON data, parsed, and passed to Plotly along with a theme that matches the current site theme (i.e., a light theme, or a dark theme). This allows all plots that can be described via the `data` attribute to rendered with some limitations for the theme of the plot.\n\n```plotly\n{\n  \"data\": [\n    {\n      \"x\": [1, 2, 3, 4, 5],\n      \"y\": [1, 6, 3, 6, 1],\n      \"mode\": \"markers\",\n      \"type\": \"scatter\",\n      \"name\": \"Team A\",\n      \"text\": [\"A-1\", \"A-2\", \"A-3\", \"A-4\", \"A-5\"],\n      \"marker\": { \"size\": 12 }\n    },\n    {\n      \"x\": [1.5, 2.5, 3.5, 4.5, 5.5],\n      \"y\": [4, 1, 7, 1, 4],\n      \"mode\": \"markers\",\n      \"type\": \"scatter\",\n      \"name\": \"Team B\",\n      \"text\": [\"B-a\", \"B-b\", \"B-c\", \"B-d\", \"B-e\"],\n      \"marker\": { \"size\": 12 }\n    }    \n  ],\n  \"layout\": {\n    \"xaxis\": {\n      \"range\": [ 0.75, 5.25 ]\n    },\n    \"yaxis\": {\n      \"range\": [0, 8]\n    },\n    \"title\": {\"text\": \"Data Labels Hover\"}\n  }\n}\n```\n\n```plotly\n{\n  \"data\": [{\n      \"x\": [1, 2, 3],\n      \"y\": [4, 5, 6],\n      \"type\": \"scatter\"\n    },\n    {\n      \"x\": [20, 30, 40],\n      \"y\": [50, 60, 70],\n      \"xaxis\": \"x2\",\n      \"yaxis\": \"y2\",\n      \"type\": \"scatter\"\n  }],\n  \"layout\": {\n    \"grid\": {\n      \"rows\": 1,\n      \"columns\": 2,\n      \"pattern\": \"independent\"\n    },\n    \"title\": {\n      \"text\": \"Simple Subplot\"\n    }    \n  }\n}\n```\n\n```plotly\n{\n  \"data\": [{\n\t\t\"z\": [[10, 10.625, 12.5, 15.625, 20],\n          [5.625, 6.25, 8.125, 11.25, 15.625],\n          [2.5, 3.125, 5.0, 8.125, 12.5],\n          [0.625, 1.25, 3.125, 6.25, 10.625],\n          [0, 0.625, 2.5, 5.625, 10]],\n\t\t\"type\": \"contour\"\n\t}],\n  \"layout\": {\n    \"title\": {\n      \"text\": \"Basic Contour Plot\"\n    }\n  }\n}\n```\n\n## Markdown guide\n\nAcademic Pages uses [kramdown](https://kramdown.gettalong.org/index.html) for Markdown rendering, which has some differences from other Markdown implementations such as GitHub's. In addition to this guide, please see the [kramdown Syntax page](https://kramdown.gettalong.org/syntax.html) for full documentation.  \n\n### Header three\n\n#### Header four\n\n##### Header five\n\n###### Header six\n\n## Blockquotes\n\nSingle line blockquote:\n\n> Quotes are cool.\n\n## Tables\n\n### Table 1\n\n| Entry            | Item   |                                                              |\n| --------         | ------ | ------------------------------------------------------------ |\n| [John Doe](#)    | 2016   | Description of the item in the list                          |\n| [Jane Doe](#)    | 2019   | Description of the item in the list                          |\n| [Doe Doe](#)     | 2022   | Description of the item in the list                          |\n\n### Table 2\n\n| Header1 | Header2 | Header3 |\n|:--------|:-------:|--------:|\n| cell1   | cell2   | cell3   |\n| cell4   | ce\nll5   | cell6   |\n|-----------------------------|\n| cell1   | cell2   | cell3   |\n| cell4   | cell5   | cell6   |\n|=============================|\n| Foot1   | Foot2   | Foot3   |\n\n## Definition Lists\n\nDefinition List Title\n:   Definition list division.\n\nStartup\n:   A startup company or startup is a company or temporary organization designed to search for a repeatable and scalable business model.\n\n#dowork\n:   Coined by Rob Dyrdek and his personal body guard Christopher \"Big Black\" Boykins, \"Do Work\" works as a self motivator, to motivating your friends.\n\nDo It Live\n:   I'll let Bill O'Reilly [explain](https://www.youtube.com/watch?v=O_HyZ5aW76c \"We'll Do It Live\") this one.\n\n## Unordered Lists (Nested)\n\n  * List item one \n      * List item one \n          * List item one\n          * List item two\n          * List item three\n          * List item four\n      * List item two\n      * List item three\n      * List item four\n  * List item two\n  * List item three\n  * List item four\n\n## Ordered List (Nested)\n\n  1. List item one \n      1. List item one \n          1. List item one\n          2. List item two\n          3. List item three\n          4. List item four\n      2. List item two\n      3. List item three\n      4. List item four\n  2. List item two\n  3. List item three\n  4. List item four\n\n## Buttons\n\nMake any link standout more when applying the `.btn` class.\n\n## Notices\n\nBasic notices or call-outs are supported using the following syntax:\n\n```markdown\n**Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph.\n{: .notice}\n```\n\nwhich wil render as:\n\n**Watch out!** You can also add notices by appending `{: .notice}` to the line following paragraph.\n{: .notice}\n\n### Footnotes\n\nFootnotes can be useful for clarifying points in the text, or citing information.[^1] Markdown support numeric footnotes, as well as text as long as the values are unique.[^note]\n\n```markdown\nThis is the regular text.[^1] This is more regular text.[^note]\n\n[^1]: This is the footnote itself.\n[^note]: This is another footnote.\n```\n\n[^1]: Such as this footnote.\n[^note]: When using text for footnotes markers, no spaces are permitted in the name.\n\n## HTML Tags\n\n### Address Tag\n\n<address>\n  1 Infinite Loop<br /> Cupertino, CA 95014<br /> United States\n</address>\n\n### Anchor Tag (aka. Link)\n\nThis is an example of a [link](https://github.com \"GitHub\").\n\n### Abbreviation Tag\n\nThe abbreviation CSS stands for \"Cascading Style Sheets\".\n\n*[CSS]: Cascading Style Sheets\n\n### Cite Tag\n\n\"Code is poetry.\" ---<cite>Automattic</cite>\n\n### Code Tag\n\nYou will learn later on in these tests that `word-wrap: break-word;` will be your best friend.\n\nYou can also write larger blocks of code with syntax highlighting supported for some languages, such as Python:\n\n```python\nprint('Hello World!')\n```\n\nor R:\n\n```R\nprint(\"Hello World!\", quote = FALSE)\n```\n\n### Details Tag (collapsible sections)\n\nThe HTML `<details>` tag works well with Markdown and allows you to include collapsible sections, see [W3Schools](https://www.w3schools.com/tags/tag_details.asp) for more information on how to use the tag.\n\n<details>\n  <summary>Collapsed by default</summary>\n  This section was collapsed by default!\n</details>\n\nThe source code:\n\n```HTML\n<details>\n  <summary>Collapsed by default</summary>\n  This section was collapsed by default!\n</details>\n```\n\nOr, you can leave a section open by default by including the `open` attribute in the tag:\n\n<details open>\n  <summary>Open by default</summary>\n  This section is open by default thanks to open in the &lt;details open&gt; tag!\n</details>\n\n\n### Emphasize Tag\n\nThe emphasize tag should _italicize_ text.\n\n### Insert Tag\n\nThis tag should denote <ins>inserted</ins> text.\n\n### Keyboard Tag\n\nThis scarcely known tag emulates <kbd>keyboard text</kbd>, which is usually styled like the `<code>` tag.\n\n### Preformatted Tag\n\nThis tag styles large blocks of code.\n\n<pre>\n.post-title {\n  margin: 0 0 5px;\n  font-weight: bold;\n  font-size: 38px;\n  line-height: 1.2;\n  and here's a line of some really, really, really, really long text, just to see how the PRE tag handles it and to find out how it overflows;\n}\n</pre>\n\n### Quote Tag\n\n<q>Developers, developers, developers&#8230;</q> &#8211;Steve Ballmer\n\n### Strike Tag\n\nThis tag will let you <strike>strikeout text</strike>.\n\n### Strong Tag\n\nThis tag shows **bold text**.\n\n### Subscript Tag\n\nGetting our science styling on with H<sub>2</sub>O, which should push the \"2\" down.\n\n### Superscript Tag\n\nStill sticking with science and Isaac Newton's E = MC<sup>2</sup>, which should lift the 2 up.\n\n### Variable Tag\n\nThis allows you to denote <var>variables</var>.\n\n***\n**Footnotes**\n\nThe footnotes in the page will be returned following this line, return to the section on <a href=\"#footnotes\">Markdown Footnotes</a>.\n\n"
  },
  {
    "path": "_pages/non-menu-page.md",
    "content": "---\npermalink: /non-menu-page/\ntitle: \"Page not in menu\"\nauthor_profile: true\nredirect_from: \n  - \"/nmp/\"\n  - \"/nmp.html\"\n---\n\nThis is a page not in the menu. You can use markdown in this page.\n\nHeading 1\n======\n\nHeading 2\n======\n"
  },
  {
    "path": "_pages/page-archive.html",
    "content": "---\nlayout: archive\ntitle: \"Page Archive\"\npermalink: /page-archive/\nauthor_profile: false\n---\n\n{% include base_path %}\n{% for post in site.pages %}\n  {% include archive-single.html %}\n{% endfor %}"
  },
  {
    "path": "_pages/portfolio.html",
    "content": "---\nlayout: archive\ntitle: \"Portfolio\"\npermalink: /portfolio/\nauthor_profile: true\n---\n\n{% include base_path %}\n\n\n{% for post in site.portfolio %}\n  {% include archive-single.html %}\n{% endfor %}\n\n"
  },
  {
    "path": "_pages/publications.html",
    "content": "---\nlayout: archive\ntitle: \"Publications\"\npermalink: /publications/\nauthor_profile: true\n---\n\n{% if site.author.googlescholar %}\n  <div class=\"wordwrap\">You can also find my articles on <a href=\"{{site.author.googlescholar}}\">my Google Scholar profile</a>.</div>\n{% endif %}\n\n{% include base_path %}\n\n<!-- New style rendering if publication categories are defined -->\n{% if site.publication_category %}\n  {% for category in site.publication_category  %}\n    {% assign title_shown = false %}\n    {% for post in site.publications reversed %}\n      {% if post.category != category[0] %}\n        {% continue %}\n      {% endif %}\n      {% unless title_shown %}\n        <h2>{{ category[1].title }}</h2><hr />\n        {% assign title_shown = true %}\n      {% endunless %}\n      {% include archive-single.html %}\n    {% endfor %}\n  {% endfor %}\n{% else %}\n  {% for post in site.publications reversed %}\n    {% include archive-single.html %}\n  {% endfor %}\n{% endif %}\n\n\n\n"
  },
  {
    "path": "_pages/sitemap.md",
    "content": "---\nlayout: archive\ntitle: \"Sitemap\"\npermalink: /sitemap/\nauthor_profile: true\n---\n\n{% include base_path %}\n\nA list of all the posts and pages found on the site. For you robots out there, there is an [XML version]({{ base_path }}/sitemap.xml) available for digesting as well.\n\n<h2>Pages</h2>\n{% for post in site.pages %}\n  {% include archive-single.html %}\n{% endfor %}\n\n<h2>Posts</h2>\n{% for post in site.posts %}\n  {% include archive-single.html %}\n{% endfor %}\n\n{% capture written_label %}'None'{% endcapture %}\n\n{% for collection in site.collections %}\n{% unless collection.output == false or collection.label == \"posts\" %}\n  {% capture label %}{{ collection.label }}{% endcapture %}\n  {% if label != written_label %}\n  <h2>{{ label }}</h2>\n  {% capture written_label %}{{ label }}{% endcapture %}\n  {% endif %}\n{% endunless %}\n{% for post in collection.docs %}\n  {% unless collection.output == false or collection.label == \"posts\" %}\n  {% include archive-single.html %}\n  {% endunless %}\n{% endfor %}\n{% endfor %}\n"
  },
  {
    "path": "_pages/tag-archive.html",
    "content": "---\nlayout: archive\npermalink: /tags/\ntitle: \"Posts by Tags\"\nauthor_profile: true\n---\n\n{% include base_path %}\n{% include group-by-array collection=site.posts field=\"tags\" %}\n\n{% for tag in group_names %}\n  {% assign posts = group_items[forloop.index0] %}\n  <h2 id=\"{{ tag | slugify }}\" class=\"archive__subtitle\">{{ tag }}</h2>\n  {% for post in posts %}\n    {% include archive-single.html %}\n  {% endfor %}\n{% endfor %}"
  },
  {
    "path": "_pages/talkmap.html",
    "content": "---\nlayout: archive\ntitle: \"Talk map\"\npermalink: /talkmap.html\nauthor_profile: true\n---\n\n<p>This map is generated from a Jupyter Notebook file in <a href=\"https://github.com/academicpages/academicpages.github.io/blob/master/talkmap.ipynb\">talkmap.ipynb</a>, which mines the location fields in the .md files in _talks/.</p>\n<iframe src=\"/talkmap/map.html\" height=\"700\" width=\"850\" style=\"border:none;\"></iframe>\n"
  },
  {
    "path": "_pages/talks.html",
    "content": "---\nlayout: archive\ntitle: \"Talks and presentations\"\npermalink: /talks/\nauthor_profile: true\n---\n\n{% if site.talkmap_link == true %}\n\n<p style=\"text-decoration:underline;\"><a href=\"/talkmap.html\">See a map of all the places I've given a talk!</a></p>\n\n{% endif %}\n\n{% for post in site.talks reversed %}\n  {% include archive-single-talk.html %}\n{% endfor %}\n"
  },
  {
    "path": "_pages/teaching.html",
    "content": "---\nlayout: archive\ntitle: \"Teaching\"\npermalink: /teaching/\nauthor_profile: true\n---\n\n{% include base_path %}\n\n{% for post in site.teaching reversed %}\n  {% include archive-single.html %}\n{% endfor %}\n"
  },
  {
    "path": "_pages/terms.md",
    "content": "---\npermalink: /terms/\ntitle: \"Terms and Privacy Policy\"\nmodified: 2016-06-06\n---\n\n{% include base_path %}\n{% include toc %}\n\n## Privacy Policy\n\nThe privacy of my visitors is extremely important. This Privacy Policy outlines the types of personal information that is received and collected and how it is used.\n\nFirst and foremost, I will never share your email address or any other personal information to anyone without your direct consent.\n\n### Log Files\n\nLike many other websites, this site uses log files to help learn about when, from where, and how often traffic flows to this site. The information in these log files include:\n\n* Internet Protocol addresses (IP)\n* Types of browser\n* Internet Service Provider (ISP)\n* Date and time stamp\n* Referring and exit pages\n* Number of clicks\n\nAll of this information is not linked to anything that is personally identifiable.\n\n### Cookies and Web Beacons\n\nWhen you visit this site \"convenience\" cookies are stored on your computer when you submit a comment to help you log in faster to [Disqus](https://disqus.com) the next time you leave a comment.\n\nThird-party advertisers may also place and read cookies on your browser and/or use web beacons to collect information. This site has no access or control over these cookies. You should review the respective privacy policies on any and all third-party ad servers for more information regarding their practices and how to opt-out.\n\nIf you wish to disable cookies, you may do so through your web browser options. Instructions for doing so can be found on the specific web browsers' websites.\n\n#### Google Analytics\n\nGoogle Analytics is a web analytics tool I use to help understand how visitors engage with this website. It reports website trends using cookies and web beacons without identifying individual visitors. You can read [Google Analytics Privacy Policy](https://www.google.com/analytics/learn/privacy.html).\n"
  },
  {
    "path": "_pages/year-archive.html",
    "content": "---\nlayout: archive\npermalink: /year-archive/\ntitle: \"Blog posts\"\nauthor_profile: true\nredirect_from:\n  - /wordpress/blog-posts/\n---\n\n{% include base_path %}\n{% capture written_year %}'None'{% endcapture %}\n{% for post in site.posts %}\n  {% capture year %}{{ post.date | date: '%Y' }}{% endcapture %}\n  {% if year != written_year %}\n    <h2 id=\"{{ year | slugify }}\" class=\"archive__subtitle\">{{ year }}</h2>\n    {% capture written_year %}{{ year }}{% endcapture %}\n  {% endif %}\n  {% include archive-single.html %}\n{% endfor %}\n"
  },
  {
    "path": "_portfolio/portfolio-1.md",
    "content": "---\ntitle: \"Portfolio item number 1\"\nexcerpt: \"Short description of portfolio item number 1<br/><img src='/images/500x300.png'>\"\ncollection: portfolio\n---\n\nThis is an item in your portfolio. It can be have images or nice text. If you name the file .md, it will be parsed as markdown. If you name the file .html, it will be parsed as HTML. \n"
  },
  {
    "path": "_portfolio/portfolio-2.html",
    "content": "---\ntitle: \"Portfolio item number 2\"\nexcerpt: \"Short description of portfolio item number 2 <br/><img src='/images/500x300.png'>\"\ncollection: portfolio\n---\n\nThis is an item in your portfolio. It can be have images or nice text. If you name the file .md, it will be parsed as markdown. If you name the file .html, it will be parsed as HTML. \n"
  },
  {
    "path": "_posts/2012-08-14-blog-post-1.md",
    "content": "---\ntitle: 'Blog Post number 1'\ndate: 2012-08-14\npermalink: /posts/2012/08/blog-post-1/\ntags:\n  - cool posts\n  - category1\n  - category2\n---\n\nThis is a sample blog post. Lorem ipsum I can't remember the rest of lorem ipsum and don't have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.\n\nHeadings are cool\n======\n\nYou can have many headings\n======\n\nAren't headings cool?\n------"
  },
  {
    "path": "_posts/2013-08-14-blog-post-2.md",
    "content": "---\ntitle: 'Blog Post number 2'\ndate: 2013-08-14\npermalink: /posts/2013/08/blog-post-2/\ntags:\n  - cool posts\n  - category1\n  - category2\n---\n\nThis is a sample blog post. Lorem ipsum I can't remember the rest of lorem ipsum and don't have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.\n\nHeadings are cool\n======\n\nYou can have many headings\n======\n\nAren't headings cool?\n------"
  },
  {
    "path": "_posts/2014-08-14-blog-post-3.md",
    "content": "---\ntitle: 'Blog Post number 3'\ndate: 2014-08-14\npermalink: /posts/2014/08/blog-post-3/\ntags:\n  - cool posts\n  - category1\n  - category2\n---\n\nThis is a sample blog post. Lorem ipsum I can't remember the rest of lorem ipsum and don't have an internet connection right now. Testing testing testing this blog post. Blog posts are cool. \n\nHeadings are cool\n======\n\nYou can have many headings\n======\n\nAren't headings cool?\n------"
  },
  {
    "path": "_posts/2015-08-14-blog-post-4.md",
    "content": "---\ntitle: 'Blog Post number 4'\ndate: 2015-08-14\npermalink: /posts/2012/08/blog-post-4/\ntags:\n  - cool posts\n  - category1\n  - category2\n---\n\nThis is a sample blog post. Lorem ipsum I can't remember the rest of lorem ipsum and don't have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.\n\nHeadings are cool\n======\n\nYou can have many headings\n======\n\nAren't headings cool?\n------"
  },
  {
    "path": "_posts/2199-01-01-future-post.md",
    "content": "---\ntitle: 'Future Blog Post'\ndate: 2199-01-01\npermalink: /posts/2012/08/blog-post-4/\ntags:\n  - cool posts\n  - category1\n  - category2\n---\n\nThis post will show up by default. To disable scheduling of future posts, edit `config.yml` and set `future: false`. \n"
  },
  {
    "path": "_publications/2009-10-01-paper-title-number-1.md",
    "content": "---\ntitle: \"Paper Title Number 1\"\ncollection: publications\ncategory: manuscripts\npermalink: /publication/2009-10-01-paper-title-number-1\nexcerpt: 'This paper is about the number 1. The number 2 is left for future work.'\ndate: 2009-10-01\nvenue: 'Journal 1'\nslidesurl: 'https://academicpages.github.io/files/slides1.pdf'\npaperurl: 'https://academicpages.github.io/files/paper1.pdf'\nbibtexurl: 'https://academicpages.github.io/files/bibtex1.bib'\ncitation: 'Your Name, You. (2009). &quot;Paper Title Number 1.&quot; <i>Journal 1</i>. 1(1).'\n---\nThe contents above will be part of a list of publications, if the user clicks the link for the publication than the contents of section will be rendered as a full page, allowing you to provide more information about the paper for the reader. When publications are displayed as a single page, the contents of the above \"citation\" field will automatically be included below this section in a smaller font.\n"
  },
  {
    "path": "_publications/2010-10-01-paper-title-number-2.md",
    "content": "---\ntitle: \"Paper Title Number 2\"\ncollection: publications\ncategory: manuscripts\npermalink: /publication/2010-10-01-paper-title-number-2\nexcerpt: 'This paper is about the number 2. The number 3 is left for future work.'\ndate: 2010-10-01\nvenue: 'Journal 1'\nslidesurl: 'https://academicpages.github.io/files/slides2.pdf'\npaperurl: 'https://academicpages.github.io/files/paper2.pdf'\ncitation: 'Your Name, You. (2010). &quot;Paper Title Number 2.&quot; <i>Journal 1</i>. 1(2).'\n---\n\nThe contents above will be part of a list of publications, if the user clicks the link for the publication than the contents of section will be rendered as a full page, allowing you to provide more information about the paper for the reader. When publications are displayed as a single page, the contents of the above \"citation\" field will automatically be included below this section in a smaller font.\n"
  },
  {
    "path": "_publications/2015-10-01-paper-title-number-3.md",
    "content": "---\ntitle: \"Paper Title Number 3\"\ncollection: publications\ncategory: manuscripts\npermalink: /publication/2015-10-01-paper-title-number-3\nexcerpt: 'This paper is about the number 3. The number 4 is left for future work.'\ndate: 2015-10-01\nvenue: 'Journal 1'\nslidesurl: 'https://academicpages.github.io/files/slides3.pdf'\npaperurl: 'https://academicpages.github.io/files/paper3.pdf'\ncitation: 'Your Name, You. (2015). &quot;Paper Title Number 3.&quot; <i>Journal 1</i>. 1(3).'\n---\n\nThe contents above will be part of a list of publications, if the user clicks the link for the publication than the contents of section will be rendered as a full page, allowing you to provide more information about the paper for the reader. When publications are displayed as a single page, the contents of the above \"citation\" field will automatically be included below this section in a smaller font.\n"
  },
  {
    "path": "_publications/2024-02-17-paper-title-number-4.md",
    "content": "---\ntitle: \"Paper Title Number 4\"\ncollection: publications\ncategory: conferences\npermalink: /publication/2024-02-17-paper-title-number-4\nexcerpt: 'This paper is about fixing template issue #693.'\ndate: 2024-02-17\nvenue: 'GitHub Journal of Bugs'\npaperurl: 'https://academicpages.github.io/files/paper3.pdf'\ncitation: 'Your Name, You. (2024). &quot;Paper Title Number 3.&quot; <i>GitHub Journal of Bugs</i>. 1(3).'\n---\n\nThe contents above will be part of a list of publications, if the user clicks the link for the publication than the contents of section will be rendered as a full page, allowing you to provide more information about the paper for the reader. When publications are displayed as a single page, the contents of the above \"citation\" field will automatically be included below this section in a smaller font.\n"
  },
  {
    "path": "_publications/2025-06-08-paper-title-number-5.md",
    "content": "---\ntitle: \"Paper Title Number 5, with math $$E=mc^2$$\"\ncollection: publications\ncategory: conferences\npermalink: /publication/2024-02-17-paper-title-number-4\nexcerpt: 'This paper is about a famous math equation, $$E=mc^2$$'\ndate: 2024-02-17\nvenue: 'GitHub Journal of Bugs'\npaperurl: 'https://academicpages.github.io/files/paper3.pdf'\ncitation: 'Your Name, You. (2024). &quot;Paper Title Number 3.&quot; <i>GitHub Journal of Bugs</i>. 1(3).'\n---\n\nUsing [MathJax](https://www.mathjax.org/) in the description is supported - $$E=mc^2$$ - however, the use must be mindful that the default delimiters are `$$...$$` and `\\\\[...\\\\]` which differs from the `$...$` that is typically expected.\n"
  },
  {
    "path": "_sass/_syntax.scss",
    "content": "/* ==========================================================================\n   Syntax highlighting\n   ========================================================================== */\n\ndiv.highlighter-rouge, figure.highlight {\n  position: relative;\n  margin-bottom: 1em;\n  padding: 1em;\n  border: 1px solid var(--global-border-color);\n  border-radius: $border-radius;\n  background-color: var(--global-code-background-color);\n  box-shadow: $box-shadow;\n  font-size: $type-size-4;\n\n  &:before {\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: 0.5em;\n    background-color: mix(#fff, #7a8288, 90%);\n    content: \"\\f121\";\n    font-family: \"Font Awesome 6 Free\" !important;\n    font-size: $type-size-6;\n    line-height: 1;\n    text-transform: none;\n    speak: none;\n  }\n\n  .highlight {\n    margin: 0;\n    font-family: $monospace;\n    font-size: $type-size-6;\n    line-height: 1.8;\n  }\n}\n\n.highlight table td { padding: 5px; }\n.highlight table pre { margin: 0; }\n\n\n/*\n   Solarized Light\n   http://ethanschoonover.com/solarized\n\n   SOLARIZED HEX      ROLE\n   --------- -------- ------------------------------------------\n   base01    #586e75  body text / default code / primary content\n   base1     #93a1a1  comments / secondary content\n   base3     #fdf6e3  background\n   orange    #cb4b16  constants\n   red       #dc322f  regex, special keywords\n   blue      #22b3eb  reserved keywords\n   cyan      #2aa198  strings, numbers\n   green     #859900  operators, other keywords\n   ========================================================================== */\n\n.highlight .c { color: #93a1a1 } /* Comment */\n.highlight .err { color: #586e75 } /* Error */\n.highlight .g { color: #586e75 } /* Generic */\n.highlight .k { color: #859900 } /* Keyword */\n.highlight .l { color: #586e75 } /* Literal */\n.highlight .n { color: #586e75 } /* Name */\n.highlight .o { color: #859900 } /* Operator */\n.highlight .x { color: #cb4b16 } /* Other */\n.highlight .p { color: #586e75 } /* Punctuation */\n.highlight .cm { color: #93a1a1 } /* Comment.Multiline */\n.highlight .cp { color: #859900 } /* Comment.Preproc */\n.highlight .c1 { color: #93a1a1 } /* Comment.Single */\n.highlight .cs { color: #859900 } /* Comment.Special */\n.highlight .gd { color: #2aa198 } /* Generic.Deleted */\n.highlight .ge { color: #586e75; font-style: italic } /* Generic.Emph */\n.highlight .gr { color: #dc322f } /* Generic.Error */\n.highlight .gh { color: #cb4b16 } /* Generic.Heading */\n.highlight .gi { color: #859900 } /* Generic.Inserted */\n.highlight .go { color: #586e75 } /* Generic.Output */\n.highlight .gp { color: #586e75 } /* Generic.Prompt */\n.highlight .gs { color: #586e75; font-weight: bold } /* Generic.Strong */\n.highlight .gu { color: #cb4b16 } /* Generic.Subheading */\n.highlight .gt { color: #586e75 } /* Generic.Traceback */\n.highlight .kc { color: #cb4b16 } /* Keyword.Constant */\n.highlight .kd { color: #22b3eb } /* Keyword.Declaration */\n.highlight .kn { color: #859900 } /* Keyword.Namespace */\n.highlight .kp { color: #859900 } /* Keyword.Pseudo */\n.highlight .kr { color: #22b3eb } /* Keyword.Reserved */\n.highlight .kt { color: #dc322f } /* Keyword.Type */\n.highlight .ld { color: #586e75 } /* Literal.Date */\n.highlight .m { color: #2aa198 } /* Literal.Number */\n.highlight .s { color: #2aa198 } /* Literal.String */\n.highlight .na { color: #586e75 } /* Name.Attribute */\n.highlight .nb { color: #B58900 } /* Name.Builtin */\n.highlight .nc { color: #22b3eb } /* Name.Class */\n.highlight .no { color: #cb4b16 } /* Name.Constant */\n.highlight .nd { color: #22b3eb } /* Name.Decorator */\n.highlight .ni { color: #cb4b16 } /* Name.Entity */\n.highlight .ne { color: #cb4b16 } /* Name.Exception */\n.highlight .nf { color: #22b3eb } /* Name.Function */\n.highlight .nl { color: #586e75 } /* Name.Label */\n.highlight .nn { color: #586e75 } /* Name.Namespace */\n.highlight .nx { color: #586e75 } /* Name.Other */\n.highlight .py { color: #586e75 } /* Name.Property */\n.highlight .nt { color: #22b3eb } /* Name.Tag */\n.highlight .nv { color: #22b3eb } /* Name.Variable */\n.highlight .ow { color: #859900 } /* Operator.Word */\n.highlight .w { color: #586e75 } /* Text.Whitespace */\n.highlight .mf { color: #2aa198 } /* Literal.Number.Float */\n.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */\n.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */\n.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */\n.highlight .sb { color: #93a1a1 } /* Literal.String.Backtick */\n.highlight .sc { color: #2aa198 } /* Literal.String.Char */\n.highlight .sd { color: #586e75 } /* Literal.String.Doc */\n.highlight .s2 { color: #2aa198 } /* Literal.String.Double */\n.highlight .se { color: #cb4b16 } /* Literal.String.Escape */\n.highlight .sh { color: #586e75 } /* Literal.String.Heredoc */\n.highlight .si { color: #2aa198 } /* Literal.String.Interpol */\n.highlight .sx { color: #2aa198 } /* Literal.String.Other */\n.highlight .sr { color: #dc322f } /* Literal.String.Regex */\n.highlight .s1 { color: #2aa198 } /* Literal.String.Single */\n.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */\n.highlight .bp { color: #22b3eb } /* Name.Builtin.Pseudo */\n.highlight .vc { color: #22b3eb } /* Name.Variable.Class */\n.highlight .vg { color: #22b3eb } /* Name.Variable.Global */\n.highlight .vi { color: #22b3eb } /* Name.Variable.Instance */\n.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */\n"
  },
  {
    "path": "_sass/_themes.scss",
    "content": "/* ==========================================================================\n   SHARED THEME SETTINGS\n   ========================================================================== */\n\n/* ==========================================================================\n   TYPOGRAPHY\n   ========================================================================== */\n\n/* Used to set the size for <em> */\n$doc-font-size              : 16;\n\n/* Paragraph indention */\n$paragraph-indent           : false; // true, false (default)\n$indent-var                 : 1.3em;\n\n/* System typefaces */\n$serif                      : Georgia, Times, serif;\n$sans-serif                 : -apple-system, \".SFNSText-Regular\", \"San Francisco\", \"Roboto\", \"Segoe UI\", \"Helvetica Neue\", \"Lucida Grande\", Arial, sans-serif;\n$monospace                  : Monaco, Consolas, \"Lucida Console\", monospace;\n\n/* Sans serif typefaces */\n$sans-serif-narrow          : $sans-serif;\n$helvetica                  : Helvetica, \"Helvetica Neue\", Arial, sans-serif;\n\n/* Serif typefaces */\n$georgia                    : Georgia, serif;\n$times                      : Times, serif;\n$bodoni                     : \"Bodoni MT\", serif;\n$calisto                    : \"Calisto MT\", serif;\n$garamond                   : Garamond, serif;\n\n/* Type scale */\n$type-size-1                : 2.441em;  // ~39.056px\n$type-size-2                : 1.953em;  // ~31.248px\n$type-size-3                : 1.563em;  // ~25.008px\n$type-size-4                : 1.25em;   // ~20px\n$type-size-5                : 1em;      // ~16px\n$type-size-6                : 0.75em;   // ~12px\n$type-size-7                : 0.6875em; // ~11px\n$type-size-8                : 0.625em;  // ~10px\n\n$global-font-family         : $sans-serif;\n$header-font-family         : $sans-serif;\n$caption-font-family        : $serif;\n\n/* ==========================================================================\n   Breakpoints\n   ========================================================================== */\n\n@include breakpoint-set(\"to ems\", true);\n\n$small                      : 600px !default;\n$medium                     : 768px !default;\n$medium-wide                : 900px !default;\n$large                      : 925px !default;\n$x-large                    : 1280px !default;\n\n/* ==========================================================================\n   Grid\n   ========================================================================== */\n\n$right-sidebar-width-narrow : auto;\n$right-sidebar-width        : auto;\n$right-sidebar-width-wide   : auto;\n\n$susy: (\n    columns: 12,\n    column-width: 120px,\n    gutters: 1/4,\n    math: fluid,\n    output: float,\n    gutter-position: after,\n    container: $large,\n    global-box-sizing: border-box,\n);\n\n/* ==========================================================================\n   BRAND COLORS\n   ========================================================================== */\n\n$behance-color              : #1769FF;\n$bluesky-color              : #1184fe;\n$dribbble-color             : #ea4c89;\n$facebook-color             : #3b5998;\n$flickr-color               : #ff0084;\n$foursquare-color           : #0072b1;\n$google-plus-color          : #dd4b39;\n$instagram-color            : #517fa4;\n$kaggle-color               : #20c0ff;\n$lastfm-color               : #d51007;\n$linkedin-color             : #007bb6;\n$mastodon-color             : #6364ff;\n$orcid-color                : #a6ce39;\n$pinterest-color            : #cb2027;\n$rss-color                  : #fa9b39;\n$soundcloud-color           : #ff3300;\n$stackoverflow-color        : #fe7a15;\n$tumblr-color               : #32506d;\n$twitter-color              : #55acee;\n$vimeo-color                : #1ab7ea;\n$vine-color                 : #00bf8f;\n$youtube-color              : #bb0000;\n$xing-color                 : #006567;\n   "
  },
  {
    "path": "_sass/include/_mixins.scss",
    "content": "/* ==========================================================================\n   MIXINS\n   ========================================================================== */\n\n%tab-focus {\n  /* Default*/\n  outline: thin dotted $warning-color;\n  /* Webkit*/\n  outline: 5px auto $warning-color;\n  outline-offset: -2px;\n}\n\n/*\n   em function\n   ========================================================================== */\n\n@function em($target, $context: $doc-font-size) {\n  @return ($target / $context) * 1em;\n}\n\n\n/*\n   Bourbon clearfix\n   ========================================================================== */\n\n/*\n  * Provides an easy way to include a clearfix for containing floats.\n  * link http://cssmojo.com/latest_new_clearfix_so_far/\n  *\n  * example scss - Usage\n  *\n  * .element {\n  *   @include clearfix;\n  * }\n  *\n  * example css - CSS Output\n  *\n  * .element::after {\n  *   clear: both;\n  *   content: \"\";\n  *   display: table;\n  * }\n*/\n\n@mixin clearfix {\n  clear: both;\n\n  &::after {\n    clear: both;\n    content: \"\";\n    display: table;\n  }\n}"
  },
  {
    "path": "_sass/include/_utilities.scss",
    "content": "/* ==========================================================================\n   UTILITY CLASSES\n   ========================================================================== */\n\n/*\n   Visibility\n   ========================================================================== */\n\n/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */\n\n.hidden {\n  display: none;\n  visibility: hidden;\n}\n\n/* for preloading images */\n\n.load {\n  display: none;\n}\n\n.transparent {\n  opacity: 0;\n}\n\n/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */\n\n.visually-hidden,\n.screen-reader-text,\n.screen-reader-text span,\n.screen-reader-shortcut {\n  position: absolute !important;\n  clip: rect(1px, 1px, 1px, 1px);\n  height: 1px !important;\n  width: 1px !important;\n  border: 0 !important;\n  overflow: hidden;\n}\n\nbody:hover .visually-hidden a,\nbody:hover .visually-hidden input,\nbody:hover .visually-hidden button {\n  display: none !important;\n}\n\n/* screen readers */\n\n.screen-reader-text:focus,\n.screen-reader-shortcut:focus  {\n  clip: auto !important;\n  height: auto !important;\n  width: auto !important;\n  display: block;\n  font-size: 1em;\n  font-weight: bold;\n  padding: 15px 23px 14px;\n  background: var(--global-text-color);\n  z-index: 100000;\n  text-decoration: none;\n  box-shadow: 0 0 2px 2px rgba(0,0,0,.6);\n}\n\n\n/*\n   Skip links\n   ========================================================================== */\n\n.skip-link {\n  position: fixed;\n  z-index: 20;\n  margin: 0;\n  font-family: $sans-serif;\n  white-space: nowrap;\n}\n\n.skip-link li {\n  height: 0;\n  width: 0;\n  list-style: none;\n}\n\n\n/*\n   Type\n   ========================================================================== */\n\n.text-left {\n  text-align: left;\n}\n\n.text-center {\n  text-align: center;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.text-justify {\n  text-align: justify;\n}\n\n.text-nowrap {\n  white-space: nowrap;\n}\n\n\n/*\n   Alignment\n   ========================================================================== */\n\n/* clearfix */\n\n.cf { clear: both; }\n\n.wrapper {\n  @include container();\n}\n\n/* Source: http://snipplr.com/view/10979/css-cross-browser-word-wrap */\n.wordwrap { \n  white-space: pre-wrap;      /* CSS3 */   \n  white-space: -moz-pre-wrap; /* Firefox */    \n  white-space: -pre-wrap;     /* Opera <7 */   \n  white-space: -o-pre-wrap;   /* Opera 7 */    \n  word-wrap: break-word;      /* IE */\n}\n\n/*\n   Images\n   ========================================================================== */\n\n/* image align left */\n\n.align-left {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n\n  @include breakpoint($small) {\n    float: left;\n    margin-right: 1em;\n  }\n}\n\n/* image align right */\n\n.align-right {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n\n  @include breakpoint($small) {\n    float: right;\n    margin-left: 1em;\n  }\n}\n\n/* image align center */\n\n.align-center {\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n/* file page content container */\n\n.full {\n  @include breakpoint($large){\n    margin-right: -1 * span(2.5 of 12) !important;\n  }\n}\n\n/*\n   Icons\n   ========================================================================== */\n\n.icon {\n  display: inline-block;\n  fill: currentColor;\n  width: 1em;\n  height: 1.1em;\n  line-height: 1;\n  position: relative;\n  top: -0.1em;\n  vertical-align: middle;\n}\n\n/* Adjust this setting to control the space between an icon and text in the sidebar */\n.icon-pad-right {\n  padding-right: 0.5em;\n  margin-right: 0.5em;\n}\n\n/* social icons*/\n\n.social-icons {\n  .fa {\n    color: #000;\n  }\n\n  .fa-bluesky,\n  .fa-bluesky-square {\n    color: $bluesky-color;\n  }\n\n  .fa-behance,\n  .fa-behance-square {\n    color: $behance-color;\n  }\n\n  .fa-dribbble {\n    color: $dribbble-color;\n  }\n\n  .fa-facebook,\n  .fa-facebook-square {\n    color: $facebook-color;\n  }\n\n  .fa-flickr {\n    color: $flickr-color;\n  }\n\n  .fa-foursquare {\n    color: $foursquare-color;\n  }\n\n  .fa-google-plus,\n  .fa-google-plus-square {\n    color: $google-plus-color;\n  }\n\n  .fa-instagram {\n    color: $instagram-color;\n  }\n\n  .fa-kaggle,\n  .fa-kaggle-square {\n    color: $kaggle-color;\n  }\n\n  .fa-lastfm,\n  .fa-lastfm-square {\n    color: $lastfm-color;\n  }\n\n  .fa-linkedin,\n  .fa-linkedin-square {\n    color: $linkedin-color;\n  }\n\n  .fa-mastodon,\n  .fa-mastodon-square {\n    color: $mastodon-color;\n  }\n\n  .ai-orcid,\n  .ai-orcid-square {\n    color: $orcid-color;\n  }\n\n  .fa-pinterest,\n  .fa-pinterest-p,\n  .fa-pinterest-square {\n    color: $pinterest-color;\n  }\n\n  .fa-rss,\n  .fa-rss-square {\n    color: $rss-color;\n  }\n\n  .fa-soundcloud {\n    color: $soundcloud-color;\n  }\n\n  .fa-stack-exchange,\n  .fa-stack-overflow {\n    color: $stackoverflow-color;\n  }\n\n  .fa-tumblr,\n  .fa-tumblr-square {\n    color: $tumblr-color;\n  }\n\n  .fa-twitter,\n  .fa-twitter-square {\n    color: $twitter-color;\n  }\n\n  .fa-vimeo,\n  .fa-vimeo-square {\n    color: $vimeo-color;\n  }\n\n  .fa-vine {\n    color: $vine-color;\n  }\n\n  .fa-youtube,\n  .fa-youtube-square,\n  .fa-youtube-play {\n    color: $youtube-color;\n  }\n\n  .fa-xing,\n  .fa-xing-square {\n    color: $xing-color;\n  }\n}\n\n\n/*\n   Navicons\n   ========================================================================== */\n\n.navicon {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n  width: $navicon-width;\n  height: $navicon-height;\n  background: var(--global-masthead-link-color);\n  margin: auto;\n  -webkit-transition: 0.3s;\n  transition: 0.3s;\n\n  &:before,\n  &:after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    width: $navicon-width;\n    height: $navicon-height;\n    background: var(--global-masthead-link-color);\n    -webkit-transition: 0.3s;\n    transition: 0.3s;\n  }\n\n  &:before {\n    top: (-2 * $navicon-height);\n  }\n\n  &:after {\n    bottom: (-2 * $navicon-height);\n  }\n}\n\n.close .navicon {\n  /* hide the middle line*/\n  background: transparent;\n\n  /* overlay the lines by setting both their top values to 0*/\n  &:before, &:after{\n    -webkit-transform-origin: 50% 50%;\n        -ms-transform-origin: 50% 50%;\n            transform-origin: 50% 50%;\n    top: 0;\n    width: $navicon-width;\n  }\n\n  /* rotate the lines to form the x shape*/\n  &:before{\n    -webkit-transform: rotate3d(0,0,1,45deg);\n            transform: rotate3d(0,0,1,45deg);\n  }\n  &:after{\n    -webkit-transform: rotate3d(0,0,1,-45deg);\n            transform: rotate3d(0,0,1,-45deg);\n  }\n}\n\n\n/*\n   Sticky, fixed to top content\n   ========================================================================== */\n\n.sticky {\n  @include breakpoint($large) {\n    @include clearfix();\n    position: -webkit-sticky;\n    position: sticky;\n    top: 2em;\n\n    > * {\n      display: block;\n    }\n  }\n}\n\n\n/*\n   Wells\n   ========================================================================== */\n\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: $border-radius;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n\n\n/*\n   Modals\n   ========================================================================== */\n\n.show-modal {\n  overflow: hidden;\n  position: relative;\n\n  &:before {\n    position: absolute;\n    content: \"\";\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 999;\n    background-color: rgba(255, 255, 255, 0.85);\n  }\n\n  .modal {\n    display: block;\n  }\n}\n\n.modal {\n  display: none;\n  position: fixed;\n  width: 300px;\n  top: 50%;\n  left: 50%;\n  margin-left: -150px;\n  margin-top: -150px;\n  min-height: 0;\n  z-index: 9999;\n  background: var(--global-text-color);\n  border: 1px solid var(--global-border-color);\n  border-radius: $border-radius;\n  box-shadow: $box-shadow;\n\n  &__title {\n    margin: 0;\n    padding: 0.5em 1em;\n  }\n\n  &__supporting-text {\n    padding: 0 1em 0.5em 1em;\n  }\n\n  &__actions {\n    padding: 0.5em 1em;\n    border-top: 1px solid var(--global-border-color);\n  }\n}\n\n\n/*\n   Footnotes\n   ========================================================================== */\n\n.footnote {\n  color: var(--global-text-color-light);\n  text-decoration: none;\n}\n\n.footnotes {\n  color: var(--global-text-color-light);\n\n  ol, li, p {\n    margin-bottom: 0;\n    font-size: $type-size-6;\n  }\n}\n\na.reversefootnote {\n  color: var(--global-text-color-light);\n  text-decoration: none;\n\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\n\n/*\n   Required\n   ========================================================================== */\n\n.required {\n  color: $danger-color;\n  font-weight: bold;\n}\n"
  },
  {
    "path": "_sass/layout/_archive.scss",
    "content": "/* ==========================================================================\n   ARCHIVE\n   ========================================================================== */\n\n.archive {\n  margin-bottom: 2em;\n\n  @include breakpoint($medium) {\n    @include span(12 of 12);\n  }\n\n  @include breakpoint($large) {\n    @include span(10 of 12 last);\n    @include prefix(0.5 of 12);\n  }\n\n  a {\n    text-decoration: underline;\n\n    &:hover {\n      text-decoration: underline;\n\n      img {\n        box-shadow: 0 0 10px rgba(#000, 0.25);\n      }\n    }\n  }\n}\n\n.archive__subtitle {\n  margin: 1.414em 0 0;\n  padding-bottom: 0.5em;\n  font-size: $type-size-5;\n  color: var(--global-text-color-light);\n  border-bottom: 1px solid var(--global-border-color);\n\n  + .list__item .archive__item-title {\n    margin-top: 0.5em;\n  }\n}\n\n.archive__item-title {\n  margin-bottom: 0.25em;\n  font-family: $sans-serif-narrow;\n\n  a + a {\n    opacity: 0.5;\n  }\n}\n\n/* remove border*/\n.page__content {\n\n  .archive__item-title {\n    margin-top: 1em;\n    border-bottom: none;\n  }\n}\n\n.archive__item-excerpt {\n  margin-top: 0;\n  font-size: $type-size-6;\n\n  & + p {\n    text-indent: 0;\n  }\n}\n\n.archive__item-teaser {\n  border-radius: $border-radius;\n  overflow: hidden;\n  img {\n    width: 100%;\n  }\n}\n\n.archive__item:hover {\n  .archive__item-teaser {\n    box-shadow: 0 0 10px rgba(#000, 0.25);\n  }\n\n  .archive__item-title {\n    text-decoration: underline;\n  }\n}\n\n\n/*\n   List view\n   ========================================================================== */\n\n.list__item {\n  @include breakpoint($medium) {\n    padding-right: $right-sidebar-width-narrow;\n  }\n\n  @include breakpoint($large) {\n    padding-right: $right-sidebar-width;\n  }\n\n  @include breakpoint($x-large) {\n    padding-right: $right-sidebar-width-wide;\n  }\n\n  .page__meta {\n    margin: 0 0 4px;\n  }\n}\n\n\n/*\n   Grid view\n   ========================================================================== */\n\n.grid__item {\n  margin-bottom: 2em;\n\n  .page__meta {\n    margin: 0 0 4px;\n  }\n\n  .archive__item-title {\n    margin-top: 0.5em;\n    font-size: $type-size-5;\n  }\n\n  .archive__item-excerpt {\n    display: none;\n  }\n\n  @include breakpoint($small) {\n    @include gallery(5 of 10);\n    .archive__item-teaser {\n      max-height: 200px;\n    }\n  }\n\n  @include breakpoint($medium) {\n    margin-left: 0; /* reset before mixin does its thing*/\n    margin-right: 0; /* reset before mixin does its thing*/\n    @include gallery(2.5 of 10);\n\n    .archive__item-teaser {\n      max-height: 120px;\n    }\n\n    .archive__item-excerpt {\n      display: block;\n      font-size: $type-size-6;\n    }\n  }\n}\n\n\n/*\n   Features\n   ========================================================================== */\n\n.feature__wrapper {\n  @include clearfix();\n  margin-bottom: 2em;\n  border-bottom: 1px solid var(--global-border-color);\n}\n\n.feature__item {\n  margin-bottom: 2em;\n  font-size: 1.25rem;\n\n  @include breakpoint($small) {\n    margin-bottom: 0;\n    @include gallery(4 of 12);\n\n    .feature__item-teaser {\n      max-height: 200px;\n      overflow: hidden;\n    }\n  }\n\n  &--left {\n    @include full();\n    font-size: 1.25rem;\n\n    .archive__item-teaser {\n      margin-bottom: 2em;\n    }\n\n    @include breakpoint($small) {\n      .archive__item-teaser {\n        @include span(5 of 12);\n      }\n\n      .archive__item-body {\n        @include span(7 of 12 last);\n        @include prefix(0.5 of 12);\n        @include suffix(1 of 12);\n      }\n    }\n  }\n\n  &--right {\n    @include full();\n    font-size: 1.25rem;\n\n    .archive__item-teaser {\n      margin-bottom: 2em;\n    }\n\n    @include breakpoint($small) {\n      text-align: right;\n\n      .archive__item-teaser {\n        @include span(5 of 12 rtl);\n      }\n\n      .archive__item-body {\n        @include span(7 of 12 last rtl);\n        @include prefix(0.5 of 12);\n        @include suffix(1 of 12);\n      }\n    }\n  }\n\n  &--center {\n    @include full();\n    font-size: 1.25rem;\n\n    .archive__item-teaser {\n      margin-bottom: 2em;\n    }\n\n    @include breakpoint($small) {\n      text-align: center;\n\n      .archive__item-teaser {\n        margin: 0 auto;\n        width: span(5 of 12);\n      }\n\n      .archive__item-body {\n        margin: 0 auto;\n        width: span(7 of 12);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/layout/_base.scss",
    "content": "/* ==========================================================================\n   BASE ELEMENTS\n   ========================================================================== */\nhtml {\n  /* sticky footer fix */\n  position: relative;\n  min-height: 100%;\n}\n\nbody {\n  /* Set via _themes.scss */\n  color: var(--global-text-color);\n  background-color: var(--global-bg-color);\n\n  margin: 0;\n  padding: $masthead-height 0 0;\n  padding-bottom: 9em;\n  font-family: $global-font-family;\n  line-height: 1.5;\n\n  &.overflow--hidden {\n    /* when primary navigation is visible, the content in the background won't scroll */\n    overflow: hidden;\n  }\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin: 2em 0 0.5em;\n  line-height: 1.2;\n  font-family: $header-font-family;\n  font-weight: bold;\n}\n\nh1 {\n  margin-top: 0;\n  font-size: $type-size-3;\n}\n\nh2 {\n  font-size: $type-size-4;\n}\n\nh3 {\n  font-size: $type-size-5;\n}\n\nh4 {\n  font-size: $type-size-6;\n}\n\nh5 {\n  font-size: $type-size-6;\n}\n\nh6 {\n  font-size: $type-size-6;\n}\n\nsmall, .small {\n  font-size: $type-size-6;\n}\n\np {\n  margin-bottom: 1.3em;\n}\n\nu,\nins {\n  text-decoration: none;\n  border-bottom: 1px solid var(--global-text-color);\n  a {\n    color: inherit;\n  }\n}\n\ndel a {\n  color: inherit;\n}\n\n/* reduce orphans and widows when printing */\n\np, pre, blockquote, ul, ol, dl, figure, table, fieldset {\n  orphans: 3;\n  widows: 3;\n}\n\n/* abbreviations */\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: none;\n  cursor: help;\n  border-bottom: 1px dotted var(--global-text-color);\n}\n\n/* blockquotes */\n\nblockquote {\n  margin: 2em 1em 2em 0;\n  padding-left: 1em;\n  padding-right: 1em;\n  font-style: italic;\n  border-left: 0.25em solid var(--global-border-color);\n\n  cite {\n    font-style: italic;\n\n    &:before {\n      content: \"\\2014\";\n      padding-right: 5px;\n    }\n  }\n}\n\n/* links */\n\na {\n  &:focus {\n    @extend %tab-focus;\n  }\n\n  &:hover,\n  &:active {\n    outline: 0;\n  }\n}\n\n/* code */\n\ntt, code, kbd, samp, pre {\n  font-family: $monospace;\n}\n\npre {\n  overflow-x: auto; /* add scrollbars to wide code blocks*/\n}\n\na > code,\nfigcaption > code,\nli > code,\np > code,\ntd > code {\n  color: var(--global-code-text-color);\n  padding-top: 0.1rem;\n  padding-bottom: 0.1rem;\n  font-size: $type-size-6;\n  background: var(--global-code-background-color);\n  border: 1px solid var(--global-thead-color);\n  border-radius: $border-radius;\n  box-shadow: $box-shadow;\n\n  &:before, &:after {\n    letter-spacing: -0.2em;\n    content: \"\\00a0\"; /* non-breaking space*/\n  }\n}\n\na > code {\n    color: inherit;\n}\n\npre > code {\n  color: var(--global-code-text-color);\n}\n\n/* horizontal rule */\n\nhr {\n  display: block;\n  margin: 1em 0;\n  border: 0;\n  border-top: 1px solid var(--global-border-color);\n}\n\n/* lists */\n\nul li,\nol li {\n  margin-bottom: 0.5em;\n}\n\nli ul,\nli ol {\n  margin-top: 0.5em;\n}\n\n/*\n   Media and embeds\n   ========================================================================== */\n\n/* Figures and images */\n\nfigure {\n  display: -webkit-box;\n  display: flex;\n  -webkit-box-pack: justify;\n          justify-content: space-between;\n  -webkit-box-align: start;\n          align-items: flex-start;\n  flex-wrap: wrap;\n  margin: 2em 0;\n\n  img,\n  iframe,\n  .fluid-width-video-wrapper {\n    margin-bottom: 1em;\n  }\n\n  img {\n    width: 100%;\n    border-radius: $border-radius;\n    -webkit-transition: $global-transition;\n    transition: $global-transition;\n  }\n\n  > a {\n    display: block;\n  }\n\n  &.half {\n    > a,\n    > img {\n      @include breakpoint($small) {\n        width: calc(50% - 0.5em);\n      }\n    }\n\n    figcaption {\n      width: 100%;\n    }\n  }\n\n  &.third {\n    > a,\n    > img {\n      @include breakpoint($small) {\n        width: calc(33.3333% - 0.5em);\n      }\n    }\n\n    figcaption {\n      width: 100%;\n    }\n  }\n}\n\n/* Figure captions */\n\nfigcaption {\n  margin-bottom: 0.5em;\n  color: var(--global-fig-caption-color);\n  font-family: $caption-font-family;\n  font-size: $type-size-6;\n\n  a {\n    color: inherit;\n    text-decoration: none;\n    border-bottom: 1px solid var(--global-border-color );\n    -webkit-transition: $global-transition;\n    transition: $global-transition;\n\n    &:hover {\n      color: #000;\n      border-bottom-color: #000;\n    }\n  }\n}\n\n\n/* Fix IE9 SVG bug */\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n\n/*\n   Navigation lists\n   ========================================================================== */\n\n/**\n * Removes margins, padding, and bullet points from navigation lists\n *\n * Example usage:\n * <nav>\n *    <ul>\n *      <li><a href=\"#link-1\">Link 1</a></li>\n *      <li><a href=\"#link-2\">Link 2</a></li>\n *      <li><a href=\"#link-3\">Link 3</a></li>\n *    </ul>\n *  </nav>\n */\n\nnav {\n  ul {\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    list-style: none;\n  }\n\n  a {\n    text-decoration: none;\n  }\n\n  /* override white-space for nested lists */\n  ul li,\n  ol li {\n    margin-bottom: 0;\n  }\n\n  li ul,\n  li ol {\n    margin-top: 0;\n  }\n}\n\n/* ==========================================================================\n   ANIMATIONS\n   ========================================================================== */\n\n   @-webkit-keyframes intro {\n    0% {\n      opacity: 0;\n    }\n    100% {\n      opacity: 1;\n    }\n  }\n  \n  @keyframes intro {\n    0% {\n      opacity: 0;\n    }\n    100% {\n      opacity: 1;\n    }\n  }\n\n/* Global animation transition */\nb, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a, tr, td, form button, input[type=\"submit\"], .btn, .highlight, .archive__item-teaser {\n  -webkit-transition: $global-transition;\n  transition: $global-transition;\n}\n\n/* ==========================================================================\n   PRINT STYLES\n   ========================================================================== */\n\n/*\n   Hide the following elements on print\n   ========================================================================== */\n\n   @media print {\n    .masthead,\n    .toc,\n    .page__share,\n    .page__related,\n    .ads,\n    .page__footer {\n      display: none;\n    }\n  }"
  },
  {
    "path": "_sass/layout/_buttons.scss",
    "content": "/* ==========================================================================\n   BUTTONS\n   ========================================================================== */\n\n/*\n   Default button\n   ========================================================================== */\n\n.btn {\n  /* default button */\n  display: inline-block;\n  margin-bottom: 0.25em;\n  padding: 0.5em 1em;\n  color: #fff !important;\n  font-family: $sans-serif;\n  font-size: $type-size-6;\n  font-weight: bold;\n  text-align: center;\n  text-decoration: none;\n  background-color: var(--global-base-color);\n  border: 0 !important;\n  border-radius: $border-radius;\n  cursor: pointer;\n\n  &:hover {\n    background-color: mix(white, #000, 20%);\n  }\n\n  .icon {\n    margin-right: 0.5em;\n  }\n\n  .icon + .hidden {\n    margin-left: -0.5em; /* override for hidden text*/\n  }\n\n  /* fills width of parent container */\n\n  &--block {\n    display: block;\n    width: 100%;\n\n    + .btn--block {\n      margin-top: 0.25em;\n    }\n  }\n\n  /* for dark backgrounds */\n\n  &--inverse {\n    color: var(--global-text-color-light) !important;\n    border: 1px solid var(--global-border-color) !important; /* override*/\n    background-color: var(--global-bg-color);\n\n    &:hover {\n      color: #fff !important;\n      border-color: var(--global-text-color-light);\n    }\n  }\n\n  /* light outline */\n\n  &--light-outline {\n    border: 1px solid #fff !important; /* override*/\n    background-color: transparent;\n  }\n\n  /* information */\n\n  &--info {\n    background-color: $info-color;\n\n    &:hover {\n      background-color: mix(#000, $info-color, 20%);\n    }\n  }\n\n  /* warning */\n\n  &--warning {\n    background-color: $warning-color;\n\n    &:hover {\n      background-color: mix(#000, $warning-color, 20%);\n    }\n  }\n\n  /* success */\n\n  &--success {\n    background-color: $success-color;\n\n    &:hover {\n      background-color: mix(#000, $success-color, 20%);\n    }\n  }\n\n  /* danger */\n\n  &--danger {\n    background-color: $danger-color;\n\n    &:hover {\n      background-color: mix(#000, $danger-color, 20%);\n    }\n  }\n\n  /* disabled */\n\n  &--disabled {\n    pointer-events: none;\n    cursor: not-allowed;\n    filter: alpha(opacity=65);\n    box-shadow: none;\n    opacity: 0.65;\n  }\n\n  /* social buttons */\n\n  $social:\n  (bluesky, $bluesky-color),\n  (facebook, $facebook-color),\n  (google-plus, $google-plus-color),\n  (linkedin, $linkedin-color),\n  (mastodon, $mastodon-color),\n  (twitter, $twitter-color); \n\n  @each $socialnetwork, $color in $social {\n    &--#{$socialnetwork} {\n      background-color: $color;\n\n      &:hover {\n        background-color: mix(#000, $color, 20%);\n      }\n    }\n  }\n\n  /* extra large button */\n\n  &--x-large {\n    font-size: $type-size-4;\n  }\n\n  /* large button */\n\n  &--large {\n    font-size: $type-size-5;\n  }\n\n  /* small button */\n\n  &--small {\n    font-size: $type-size-7;\n  }\n}\n"
  },
  {
    "path": "_sass/layout/_footer.scss",
    "content": "/* ==========================================================================\n   FOOTER\n   ========================================================================== */\n\n.page__footer {\n  @include clearfix;\n  background-color: var(--global-footer-bg-color);\n  color: var(--global-text-color-light);\n\n  float: left;\n  margin-left: 0;\n  margin-right: 0;\n  width: 100%;\n  clear: both;\n\n  /* sticky footer fix start */\n  position: absolute;\n  bottom: 0em;\n  height: auto;\n  /* sticky footer fix end */\n\n  margin-top: 3em;\n\n  -webkit-animation: intro 0.3s both;\n          animation: intro 0.3s both;\n  -webkit-animation-delay: 0.45s;\n          animation-delay: 0.45s;\n  border-top: 1px solid var(--global-dark-border-color);\n\n  footer {\n    @include clearfix;\n    margin-left: auto;\n    margin-right: auto;\n    margin-top: 1em;\n    max-width: 100%;\n    padding: 0 1em 1em;\n\n    @include breakpoint($x-large) {\n      max-width: $x-large;\n    }\n  }\n\n  a {\n    color: inherit;\n    text-decoration: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n\n  .fas,\n  .fab,\n  .far,\n  .fal {\n    color: var(--global-text-color-light);\n  }\n}\n\n.page__footer-copyright {\n  font-family: $global-font-family;\n  font-size: $type-size-7;\n}\n\n.page__footer-follow {\n  ul {\n    margin: 0;\n    padding: 0;\n    list-style-type: none;\n  }\n\n  li {\n    display: inline-block;\n    padding-top: 5px;\n    padding-bottom: 5px;\n    font-family: $sans-serif-narrow;\n    font-size: $type-size-6;\n    text-transform: uppercase;\n  }\n\n  li + li:before {\n    content: \"\";\n    padding-right: 5px;\n  }\n\n  a {\n    padding-right: 10px;\n    font-weight: bold;\n  }\n\n  .social-icons {\n    a {\n      white-space: nowrap;\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/layout/_forms.scss",
    "content": "/* ==========================================================================\n   Forms\n   ========================================================================== */\n\nform {\n  margin: 0 0 5px 0;\n\n  fieldset {\n    margin-bottom: 5px;\n    padding: 0;\n    border-width: 0;\n  }\n\n  legend {\n    display: block;\n    width: 100%;\n    margin-bottom: 5px * 2;\n    *margin-left: -7px;\n    padding: 0;\n    color: var(--global-text-color);\n    border: 0;\n    border-bottom: 1px solid mix(#fff, #000, 80%);\n    white-space: normal;\n  }\n\n  p {\n    margin-bottom: 5px / 2;\n  }\n\n  ul {\n    list-style-type: none;\n    margin: 0 0 5px 0;\n    padding: 0;\n  }\n\n  br {\n    display: none;\n  }\n}\n\nlabel,\ninput,\nbutton,\nselect,\ntextarea {\n  vertical-align: baseline;\n  *vertical-align: middle;\n}\n\ninput,\nbutton,\nselect,\ntextarea {\n  box-sizing: border-box;\n  font-family: $sans-serif;\n}\n\nlabel {\n  display: block;\n  margin-bottom: 0.25em;\n  color: var(--global-text-color);\n  cursor: pointer;\n\n  small {\n    font-size: $type-size-6;\n  }\n\n  input,\n  textarea,\n  select {\n    display: block;\n  }\n}\n\ninput,\ntextarea,\nselect {\n  display: inline-block;\n  width: 100%;\n  padding: 0.25em;\n  margin-bottom: 0.5em;\n  color: var(--global-text-color);\n  background-color: #fff;\n  border: 1px solid mix(#fff, #000, 80%);\n  border-radius: $border-radius;\n  box-shadow: $box-shadow;\n\n  &:hover {\n    border-color: var(--global-base-color);\n  }\n}\n\n.input-mini {\n  width: 60px;\n}\n\n.input-small {\n  width: 90px;\n}\n\ninput[type=\"image\"],\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  width: auto;\n  height: auto;\n  padding: 0;\n  margin: 3px 0;\n  *margin-top: 0;\n  line-height: normal;\n  cursor: pointer;\n  border-radius: 0;\n  border: 0 \\9;\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n  *width: 13px;\n  *height: 13px;\n}\n\ninput[type=\"image\"] {\n  border: 0;\n  box-shadow: none;\n}\n\ninput[type=\"file\"] {\n  width: auto;\n  padding: initial;\n  line-height: initial;\n  border: initial;\n  background-color: transparent;\n  background-color: initial;\n  box-shadow: none;\n}\n\ninput[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  width: auto;\n  height: auto;\n  cursor: pointer;\n  *overflow: visible;\n}\n\nselect,\ninput[type=\"file\"] {\n  *margin-top: 4px;\n}\n\nselect {\n  width: auto;\n  background-color: #fff;\n}\n\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\ntextarea {\n  resize: vertical;\n  height: auto;\n  overflow: auto;\n  vertical-align: top;\n}\n\ninput[type=\"hidden\"] {\n  display: none;\n}\n\n.form {\n  position: relative;\n}\n\n.radio,\n.checkbox {\n  padding-left: 18px;\n  font-weight: normal;\n}\n\n.radio input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -18px;\n}\n\n.radio.inline,\n.checkbox.inline {\n  display: inline-block;\n  padding-top: 5px;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.radio.inline + .radio.inline,\n.checkbox.inline + .checkbox.inline {\n  margin-left: 10px;\n}\n\n\n/*\n   Disabled state\n   ========================================================================== */\n\ninput[disabled],\nselect[disabled],\ntextarea[disabled],\ninput[readonly],\nselect[readonly],\ntextarea[readonly] {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n\n/*\n   Focus & active state\n   ========================================================================== */\n\ninput:focus,\ntextarea:focus {\n  border-color: var(--global-border-color);\n  outline: 0;\n  outline: thin dotted \\9;\n}\n\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus,\nselect:focus {\n  box-shadow: none;\n}\n\n\n/*\n   Help text\n   ========================================================================== */\n\n.help-block,\n.help-inline {\n  color: $info-color;\n}\n\n.help-block {\n  display: block;\n  margin-bottom: 1em;\n  line-height: 1em;\n}\n\n.help-inline {\n  display: inline-block;\n  vertical-align: middle;\n  padding-left: 5px;\n}\n\n\n/*\n   .form-inline\n   ========================================================================== */\n\n.form-inline input,\n.form-inline textarea,\n.form-inline select {\n  display: inline-block;\n  margin-bottom: 0;\n}\n\n.form-inline label {\n  display: inline-block;\n}\n\n.form-inline .radio,\n.form-inline .checkbox,\n.form-inline .radio {\n  padding-left: 0;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.form-inline .radio input[type=\"radio\"],\n.form-inline .checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-left: 0;\n  margin-right: 3px; }\n\n\n/*\n   .form-search\n   ========================================================================== */\n\n.form-search input,\n.form-search textarea,\n.form-search select {\n  display: inline-block;\n  margin-bottom: 0;\n}\n\n.form-search .search-query {\n  padding-left: 14px;\n  padding-right: 14px;\n  margin-bottom: 0;\n  border-radius: 14px;\n}\n\n.form-search label {\n  display: inline-block;\n}\n\n.form-search .radio,\n.form-search .checkbox,\n.form-inline .radio {\n  padding-left: 0;\n  margin-bottom: 0;\n  vertical-align: middle;\n}\n\n.form-search .radio input[type=\"radio\"],\n.form-search .checkbox input[type=\"checkbox\"] {\n  float: left;\n  margin-left: 0;\n  margin-right: 3px;\n}\n\n\n/*\n   .form--loading\n   ========================================================================== */\n\n.form--loading:before {\n  content: '';\n}\n\n.form--loading .form__spinner {\n  display: block;\n}\n\n.form:before {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background-color: rgba(255, 255, 255, 0.7);\n  z-index: 10;\n}\n\n.form__spinner {\n  display: none;\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  z-index: 11;\n}\n\n\n\n/*\n   Google search form\n   ========================================================================== */\n\n#goog-fixurl {\n  ul {\n    list-style: none;\n    margin-left: 0;\n    padding-left: 0;\n    li {\n      list-style-type: none;\n    }\n  }\n}\n\n#goog-wm-qt {\n  width: auto;\n  margin-right: 10px;\n  margin-bottom: 20px;\n  padding: 8px 20px;\n  display: inline-block;\n  font-size: $type-size-6;\n  background-color: #fff;\n  color: #000;\n  border-width: 2px !important;\n  border-style: solid !important;\n  border-color: lighten(#000,50);\n  border-radius: $border-radius;\n}\n\n#goog-wm-sb {\n  @extend .btn;\n}"
  },
  {
    "path": "_sass/layout/_json_cv.scss",
    "content": "/* ==========================================================================\n   JSON CV\n   ========================================================================== */\n\n/* CV Template Styles */\n.cv-container {\n  max-width: 1000px;\n  margin: 0 auto;\n  font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n  color: var(--global-text-color);\n  line-height: 1.6;\n}\n\n/* Header Styles */\n.cv-header {\n  margin-bottom: 2rem;\n  border-bottom: 2px solid var(--global-thead-color );\n  padding-bottom: 1rem;\n}\n\n.cv-header h1 {\n  margin-bottom: 0.5rem;\n  color: var(--global-text-color );\n}\n\n.cv-contact-info {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 1rem;\n  margin-bottom: 0.5rem;\n}\n\n.cv-contact-item {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.cv-profiles {\n  display: flex;\n  gap: 1rem;\n  margin-top: 0.5rem;\n}\n\n.cv-profile-item {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.cv-profile-item a {\n  color: var(--global-link-color);\n  text-decoration: none;\n}\n\n.cv-profile-item a:hover {\n  text-decoration: underline;\n}\n\n/* Section Styles */\n.cv-section {\n  margin-bottom: 2rem;\n}\n\n.cv-section h2 {\n  border-bottom: 1px solid var(--global-border-color);\n  padding-bottom: 0.5rem;\n  margin-bottom: 1rem;\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  color: var(--global-text-color);\n}\n\n.cv-section h2 i {\n  color: var(--global-text-color);\n}\n\n/* Item Styles */\n\n.cv-item {\n  margin-bottom: 1.5rem;\n}\n\n.cv-list {\n  list-style-type: none;\n}\n\n.cv-item-header {\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 0.5rem;\n}\n\n.cv-item-title {\n  font-weight: bold;\n  font-size: 1.1rem;\n}\n\n.cv-item-date {\n  color: var(--global-text-color);\n}\n\n.cv-item-subtitle {\n  color: var(--global-text-color);\n  margin-bottom: 0.5rem;\n}\n\n.cv-item-summary {\n  margin-bottom: 0.5rem;\n}\n\n.cv-item-highlights {\n  margin-top: 0.5rem;\n  padding-left: 1.5rem;\n}\n\n.cv-item-highlights li {\n  margin-bottom: 0.25rem;\n}\n\n.cv-item-courses li {\n  margin-bottom: 0.25rem;\n}\n\n/* Skills Styles */\n.cv-skills {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n  gap: 1.5rem;\n}\n\n.cv-skill-category h3 {\n  margin-bottom: 0.5rem;\n  color: var(--global-text-color);\n}\n\n.cv-skill-keywords {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.cv-skill-keyword {\n  background-color: var(--global-bg-color);\n  padding: 0.25rem 0.5rem;\n  border-radius: 4px;\n  font-size: 0.9rem;\n}\n\n/* Project Styles */\n.cv-project-keywords {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n  margin-top: 0.5rem;\n}\n\n.cv-project-keyword {\n  background-color: var(--global-bg-color);\n  color: var(--global-thead-color);\n  padding: 0.25rem 0.5rem;\n  border-radius: 4px;\n  font-size: 0.9rem;\n}\n\n/* Languages Styles */\n.cv-languages {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 1rem;\n}\n\n.cv-language {\n  display: flex;\n  flex-direction: column;\n}\n\n.cv-language-name {\n  font-weight: bold;\n}\n\n.cv-language-fluency {\n  color: var(--global-text-color);\n  font-size: 0.9rem;\n}\n\n/* Interests Styles */\n.cv-interests {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n  gap: 1.5rem;\n}\n\n.cv-interest h3 {\n  margin-bottom: 0.5rem;\n  color: var(--global-text-color);\n}\n\n.cv-interest-keywords {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n}\n\n.cv-interest-keyword {\n  background-color: var(--global-bg-color);\n  padding: 0.25rem 0.5rem;\n  border-radius: 4px;\n  font-size: 0.9rem;\n}\n\n/* References Styles */\n.cv-references {\n  font-style: italic;\n  color: var(--global-text-color);\n}\n\n/* Print Styles */\n@media print {\n  .cv-container {\n    max-width: 100%;\n  }\n  \n  .cv-header {\n    border-bottom-color: var(--global-border-color);\n  }\n  \n  .cv-section h2 {\n    border-bottom-color: var(--global-border-color);\n  }\n  \n  .cv-skill-keyword,\n  .cv-project-keyword,\n  .cv-interest-keyword {\n    border: 1px solid var(--global-border-color);\n    background-color: transparent;\n  }\n}\n"
  },
  {
    "path": "_sass/layout/_masthead.scss",
    "content": "/* ==========================================================================\n   MASTHEAD\n   ========================================================================== */\n\n.masthead {\n  position: fixed;\n  background: var(--global-bg-color);\n  height: fit-content;\n  top: 0;\n  width: 100%;\n\n  -webkit-animation: intro 0.3s both;\n          animation: intro 0.3s both;\n  -webkit-animation-delay: 0.15s;\n          animation-delay: 0.15s;\n  z-index: 20;\n\n  &::after {\n    content: \"\";\n    position: absolute;\n    bottom: 0;\n    height: 1px;\n    background: var(--global-border-color);\n    width: 100%;\n  }\n\n  &__inner-wrap {\n    @include container;\n    @include clearfix;\n    padding: 0.5em 1em;\n    font-family: $sans-serif-narrow;\n\n    @include breakpoint($x-large) {\n      max-width: $x-large;\n    }\n\n    nav {\n      z-index: 10;\n    }\n\n    a {\n      text-decoration: none;\n    }\n  }\n}\n\n.masthead__menu {\n\n  ul {\n    margin: 0;\n    padding: 0;\n    clear: both;\n    list-style-type: none;\n  }\n}\n\n.masthead__menu-item {\n  background-color: var(--global-bg-color);\n  display: block;\n  list-style-type: none;\n  white-space: nowrap;\n\n  &--lg {\n    padding-right: 2em;\n    font-weight: 700;\n  }\n}\n\n.masthead__menu-item.selected a {\n  color: var(--global-text-color);\n  font-weight: 700;\n  border-bottom: 2px solid var(--global-text-color);\n  pointer-events: none; /* Move this here */\n  cursor: default; /* Move this here too */\n}\n\n.masthead__menu-item.selected a:hover {\n  color: var(--global-text-color);\n  border-bottom: 2px solid var(--global-text-color);\n  /* No need to repeat pointer-events and cursor here */\n}\n"
  },
  {
    "path": "_sass/layout/_navigation.scss",
    "content": "/* ==========================================================================\n   NAVIGATION\n   ========================================================================== */\n\n/*\n   Breadcrumb navigation links\n   ========================================================================== */\n\n.breadcrumbs {\n  @include container;\n  @include clearfix;\n  margin-top: 0;\n  margin-bottom: 0;\n  padding-left: 2em;\n  padding-right: 2em;\n  font-family: $sans-serif;\n  -webkit-animation: intro 0.3s both;\n          animation: intro 0.3s both;\n  -webkit-animation-delay: 0.30s;\n          animation-delay: 0.30s;\n\n  @include breakpoint($large) {\n    padding-left: 1em;\n    padding-right: 1em;\n  }\n\n  @include breakpoint($x-large) {\n    max-width: $x-large;\n  }\n\n  ol {\n    padding: 0;\n    list-style: none;\n    font-size: $type-size-6;\n\n    @include breakpoint($large) {\n      @include span(10 of 12 last);\n    }\n\n    @include breakpoint($x-large) {\n      @include prefix(0.5 of 12);\n    }\n  }\n\n  li {\n    display: inline;\n  }\n\n  .current {\n    font-weight: bold;\n  }\n}\n\n\n/*\n   Post pagination navigation links\n   ========================================================================== */\n\n.pagination {\n  @include full();\n  @include clearfix();\n  margin-top: 1em;\n  padding-top: 1em;\n\n  ul {\n    margin: 0;\n    padding: 0;\n    list-style-type: none;\n    font-family: $sans-serif;\n  }\n\n  li {\n    display: block;\n    float: left;\n    margin-left: -1px;\n\n    a {\n      margin-bottom: 0.25em;\n      padding: 0.5em 1em;\n      font-family: $sans-serif;\n      font-size: 14px;\n      font-weight: bold;\n      line-height: 1.5;\n      text-align: center;\n      text-decoration: none;\n      color: var(--global-text-color-light);\n      border: 1px solid var(--global-border-color);\n      border-radius: 0;\n\n      &:hover {\n        color: var(--global-link-color-hover);\n      }\n\n      &.current {\n        color: #fff;\n        background: var(--global-base-color);\n      }\n\n      &.disabled {\n        color: var(--global-text-color-light);\n        pointer-events: none;\n        cursor: not-allowed;\n      }\n    }\n\n    &:first-child {\n      margin-left: 0;\n\n      a {\n        border-top-left-radius: $border-radius;\n        border-bottom-left-radius: $border-radius;\n      }\n    }\n\n    &:last-child {\n      a {\n        border-top-right-radius: $border-radius;\n        border-bottom-right-radius: $border-radius;\n      }\n    }\n  }\n\n  /* next/previous buttons */\n  &--pager {\n    display: block;\n    padding: 1em 2em;\n    float: left;\n    width: 50%;\n    font-family: $sans-serif;\n    font-size: $type-size-5;\n    font-weight: bold;\n    text-align: center;\n    text-decoration: none;\n    color: var(--global-text-color-light);\n    border: 1px solid var(--global-border-color);\n    border-radius: $border-radius;\n\n    &:hover {\n      color: var(--global-link-color-hover);\n    }\n\n    &:first-child {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n    }\n\n    &:last-child {\n      margin-left: -1px;\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n\n    &.disabled {\n      color: var(--global-text-color-light);\n      pointer-events: none;\n      cursor: not-allowed;\n    }\n  }\n}\n\n.page__content + .pagination,\n.page__meta + .pagination,\n.page__share + .pagination,\n.page__comments + .pagination {\n  margin-top: 2em;\n  padding-top: 2em;\n  border-top: 1px solid var(--global-border-color);\n}\n\n\n/*\n   Priority plus navigation\n   ========================================================================== */\n\n.greedy-nav {\n  position: relative;\n  min-width: 250px;\n  background: var(--global-bg-color);\n\n  a {\n    display: block;\n    margin: 0 1rem;\n    padding: 0.5rem 0;\n    color: var(--global-masthead-link-color);\n    text-decoration: none;\n\n    &:hover {\n      color: var(--global-masthead-link-color-hover);\n    }\n  }\n\n  button {\n    position: absolute;\n    height: 2.5rem;\n    right: 0;\n    padding: 0 0.5rem;\n    border: 0;\n    outline: none;\n    background-color: var(--global-bg-color);\n    color: var(--global-text-color);\n    cursor: pointer;\n    z-index: 100;\n  }\n\n  .visible-links {\n    display: table;\n\n    li {\n      display: table-cell;\n      vertical-align: middle;\n\n      &:first-child {\n        font-weight: bold;\n        text-wrap: wrap;\n\n        a {\n          margin-left: 0;\n        }\n      }\n\n      &:last-child {\n        a {\n          margin-right: 0;\n        }\n      }\n    }\n\n    #theme-toggle {\n      a {\n        width: 25px;\n        display: flex;\n        justify-content: center;\n        cursor: pointer;\n      }\n    }\n\n    a {\n      position: relative;\n\n      &:before {\n        content: \"\";\n        position: absolute;\n        left: 0;\n        bottom: 0;\n        height: 4px;\n        background: var(--global-border-color);\n        width: 100%;\n        -webkit-transition: $global-transition;\n        transition: $global-transition;\n        -webkit-transform: scaleX(0);\n            -ms-transform: scaleX(0);\n                transform: scaleX(0); /* hide*/\n      }\n\n      &:hover:before {\n        -webkit-transform: scaleX(1);\n            -ms-transform: scaleX(1);\n                transform: scaleX(1); /* reveal*/\n      }\n    }\n  }\n\n  .hidden-links {\n    position: absolute;\n    top: 100%;\n    right: 0;\n    margin-top: 15px;\n    padding: 5px;\n    border: 1px solid var(--global-border-color);\n    border-radius: $border-radius;\n    background: var(--global-bg-color);\n    box-shadow: 0 0 10px rgba(#000, 0.25);\n\n    a {\n      margin: 0;\n      padding: 10px 20px;\n      font-size: $type-size-5;\n\n      &:hover {\n        color: var(--global-masthead-link-color-hover);\n        background: var(--global-border-color);\n      }\n    }\n\n    &:before {\n      content: \"\";\n      position: absolute;\n      top: -11px;\n      right: 10px;\n      width: 0;\n      border-style: solid;\n      border-width: 0 10px 10px;\n      border-color: var(--global-border-color) transparent;\n      display: block;\n      z-index: 0;\n    }\n\n    &:after {\n      content: \"\";\n      position: absolute;\n      top: -10px;\n      right: 10px;\n      width: 0;\n      border-style: solid;\n      border-width: 0 10px 10px;\n      border-color: var(--global-bg-color) transparent;\n      display: block;\n      z-index: 1;\n    }\n\n    li {\n      display: block;\n      border-bottom: 1px solid var(--global-border-color);\n\n      &:last-child {\n        border-bottom: none;\n      }\n    }\n  }\n}\n\n\n/*\n   Navigation list\n   ========================================================================== */\n\n.nav__list {\n  font-size: 1.25rem;\n\n  ul {\n    margin-bottom: 1em;\n  }\n\n  a {\n    display: block;\n    padding: 0.125em 0;\n    color: inherit;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n\n  .active {\n    margin-left: -0.5em;\n    padding-left: 0.5em;\n    padding-right: 0.5em;\n    color: #fff;\n    font-weight: bold;\n    background: var(--global-base-color);\n    border-radius: $border-radius;\n\n    &:hover {\n      color: #fff;\n    }\n  }\n}\n\n.nav__title {\n  margin: 0;\n  padding: 0.5rem 1rem;\n  font-family: $sans-serif-narrow;\n  font-size: $type-size-5;\n  font-weight: bold;\n}\n\n.nav__sub-title {\n  display: block;\n  margin: 0.5rem 0;\n  padding: 0.5rem 0;\n  font-family: $sans-serif-narrow;\n  font-size: $type-size-6;\n  font-weight: bold;\n  text-transform: uppercase;\n  border-bottom: 1px solid var(--global-border-color);\n}\n\n\n/*\n   Table of contents navigation\n   ========================================================================== */\n\n.toc {\n  font-family: $sans-serif-narrow;\n  color: var(--global-text-color-light);\n  text-transform: uppercase;\n  letter-spacing: 1px;\n  background-color: #fff;\n  border: 1px solid var(--global-border-color);\n  border-radius: $border-radius;\n  box-shadow: $box-shadow;\n\n  .nav__title {\n    color: #fff;\n    font-size: $type-size-6;\n    background: var(--global-base-color);\n    border-top-left-radius: $border-radius;\n    border-top-right-radius: $border-radius;\n  }\n}\n\n.toc__menu {\n  margin: 0;\n  padding: 0;\n  width: 100%;\n  list-style: none;\n  font-size: 0.8rem;\n\n  a {\n    display: block;\n    padding: 0.5rem 1rem;\n    color: var(--global-code-text-color);\n    font-size: $type-size-7;\n    font-weight: bold;\n    line-height: 1.5;\n    border-bottom: 1px solid var(--global-border-color);\n    text-decoration-line: none !important;\n\n    &:hover {\n      color: #000;\n      background: var(--global-link-color-hover);\n    }\n  }\n\n  > li:last-child {\n    a {\n      border-bottom: none;\n    }\n  }\n\n  li ul > li a {\n    padding-left: 2rem;\n    font-weight: normal;\n  }\n\n  /* hide sub sub links on small screens*/\n  li > ul li {\n    display: none;\n\n    @include breakpoint($medium) {\n      display: block;\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/layout/_notices.scss",
    "content": "/* ==========================================================================\n   NOTICE TEXT BLOCKS\n   ========================================================================== */\n\n/**\n *  Default Kramdown usage (no indents!):\n *  <div class=\"notice\" markdown=\"1\">\n *  #### Headline for the Notice\n *  Text for the notice\n *  </div>\n */\n\n@mixin notice($notice-color) {\n  margin: 2em 0 !important;  /* override*/\n  padding: 1em;\n  font-family: $global-font-family;\n  font-size: $type-size-6 !important;\n  text-indent: initial; /* override*/\n  background-color: mix(#fff, $notice-color, 90%);\n  border-radius: $border-radius;\n  box-shadow: 0 1px 1px rgba($notice-color, 0.25);\n  color: var(--global-code-text-color);\n\n  h4 {\n    margin-top: 0 !important; /* override*/\n    margin-bottom: 0.75em;\n  }\n\n  @at-root .page__content #{&} h4 {\n    /* using at-root to override .page-content h4 font size*/\n    margin-bottom: 0;\n    font-size: 1em;\n  }\n\n  p {\n    &:last-child {\n      margin-bottom: 0 !important; /* override*/\n    }\n  }\n\n  h4 + p {\n    /* remove space above paragraphs that appear directly after notice headline*/\n    margin-top: 0;\n    padding-top: 0;\n  }\n\n  a {\n    color: $notice-color;\n\n    &:hover {\n      color: mix(#000, $notice-color, 40%);\n    }\n  }\n\n  code {\n    background-color: mix(#fff, $notice-color, 95%)\n  }\n\n  ul {\n    &:last-child {\n      margin-bottom: 0; /* override*/\n    }\n  }\n}\n\n/* Default notice */\n\n.notice {\n  @include notice($notice-color);\n}\n\n/* Primary notice */\n\n.notice--primary {\n  @include notice($notice-color);\n}\n\n/* Info notice */\n\n.notice--info {\n  @include notice($info-color);\n}\n\n/* Warning notice */\n\n.notice--warning {\n  @include notice($warning-color);\n}\n\n/* Success notice */\n\n.notice--success {\n  @include notice($success-color);\n}\n\n/* Danger notice */\n\n.notice--danger {\n  @include notice($danger-color);\n}"
  },
  {
    "path": "_sass/layout/_page.scss",
    "content": "/* ==========================================================================\n   SINGLE PAGE/POST\n   ========================================================================== */\n\n#main {\n  @include container;\n  @include clearfix;\n  margin-top: 2em;\n  padding-left: 1em;\n  padding-right: 1em;\n  animation: intro 0.3s both;\n  animation-delay: 0.35s;\n\n  @include breakpoint($x-large) {\n    max-width: $x-large;\n  }\n}\n\n.page {\n  @include breakpoint($large) {\n    @include span(10 of 12 last);\n    @include prefix(0.5 of 12);\n    @include suffix(2 of 12);\n  }\n\n  .page__inner-wrap {\n    @include full();\n\n    .page__content,\n    .page__meta,\n    .page__share {\n      @include full();\n    }\n  }\n}\n\n.page__title {\n  margin-top: 0;\n  line-height: 1;\n\n  & + .page__meta {\n    margin-top: -0.5em;\n  }\n}\n\n.page__lead {\n  font-family: $global-font-family;\n  font-size: $type-size-4;\n}\n\n.page__content {\n\n  h2 {\n    padding-bottom: 0.5em;\n    border-bottom: 1px solid var(--global-border-color);\n  }\n\n  p, li, dl {\n    font-size: 1em;\n  }\n\n  /* paragraph indents */\n  p {\n    margin: 0 0 $indent-var;\n\n    /* sibling indentation*/\n    @if $paragraph-indent == true {\n      & + p {\n        text-indent: $indent-var;\n        margin-top: -($indent-var);\n      }\n    }\n  }\n\n  a {\n    text-decoration: underline;\n\n    &:hover {\n      text-decoration: underline;\n\n      img {\n        box-shadow: 0 0 10px rgba(#000, 0.25);\n      }\n    }\n  }\n\n  dt {\n    margin-top: 1em;\n    font-family: $sans-serif;\n    font-weight: bold;\n  }\n\n  dd {\n    margin-left: 1em;\n    font-family: $sans-serif;\n    font-size: $type-size-6;\n  }\n\n  .small {\n    font-size: $type-size-6;\n  }\n\n  /* blockquote citations */\n  blockquote + .small {\n    margin-top: -1.5em;\n    padding-left: 1.25rem;\n  }\n}\n\n.page__hero {\n  position: relative;\n  margin-bottom: 2em;\n  @include clearfix;\n  animation: intro 0.3s both;\n  animation-delay: 0.25s;\n\n  &--overlay {\n    position: relative;\n    margin-bottom: 2em;\n    padding: 3em 0;\n    @include clearfix;\n    background-size: cover;\n    background-repeat: no-repeat;\n    background-position: center;\n    animation: intro 0.3s both;\n    animation-delay: 0.25s;\n\n    a {\n      color: #fff;\n    }\n\n    .wrapper {\n      padding-left: 1em;\n      padding-right: 1em;\n\n      @include breakpoint($x-large) {\n        max-width: $x-large;\n      }\n    }\n\n    .page__title,\n    .page__meta,\n    .page__lead,\n    .btn {\n      color: #fff;\n      text-shadow: 1px 1px 4px rgba(#000, 0.5);\n    }\n\n    .page__lead {\n      max-width: $medium;\n    }\n\n    .page__title {\n      font-size: $type-size-2;\n\n      @include breakpoint($small) {\n        font-size: $type-size-1;\n      }\n    }\n  }\n}\n\n.page__hero-image {\n  width: 100%;\n  height: auto;\n  -ms-interpolation-mode: bicubic;\n}\n\n.page__hero-caption {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  margin: 0 auto;\n  padding: 2px 5px;\n  color: #fff;\n  font-family: $caption-font-family;\n  font-size: $type-size-7;\n  background: #000;\n  text-align: right;\n  z-index: 5;\n  opacity: 0.5;\n  border-radius: $border-radius 0 $border-radius 0;\n\n  @include breakpoint($large) {\n    padding: 5px 10px;\n  }\n\n  a {\n    color: #fff;\n    text-decoration: none;\n  }\n}\n\n/*\n   Social sharing\n   ========================================================================== */\n\n.page__share {\n  margin-top: 2em;\n  padding-top: 1em;\n  border-top: 1px solid var(--global-border-color);\n\n  @include breakpoint(max-width $small) {\n    .btn span {\n      border: 0;\n      clip: rect(0 0 0 0);\n      height: 1px;\n      margin: -1px;\n      overflow: hidden;\n      padding: 0;\n      position: absolute;\n      width: 1px;\n    }\n  }\n}\n\n.page__share-title {\n  margin-bottom: 10px;\n  font-size: $type-size-6;\n  text-transform: uppercase;\n}\n\n\n/*\n   Page meta\n   ========================================================================== */\n\n.page__meta {\n  margin-top: 2em;\n  color: var(--global-text-color-light);\n  font-family: $sans-serif;\n  font-size: $type-size-6;\n\n  p {\n    margin: 0;\n  }\n\n  a {\n    color: inherit;\n  }\n}\n\n.page__meta-title {\n  margin-bottom: 10px;\n  font-size: $type-size-6;\n  text-transform: uppercase;\n}\n\n\n/*\n   Page taxonomy\n   ========================================================================== */\n\n.page__taxonomy {\n  .sep {\n    display: none;\n  }\n\n  strong {\n    margin-right: 10px;\n  }\n}\n\n.page__taxonomy-item {\n  display: inline-block;\n  margin-right: 5px;\n  margin-bottom: 8px;\n  padding: 5px 10px;\n  text-decoration: none;\n  border: 1px solid var(--global-border-color);\n  border-radius: $border-radius;\n\n  &:hover {\n    text-decoration: none;\n    color: var(--global-link-color-hover);\n  }\n}\n\n\n/*\n   Comments\n   ========================================================================== */\n\n.page__comments {\n  @include full();\n}\n\n.page__comments-title {\n  margin-top: 2rem;\n  margin-bottom: 10px;\n  padding-top: 2rem;\n  font-size: $type-size-6;\n  border-top: 1px solid var(--global-border-color);\n  text-transform: uppercase;\n}\n\n.page__comments-form {\n  padding: 1em;\n  background: var(--global-border-color);\n  transition: $global-transition;\n\n  &.disabled {\n    input,\n    button,\n    textarea,\n    label {\n      pointer-events: none;\n      cursor: not-allowed;\n      filter: alpha(opacity=65);\n      box-shadow: none;\n      opacity: 0.65;\n    }\n  }\n}\n\n.comment {\n  @include clearfix();\n  margin: 1em 0;\n\n  &:not(:last-child) {\n    border-bottom: 1px solid var(--global-border-color);\n  }\n}\n\n.comment__avatar-wrapper {\n  float: left;\n  width: 60px;\n  height: 60px;\n\n  @include breakpoint($large) {\n    width: 100px;\n    height: 100px;\n  }\n}\n\n.comment__avatar {\n  width: 40px;\n  height: 40px;\n  border-radius: 50%;\n\n  @include breakpoint($large) {\n    width: 80px;\n    height: 80px;\n    padding: 5px;\n    border: 1px solid var(--global-border-color);\n  }\n}\n\n.comment__content-wrapper {\n  float: right;\n  width: calc(100% - 60px);\n\n  @include breakpoint($large) {\n    width: calc(100% - 100px);\n  }\n}\n\n.comment__author {\n  margin: 0;\n\n  a {\n    text-decoration: none;\n  }\n}\n\n.comment__date {\n  @extend .page__meta;\n  margin: 0;\n\n  a {\n    text-decoration: none;\n  }\n}\n\n\n/*\n   Related\n   ========================================================================== */\n\n.page__related {\n  margin-top: 2em;\n  padding-top: 1em;\n  border-top: 1px solid var(--global-border-color);\n  @include clearfix();\n  float: left;\n\n  @include breakpoint($large) {\n    @include pre(2.5 of 12);\n  }\n\n  a {\n    color: inherit;\n    text-decoration: none;\n  }\n}\n\n.page__related-title {\n  margin-bottom: 10px;\n  font-size: $type-size-6;\n  text-transform: uppercase;\n}\n"
  },
  {
    "path": "_sass/layout/_reset.scss",
    "content": "/* ==========================================================================\n   STYLE RESETS\n   ========================================================================== */\n\n@include border-box-sizing;\n\nhtml {\n  /* apply a natural box layout model to all elements */\n  box-sizing: border-box;\n  background-color: var(--global-bg-color);\n  font-size: 16px;\n\n  @include breakpoint($medium) {\n    font-size: 18px;\n  }\n\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n}\n\n/* Remove margin */\n\nbody { margin: 0; }\n\n/* Selected elements */\n\n::-moz-selection {\n  color: #fff;\n  background: #000;\n}\n\n::selection {\n  color: #fff;\n  background: #000;\n}\n\n/* Display HTML5 elements in IE6-9 and FF3 */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection {\n  display: block;\n}\n\n/* Display block in IE6-9 and FF3 */\n\naudio,\ncanvas,\nvideo {\n  display: inline-block;\n  *display: inline;\n  *zoom: 1;\n}\n\n/* Prevents modern browsers from displaying 'audio' without controls */\n\naudio:not([controls]) {\n  display: none;\n}\n\na {\n  color: var(--global-link-color);\n}\n\n/* Apply focus state */\n\na:focus {\n  @extend %tab-focus;\n}\n\n/* Remove outline from links */\n\na:hover,\na:active {\n  outline: 0;\n}\n\n/* Prevent sub and sup affecting line-height in all browsers */\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsup {\n  top: -0.5em;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\n/* img border in anchor's and image quality */\n\nimg {\n  /* Responsive images (ensure images don't scale beyond their parents) */\n  max-width: 100%; /* part 1: Set a maximum relative to the parent*/\n  width: auto\\9; /* IE7-8 need help adjusting responsive images*/\n  height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/\n\n  vertical-align: middle;\n  border: 0;\n  -ms-interpolation-mode: bicubic;\n}\n\n/* Prevent max-width from affecting Google Maps */\n\n#map_canvas img,\n.google-maps img {\n  max-width: none;\n}\n\n/* Consistent form font size in all browsers, margin changes, misc */\n\nbutton,\ninput,\nselect,\ntextarea {\n  margin: 0;\n  font-size: 100%;\n  vertical-align: middle;\n}\n\nbutton,\ninput {\n  *overflow: visible; /* inner spacing ie IE6/7*/\n  line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/\n}\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/\n  padding: 0;\n  border: 0;\n}\n\nbutton,\nhtml input[type=\"button\"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n    -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/\n    cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/\n}\n\nlabel,\nselect,\nbutton,\ninput[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"],\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n    cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/\n}\n\ninput[type=\"search\"] { /* Appearance in Safari/Chrome*/\n  box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button {\n  -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/\n}\n\ntextarea {\n  overflow: auto; /* remove vertical scrollbar in IE6-9*/\n  vertical-align: top; /* readability and alignment cross-browser*/\n}"
  },
  {
    "path": "_sass/layout/_sidebar.scss",
    "content": "/* ==========================================================================\n   SIDEBAR\n   ========================================================================== */\n\n/*\n   Default\n   ========================================================================== */\n\n.sidebar {\n  -webkit-transform: translate3d(0, 0 , 0);\n          transform: translate3d(0, 0 , 0);\n\n  @include clearfix();\n  margin-bottom: 1em;\n\n  @media (orientation: portrait) {\n    margin-top: 1em;\n  }\n\n  @media screen and (min-width: $sidebar-screen-min-width) {\n    height: 100vh;\n    overflow-y: auto;               // Add scrollbar if the sidebar is too long\n    position: fixed;\n    padding-top: $masthead-height;\n  }\n\n  @include breakpoint($large) {\n    @include span(2 of 12);\n    opacity: 1;\n    -webkit-transition: opacity 0.2s ease-in-out;\n            transition: opacity 0.2s ease-in-out;\n\n    &:hover {\n      opacity: 1;\n    }\n  }\n\n  @include breakpoint($x-large) {\n    max-width: $sidebar-link-max-width;\n    padding-right: 0;\n  }\n\n  h2, h3, h4, h5, h6 {\n    margin-bottom: 0;\n    font-family: $sans-serif-narrow;\n  }\n\n  h3, h4 {\n    font-size: $type-size-5;\n  }\n\n  p, li {\n    font-family: $sans-serif;\n    font-size: $type-size-6;\n    line-height: 1.5;\n  }\n\n  img {\n    width: 100%;\n  }\n}\n\n.sidebar__right {\n  margin-bottom: 1em;\n\n  @include breakpoint($large) {\n    position: relative;\n    float: right;\n    width: $right-sidebar-width-narrow;\n    margin-left: span(0.5 of 12);\n    z-index: 10;\n  }\n\n  @include breakpoint($x-large) {\n    width: $right-sidebar-width;\n  }\n}\n\n\n/*\n   Table of contents\n   ========================================================================== */\n\n.toc {\n  background-color: var(--global-toc-bg-color);\n  border: 1px solid var(--global-border-color);\n  border-radius: $border-radius;\n  box-shadow: $box-shadow;\n  padding: 1em;\n\n  .nav__title {\n    color: var(--global-text-color);\n    font-size: $type-size-6;\n    background: transparent;\n    border: 0;\n    padding: 0;\n  }\n\n  .toc__menu {\n    margin: 0;\n    padding: 0;\n    width: 100%;\n    list-style: none;\n    font-size: $type-size-6;\n\n    a {\n      display: block;\n      padding: 0.25rem 0;\n      color: var(--global-text-color);\n      font-size: $type-size-7;\n      font-weight: normal;\n      line-height: 1.5;\n      border-bottom: 0;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    > li > a {\n      font-weight: bold;\n    }\n\n    li ul > li a {\n      padding-left: 1rem;\n      font-weight: normal;\n    }\n\n    li ul li ul > li a {\n      padding-left: 2rem;\n    }\n\n    li ul li ul li ul > li a {\n      padding-left: 3rem;\n    }\n  }\n}\n\n/*\n   Author profile and links\n   ========================================================================== */\n\n.author__avatar {\n  display: table-cell;\n  vertical-align: top;\n  width: 36px;\n  // set width only, for non-square avatars\n  // height: 36px;\n\n  @include breakpoint($large) {\n    display: block;\n    width: auto;\n    height: auto;\n  }\n\n  img {\n    max-width: 175px;\n    border-radius: 50%;\n\n    @include breakpoint($large) {\n      padding: 5px;\n      border: 1px solid var(--global-border-color);\n    }\n  }\n}\n\n.author__content {\n  display: table-cell;\n  vertical-align: top;\n  padding-left: 15px;\n  padding-right: 25px;\n  line-height: 1;\n\n  @include breakpoint($large) {\n    display: block;\n    width: 100%;\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n\n.author__name {\n  margin: 0;\n\n  @include breakpoint($large) {\n    margin-top: 10px;\n    margin-bottom: 10px;\n  }\n}\n.sidebar .author__name {\n  font-family: $sans-serif;\n  font-size: $type-size-5;\n}\n\n.sidebar .author__desktop {\n  display: none;\n  @media screen and (min-width: 1024px) {\n    display: block;\n  }\n}\n\n.author__pronouns {\n  margin: 0;\n\n  @include breakpoint($large) {\n    margin-top: 10px;\n    margin-bottom: 10px;\n  }\n}\n\n.author__bio {\n  margin: 0;\n\n  @include breakpoint($large) {\n    margin-top: 10px;\n    margin-bottom: 20px;\n  }\n}\n\n.author__urls-wrapper {\n  position: relative;\n  display: table-cell;\n  vertical-align: middle;\n  font-family: $sans-serif;\n  z-index: 10;\n  position: relative;\n  cursor: pointer;\n\n  li:last-child {\n    a {\n      margin-bottom: 0;\n    }\n  }\n\n  @include breakpoint($large) {\n    display: block;\n  }\n\n  button {\n    margin-bottom: 0;\n\n    @include breakpoint($large) {\n      display: none;\n    }\n  }\n}\n\n.author__urls {\n  display: none;\n  position: absolute;\n  right: 0;\n  margin-top: 15px;\n  padding: 10px;\n  list-style-type: none;\n  border: 1px solid var(--global-border-color);\n  border-radius: $border-radius;\n  background: var(--global-bg-color);\n  z-index: -1;\n  box-shadow: 0 0 10px rgba(#000, 0.25);\n  cursor: default;\n\n  @include breakpoint($large) {\n    display: block;\n    position: relative;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    background: transparent;\n    box-shadow: none;\n  }\n\n  &:before {\n    display: block;\n    content: \"\";\n    position: absolute;\n    top: -11px;\n    left: calc(50% - 10px);\n    width: 0;\n    border-style: solid;\n    border-width: 0 10px 10px;\n    border-color: var(--global-border-color) transparent;\n    z-index: 0;\n\n    @include breakpoint($large) {\n      display: none;\n    }\n  }\n\n  &:after {\n    display: block;\n    content: \"\";\n    position: absolute;\n    top: -10px;\n    left: calc(50% - 10px);\n    width: 0;\n    border-style: solid;\n    border-width: 0 10px 10px;\n    border-color: #fff transparent;\n    z-index: 1;\n\n    @include breakpoint($large) {\n      display: none;\n    }\n  }\n\n  li {\n    white-space: nowrap;\n  }\n\n  a {\n    display: block;\n    margin-bottom: 5px;\n    padding-right: 5px;\n    padding-top: 2px;\n    padding-bottom: 2px;\n    color: inherit;\n    font-size: $type-size-5;\n    text-decoration: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/layout/_tables.scss",
    "content": "/* ==========================================================================\n   TABLES\n   ========================================================================== */\n\ntable {\n  margin-bottom: 1em;\n  width: 100%;\n  font-family: $global-font-family;\n  font-size: $type-size-6;\n  border-collapse: collapse;\n  border: 1px solid var(--global-border-color);\n\n  & + table {\n    margin-top: 1em;\n  }\n}\n\nthead {\n  background-color: var(--global-border-color);\n  border-bottom: 1px solid var(--global-border-color);\n}\n\nth {\n  padding: 0.5em;\n  font-weight: bold;\n  text-align: left;\n  border-right: 1px solid var(--global-border-color);\n}\n\ntd {\n  padding: 0.5em;\n  border-bottom: 1px solid var(--global-border-color);\n  border-right: 1px solid var(--global-border-color);\n}\n\ntr, td, th {\n  vertical-align: middle;\n}"
  },
  {
    "path": "_sass/theme/_air_dark.scss",
    "content": "/* ==========================================================================\n    AIR THEME - DARK VERSION\n    ========================================================================== */\n\n/* Color codes used for the theme */\n$primary-color              : #00adb5;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#000, $primary-color, 50%);\n\n$background                 : #252a34;\n$background-light           : mix(#fff, $background, 20%);\n$background-lighter         : mix(#fff, $background, 90%);\n$text                       : #eaeaea;\n$link                       : mix($primary-color, $text, 40%);\n$link-dark                  : mix(#000, $link, 25%);\n$link-light                 : mix(#fff, $link, 25%);\n$footer                     : mix(#000, $background, 30%);\n\n/* Color codes used for the site */\n$danger-color               : #ee5f5b;\n$info-color                 : #2f7f93;\n$notice-color               : #7a8288;\n$success-color              : #62c462;\n$warning-color              : #f89406;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Dark theme for the site */\nhtml[data-theme=\"dark\"] {\n    --global-base-color                 : #{$primary-color};\n    --global-bg-color                   : #{$background};\n    --global-footer-bg-color            : #{$footer};\n    --global-border-color               : #{$light-primary-color};\n    --global-dark-border-color          : #{$background-light};\n    --global-code-background-color      : #fafafa;\n    --global-code-text-color            : #{$darker-primary-color};\n    --global-fig-caption-color          : #{$light-primary-color};\n    --global-link-color                 : #{$link};\n    --global-link-color-hover           : #{$link-dark};\n    --global-link-color-visited         : #{$link-light};\n    --global-masthead-link-color        : #{$text};\n    --global-masthead-link-color-hover  : #{$primary-color};\n    --global-text-color                 : #{$text};\n    --global-text-color-light           : #{$light-primary-color};\n    --global-thead-color                : #{$background-lighter};\n}\n"
  },
  {
    "path": "_sass/theme/_air_light.scss",
    "content": "/* ==========================================================================\n    AIR THEME - LIGHT VERSION\n    ========================================================================== */\n\n/* Color codes used for the theme */\n$primary-color              : #0092ca;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#000, $primary-color, 50%);\n\n$background                 : #eeeeee;\n$background-light           : mix(#fff, $background, 20%);\n$background-lighter         : mix(#fff, $background, 90%);\n$text                       : #222831;\n$link                       : #393e46;\n$link-dark                  : mix(#000, $link, 25%);\n$link-light                 : mix(#fff, $link, 25%);\n$footer                     : $primary-color;\n\n/* Color codes used for the site */\n$danger-color               : #ee5f5b;\n$info-color                 : #2f7f93;\n$notice-color               : #7a8288;\n$success-color              : #62c462;\n$warning-color              : #f89406;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Light theme for the site */\n:root {\n    --global-base-color                 : #{$primary-color};\n    --global-bg-color                   : #{$background};\n    --global-footer-bg-color            : #{$footer};\n    --global-border-color               : #{$light-primary-color};\n    --global-dark-border-color          : #{$background-light};\n    --global-code-background-color      : #fafafa;\n    --global-code-text-color            : #{$darker-primary-color};\n    --global-fig-caption-color          : #{$light-primary-color};\n    --global-link-color                 : #{$link};\n    --global-link-color-hover           : #{$link-dark};\n    --global-link-color-visited         : #{$link-light};\n    --global-masthead-link-color        : #{$text};\n    --global-masthead-link-color-hover  : #{$primary-color};\n    --global-text-color                 : #{$text};\n    --global-text-color-light           : #{$light-primary-color};\n    --global-thead-color                : #{$background-lighter};\n}\n"
  },
  {
    "path": "_sass/theme/_contrast_dark.scss",
    "content": "/* ==========================================================================\n   CONTRAST THEME - DARK VERSION\n   ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #ff6c60;\n$background                 : #000000;\n$background-light           : #1a1a1a;\n$background-lighter         : #2a2a2a;\n$text                      : #ffffff;\n$text-muted                : #d9d9d9;\n$link                      : #96cbfe;\n$link-dark                 : #c6c5fe;\n$link-light                : #ff73fd;\n$footer                    : #000000;\n$border                    : #4d4d4d;\n$border-light              : #666666;\n$selection-bg              : #264f78;\n$selection-text            : #ffffff;\n\n/* Color codes used for the site */\n$danger-color               : #ff6c60;\n$info-color                 : #96cbfe;\n$notice-color               : #ffffff;\n$success-color              : #a8ff60;\n$warning-color              : #e9c062;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Dark theme for the site */\nhtml[data-theme=\"dark\"] {\n  --global-base-color                 : #{$primary-color};\n  --global-bg-color                   : #{$background};\n  --global-footer-bg-color            : #{$footer};\n  --global-border-color               : #{$border};\n  --global-dark-border-color          : #{$border-light};\n  --global-code-background-color      : #{$background-light};\n  --global-code-text-color            : #{$text-muted};\n  --global-fig-caption-color          : #{$text-muted};\n  --global-link-color                 : #{$link};\n  --global-link-color-hover           : #{$link-dark};\n  --global-link-color-visited         : #{$link-light};\n  --global-masthead-link-color        : #{$text};\n  --global-masthead-link-color-hover  : #{$primary-color};\n  --global-text-color                 : #{$text};\n  --global-text-color-light           : #{$text-muted};\n  --global-thead-color                : #{$background-lighter};\n  --global-toc-bg-color               : #{$background-light};\n  --global-selection-bg-color         : #{$selection-bg};\n  --global-selection-text-color       : #{$selection-text};\n}\n\n/* Text selection styling for dark theme */\nhtml[data-theme=\"dark\"] ::selection {\n  background-color: var(--global-selection-bg-color);\n  color: var(--global-selection-text-color);\n}\n\nhtml[data-theme=\"dark\"] ::-moz-selection {\n  background-color: var(--global-selection-bg-color);\n  color: var(--global-selection-text-color);\n}\n\n/* Override notice colors for high contrast in dark mode */\nhtml[data-theme=\"dark\"] {\n  .page__content {\n    .notice,\n    .notice--primary,\n    .notice--info,\n    .notice--warning,\n    .notice--success,\n    .notice {\n      background-color: mix($background, $notice-color, 85%);\n      color: #{$text};\n      border-color: #{$text};\n    }\n\n    .notice--primary {\n      background-color: mix($background, $notice-color, 85%);\n      color: #{$text};\n      border-color: #{$text};\n    }\n\n    .notice--info {\n      background-color: mix($background, $info-color, 85%);\n      color: #{$text};\n      border-color: #{$text};\n    }\n\n    .notice--warning {\n      background-color: mix($background, $warning-color, 85%);\n      color: #{$text};\n      border-color: #{$text};\n    }\n\n    .notice--success {\n      background-color: mix($background, $success-color, 85%);\n      color: #{$text};\n      border-color: #{$text};\n    }\n\n    .notice--danger {\n      background-color: mix($background, $danger-color, 85%);      \n      color: #{$text};\n      border-color: #{$text};\n    }\n  }\n\n  .page__footer {\n    color: #{$text};\n  }\n}\n"
  },
  {
    "path": "_sass/theme/_contrast_light.scss",
    "content": "/* ==========================================================================\n   CONTRAST THEME - LIGHT VERSION\n   ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #b60000;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#fff, $primary-color, 50%);\n$lighter-primary-color      : mix(#fff, $primary-color, 90%);\n$background                 : #ffffff;\n$background-light           : #fafafa;\n$background-lighter        : #ffffff;\n$text                      : #000000;\n$text-muted                : #404040;\n$link                      : #0000ff;\n$link-dark                 : #0000cc;\n$link-light                : #3333ff;\n$footer                    : #ffffff;\n$border                    : #c0c0c0;\n$border-dark               : #808080;\n$selection-bg              : #b3d4fc;\n$selection-text            : #000000;\n\n/* Color codes used for the site */\n$danger-color               : #ff0000;\n$info-color                 : #0000ff;\n$notice-color               : #000000;\n$success-color              : #008000;\n$warning-color              : #ff8800;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Light theme for the site */\n:root {\n  --global-base-color                 : #{$primary-color};\n  --global-bg-color                   : #{$background};\n  --global-footer-bg-color            : #{$footer};\n  --global-border-color               : #{$border};\n  --global-dark-border-color          : #{$border-dark};\n  --global-code-background-color      : #{$background-light};\n  --global-code-text-color            : #{$text};\n  --global-fig-caption-color          : #{$text-muted};\n  --global-link-color                 : #{$link};\n  --global-link-color-hover           : #{$link-dark};\n  --global-link-color-visited         : #{$primary-color};\n  --global-masthead-link-color        : #{$text};\n  --global-masthead-link-color-hover  : #{$primary-color};\n  --global-text-color                 : #{$text};\n  --global-text-color-light           : #{$text-muted};\n  --global-thead-color                : #{$border};\n  --global-toc-bg-color               : #{$background-light};\n  --global-selection-bg-color         : #{$selection-bg};\n  --global-selection-text-color       : #{$selection-text};\n}\n\n/* Text selection styling for light theme */\n::selection {\n  background-color: var(--global-selection-bg-color);\n  color: var(--global-selection-text-color);\n}\n\n::-moz-selection {\n  background-color: var(--global-selection-bg-color);\n  color: var(--global-selection-text-color);\n}\n\n/* Override notice colors for high contrast */\n.page__content {\n  .notice,\n  .notice--primary,\n  .notice--info,\n  .notice--warning,\n  .notice--success,\n  .notice--danger {\n    color: #{$text};\n    border-color: #{$text};\n  }\n}\n\nhtml:not([data-theme=\"dark\"]) footer {\n  color: #000000;\n}\n\n// Do not change the color of the social icons in the feed icons\n.page__footer-follow .social-icons i:not(.fa-rss-square),\n.page__footer-follow .social-icons .svg-inline--fa:not(.fa-rss-square) {\n  color: inherit;\n}\n"
  },
  {
    "path": "_sass/theme/_default_dark.scss",
    "content": "/* ==========================================================================\n    DEFAULT THEME - DARK VERSION\n    ========================================================================== */\n\n/* Color codes used for the theme */\n$primary-color              : #0ea1c5;\n$gray                       : #7a8288;\n$dark-gray                  : mix(#000, $gray, 40%);\n$darker-gray                : mix(#000, $gray, 60%);\n$light-gray                 : mix(#fff, $gray, 50%);\n\n$background                 : #474747;\n$background-light           : mix(#fff, $background, 80%);\n$background-lighter         : mix(#fff, $background, 90%);\n$text                       : #ffffff;\n$link                       : #0ea1c5;\n$link-dark                  : mix(#000, $link, 25%);\n$link-light                 : mix(#fff, $link, 25%);\n\n/* Color codes used for the site */\n$danger-color               : #ee5f5b;\n$info-color                 : #2f7f93;\n$notice-color               : #7a8288;\n$success-color              : #62c462;\n$warning-color              : #f89406;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Dark theme for the site */\nhtml[data-theme=\"dark\"] {\n    --global-base-color                 : #{$primary-color};\n    --global-bg-color                   : #{$background};\n    --global-footer-bg-color            : #{$background};\n    --global-border-color               : #{$light-gray};\n    --global-dark-border-color          : #{$background-light};\n    --global-code-background-color      : #fafafa;\n    --global-code-text-color            : #{$darker-gray};\n    --global-fig-caption-color          : #{$light-gray};\n    --global-link-color                 : #{$link};\n    --global-link-color-hover           : #{$link-dark};\n    --global-link-color-visited         : #{$link-light};\n    --global-masthead-link-color        : #{$text};\n    --global-masthead-link-color-hover  : #{$primary-color};\n    --global-text-color                 : #{$text};\n    --global-text-color-light           : #f3f3f3;\n    --global-thead-color                : #{$background-lighter};\n}\n\n"
  },
  {
    "path": "_sass/theme/_default_light.scss",
    "content": "/* ==========================================================================\n    DEFAULT THEME - LIGHT VERSION\n    ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #2f7f93;\n$gray                       : #7a8288;\n$dark-gray                  : mix(#000, $gray, 40%);\n$darker-gray                : mix(#000, $gray, 60%);\n$light-gray                 : mix(#fff, $gray, 50%);\n$lighter-gray               : mix(#fff, $gray, 90%);\n\n/* Color codes used for the site */\n$danger-color               : #ee5f5b;\n$info-color                 : #2f7f93;\n$notice-color               : #7a8288;\n$success-color              : #62c462;\n$warning-color              : #f89406;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Default light theme for the site */\n:root {\n    --global-base-color                 : #{$primary-color};\n    --global-bg-color                   : #fff;\n    --global-footer-bg-color            : #f2f3f3;\n    --global-border-color               : #{$lighter-gray};\n    --global-dark-border-color          : #bdc1c4;\n    --global-code-background-color      : #fafafa;\n    --global-code-text-color            : #{$darker-gray};\n    --global-fig-caption-color          : mix(#fff,  #{$dark-gray}, 25%);\n    --global-link-color                 : #52adc8;\n    --global-link-color-hover           : mix(#000, #2f7f93, 25%);\n    --global-link-color-visited         : mix(#fff, #2f7f93, 25%);  \n    --global-masthead-link-color        : #{$dark-gray};\n    --global-masthead-link-color-hover  : mix(#000, #{$gray}, 25%);    \n    --global-text-color                 : #{$dark-gray};\n    --global-text-color-light           : #{$light-gray};\n    --global-thead-color                : #{$lighter-gray};\n}\n\n"
  },
  {
    "path": "_sass/theme/_dirt_dark.scss",
    "content": "/* ==========================================================================\n   DIRT THEME - DARK VERSION\n   ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #b49368;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#fff, $primary-color, 50%);\n$lighter-primary-color      : mix(#fff, $primary-color, 90%);\n$background                 : #231e18;\n$background-light           : #302b25;\n$background-lighter         : #48413a;\n$text                      : #e4d4c8;\n$text-muted                : #cabcb1;\n$link                      : #d7c8bc;\n$link-dark                 : #e4d4c8;\n$link-light                : #b4a490;\n$footer                    : #302b25;\n$border                    : #48413a;\n$border-light              : #5c5346;\n\n/* Color codes used for the site */\n$danger-color               : #d35c5c;\n$info-color                 : #88a4d3;\n$notice-color               : #ca7f32;\n$success-color              : #b7ba53;\n$warning-color              : #e0ac16;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Dark theme for the site */\nhtml[data-theme=\"dark\"] {\n  --global-base-color                 : #{$primary-color};\n  --global-bg-color                   : #{$background};\n  --global-footer-bg-color            : #{$footer};\n  --global-border-color               : #{$border};\n  --global-dark-border-color          : #{$border-light};\n  --global-code-background-color      : #{$background-light};\n  --global-code-text-color            : #{$text-muted};\n  --global-fig-caption-color          : #{$text-muted};\n  --global-link-color                 : #{$link};\n  --global-link-color-hover           : #{$link-dark};\n  --global-link-color-visited         : #{$link-light};\n  --global-masthead-link-color        : #{$text};\n  --global-masthead-link-color-hover  : #{$primary-color};\n  --global-text-color                 : #{$text};\n  --global-text-color-light           : #{$text-muted};\n  --global-thead-color                : #{$background-lighter};\n}\n\n/* Footer styling for dark mode */\nhtml[data-theme=\"dark\"] {\n  footer {\n    color: #{$text};\n  }}\n"
  },
  {
    "path": "_sass/theme/_dirt_light.scss",
    "content": "$primary-color              : #343434;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#fff, $primary-color, 50%);\n$lighter-primary-color      : mix(#fff, $primary-color, 90%);\n$background                 : #f3f3f3;\n$background-light           : #fafafa;\n$background-lighter        : #ffffff;\n$text                      : #343434;\n$text-muted                : #8e8b82;\n$link                      : #343434;\n$link-dark                 : mix(#000, $link, 25%);\n$link-light                : mix(#fff, $link, 25%);\n$footer                    : #e9dcbe;\n$border                    : #e9dcbe;\n$border-light              : mix(#fff, $border, 50%);\n\n/* Color codes used for the site */\n$danger-color               : #d35c5c;\n$info-color                 : #88a4d3;\n$notice-color               : #b49368;\n$success-color              : #6eb958;\n$warning-color              : #e0ac16;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Light theme for the site */\n:root {\n  --global-base-color                 : #{$primary-color};\n  --global-bg-color                   : #{$background};\n  --global-footer-bg-color            : #{$footer};\n  --global-border-color               : #{$border};\n  --global-dark-border-color          : #{$text-muted};\n  --global-code-background-color      : #{$background-lighter};\n  --global-code-text-color            : #{$darker-primary-color};\n  --global-fig-caption-color          : #{$text-muted};\n  --global-link-color                 : #{$link};\n  --global-link-color-hover           : #{$link-dark};\n  --global-link-color-visited         : #{$link-light};\n  --global-masthead-link-color        : #{$text};\n  --global-masthead-link-color-hover  : #{$text-muted};\n  --global-text-color                 : #{$text};\n  --global-text-color-light           : #{$text-muted};\n  --global-thead-color                : #{$border-light};\n}\n\nfooter {\n  color: #{$text};\n}\n\n// Do not change the color of the social icons in the feed icons\n.page__footer-follow .social-icons i:not(.fa-rss-square),\n.page__footer-follow .social-icons .svg-inline--fa:not(.fa-rss-square) {\n  color: inherit;\n}"
  },
  {
    "path": "_sass/theme/_mint_dark.scss",
    "content": "/* ==========================================================================\n   MINT THEME - DARK VERSION\n   ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #30e3ca;\n$background                 : #1a2421;\n$background-light           : #243430;\n$background-lighter        : #2e443f;\n$text                      : #e8f5f3;\n$text-muted                : #b8d5d1;\n$link                      : #4effd9;\n$link-dark                 : #7cffdf;\n$link-light                : #2bd4bd;\n$footer                    : #0f1614;\n$border                    : #2e443f;\n$border-light              : #3d5950;\n\n/* Color codes used for the site */\n$danger-color               : #e74c3c;\n$info-color                 : #4effd9;\n$notice-color               : #30e3ca;\n$success-color              : #2ecc71;\n$warning-color              : #f39c12;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Dark theme for the site */\nhtml[data-theme=\"dark\"] {\n  --global-base-color                 : #{$primary-color};\n  --global-bg-color                   : #{$background};\n  --global-footer-bg-color            : #{$footer};\n  --global-border-color               : #{$border};\n  --global-dark-border-color          : #{$border-light};\n  --global-code-background-color      : #{$background-light};\n  --global-code-text-color            : #{$text-muted};\n  --global-fig-caption-color          : #{$text-muted};\n  --global-link-color                 : #{$link};\n  --global-link-color-hover           : #{$link-dark};\n  --global-link-color-visited         : #{$link-light};\n  --global-masthead-link-color        : #{$text};\n  --global-masthead-link-color-hover  : #{$primary-color};\n  --global-text-color                 : #{$text};\n  --global-text-color-light           : #{$text-muted};\n  --global-thead-color                : #{$background-lighter};\n\n}\n\n/* Footer styling for dark mode */\nhtml[data-theme=\"dark\"] {\n  footer {\n    color: #{$text};\n  }\n}\n"
  },
  {
    "path": "_sass/theme/_mint_light.scss",
    "content": "/* ==========================================================================\n  MINT THEME - LIGHT VERSION\n  ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #11999e;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#fff, $primary-color, 50%);\n$lighter-primary-color      : mix(#fff, $primary-color, 90%);\n$background                 : #f3f6f6;\n$background-light           : #ffffff;\n$background-lighter        : #fafbfb;\n$text                      : #40514e;\n$text-muted                : #5c6d6a;\n$link                      : #11999e;\n$link-dark                 : mix(#000, $link, 25%);\n$link-light                : mix(#fff, $link, 25%);\n$footer                    : #30e3ca;\n$border                    : mix(#fff, #40514e, 75%);\n$border-dark               : mix(#fff, #40514e, 60%);\n\n/* Color codes used for the site */\n$danger-color               : #e74c3c;\n$info-color                 : #11999e;\n$notice-color               : #30e3ca;\n$success-color              : #2ecc71;\n$warning-color              : #f39c12;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Light theme for the site */\n:root {\n  --global-base-color                 : #{$primary-color};\n  --global-bg-color                   : #{$background};\n  --global-footer-bg-color            : #{$footer};\n  --global-border-color               : #{$border};\n  --global-dark-border-color          : #{$border-dark};\n  --global-code-background-color      : #{$background-light};\n  --global-code-text-color            : #{$darker-primary-color};\n  --global-fig-caption-color          : #{$text-muted};\n  --global-link-color                 : #{$link};\n  --global-link-color-hover           : #{$link-dark};\n  --global-link-color-visited         : #{$link-light};\n  --global-masthead-link-color        : #{$text};\n  --global-masthead-link-color-hover  : #{$primary-color};\n  --global-text-color                 : #{$text};\n  --global-text-color-light           : #{$text-muted};\n  --global-thead-color                : #{$lighter-primary-color};\n\n}\n\nfooter {\n  color: #{$text};\n}\n\n\n"
  },
  {
    "path": "_sass/theme/_sunrise_dark.scss",
    "content": "/* ==========================================================================\n    SUNRISE THEME - DARK VERSION\n    ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #ff8793;\n$dark-primary-color         : #ff5568;\n$darker-primary-color       : #d4741f;\n$light-primary-color        : #ffb3bb;\n$lighter-primary-color      : #ffd4d9;\n$background                 : #1a0f0a;\n$background-light           : #2d1912;\n$background-lighter        : #3d2a1a;\n$text                      : #e8d5b7;\n$text-muted                : #b8a590;\n$link                      : #ff8793;\n$link-hover                : #ffb3bb;\n$link-visited              : #ff5568;\n$footer                    : #2d1912;\n$border                    : #3d2a1a;\n$border-dark               : #5a3f28;\n$code-bg                   : #0d0806;\n$code-bg-dark              : #0f0907;\n\n/* Color codes used for the site */\n$danger-color               : #ff6b7f;\n$info-color                 : #52adc8;\n$notice-color               : #f9b248;\n$success-color              : #78c978;\n$warning-color              : #f9b248;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(255, 255, 255, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Sunset dark theme CSS variables */\nhtml[data-theme=\"dark\"] {\n    --global-base-color                 : #{$primary-color};\n    --global-bg-color                   : #{$background};\n    --global-footer-bg-color            : #{$footer};\n    --global-border-color               : #{$light-primary-color};\n    --global-dark-border-color          : #{$background-light};\n    --global-code-background-color      : #{$code-bg};\n    --global-code-text-color            : #{$text};\n    --global-fig-caption-color          : #{$text-muted};\n    --global-link-color                 : #{$link};\n    --global-link-color-hover           : #{$link-hover};\n    --global-link-color-visited         : #{$link-visited};\n    --global-masthead-link-color        : #{$text};\n    --global-masthead-link-color-hover  : #{$link-hover};\n    --global-text-color                 : #{$text};\n    --global-text-color-light           : #{$text-muted};\n    --global-thead-color                : #{$background-lighter};\n}\n"
  },
  {
    "path": "_sass/theme/_sunrise_light.scss",
    "content": "/* ==========================================================================\n   SUNRISE THEME - LIGHT VERSION\n   ========================================================================== */\n/* Color codes used for the theme */\n$primary-color              : #fc3a52;\n$dark-primary-color         : mix(#000, $primary-color, 40%);\n$darker-primary-color       : mix(#000, $primary-color, 60%);\n$light-primary-color        : mix(#fff, $primary-color, 50%);\n$lighter-primary-color      : mix(#fff, $primary-color, 90%);\n$background                 : #e8d5b7;\n$background-light           : mix(#fff, $background, 20%);\n$background-lighter        : #ffffff;\n$text                      : #000000;\n$text-muted                : #0e2431;\n$link                      : mix(#000, $primary-color, 10%);\n$link-dark                 : mix(#000, $link, 25%);\n$link-light                : mix(#fff, $link, 25%);\n$footer                    : #f9b248;\n$border                    : mix(#000, $background, 20%);\n$border-dark               : mix(#000, $background, 30%);\n\n/* Color codes used for the site */\n$danger-color               : #cc6666;\n$info-color                 : #81a2be;\n$notice-color               : #de935f;\n$success-color              : #b5bd68;\n$warning-color              : #f0c674;\n\n/* Other basic settings for the template */\n$border-radius              : 4px;\n$box-shadow                 : 0 1px 1px rgba(0, 0, 0, 0.125);\n$global-transition          : all 0.2s ease-in-out;\n$masthead-height            : 70px;\n$navicon-width              : 28px;\n$navicon-height             : 4px;\n$sidebar-link-max-width     : 250px;\n$sidebar-screen-min-width   : 1024px;\n\n/* Light theme for the site */\n:root {\n    --global-base-color                 : #{$primary-color};\n    --global-bg-color                   : #{$background};\n    --global-footer-bg-color            : #{$footer};\n    --global-border-color               : #{$border};\n    --global-dark-border-color          : #{$border-dark};\n    --global-code-background-color      : #{$background-light};\n    --global-code-text-color            : #{$text-muted};\n    --global-fig-caption-color          : #{$text-muted};\n    --global-link-color                 : #{$link};\n    --global-link-color-hover           : #{$link-light};\n    --global-link-color-visited         : #{$link-dark};\n    --global-masthead-link-color        : #{$text};\n    --global-masthead-link-color-hover  : #{$text-muted};\n    --global-text-color                 : #{$text};\n    --global-text-color-light           : #{$text-muted};\n    --global-thead-color                : #{$background-light};\n}\n\n.page__footer-follow .social-icons i,\n.page__footer-follow .social-icons .svg-inline--fa {\n    color: inherit;\n}\n\n"
  },
  {
    "path": "_sass/vendor/breakpoint/_breakpoint.scss",
    "content": "//////////////////////////////\n// Default Variables\n//////////////////////////////\n$Breakpoint-Settings: (\n  'default media': all,\n  'default feature': min-width,\n  'default pair': width,\n\n  'force all media type': false,\n  'to ems': false,\n  'transform resolutions': true,\n\n  'no queries': false,\n  'no query fallbacks': false,\n\n  'base font size': 16px,\n\n  'legacy syntax': false\n);\n\n$breakpoint: () !default;\n\n//////////////////////////////\n// Imports\n//////////////////////////////\n@import \"settings\";\n@import \"context\";\n@import \"helpers\";\n@import \"parsers\";\n@import \"no-query\";\n\n@import \"respond-to\";\n\n@import \"legacy-settings\";\n\n//////////////////////////////\n// Breakpoint Mixin\n//////////////////////////////\n\n@mixin breakpoint($query, $no-query: false) {\n  @include legacy-settings-warning;\n\n  // Reset contexts\n  @include private-breakpoint-reset-contexts();\n\n  $breakpoint: breakpoint($query, false);\n\n  $query-string: map-get($breakpoint, 'query');\n  $query-fallback: map-get($breakpoint, 'fallback');\n\n  $private-breakpoint-context-holder: map-get($breakpoint, 'context holder') !global;\n  $private-breakpoint-query-count: map-get($breakpoint, 'query count') !global;\n\n  // Allow for an as-needed override or usage of no query fallback.\n  @if $no-query != false {\n    $query-fallback: $no-query;\n  }\n\n  @if $query-fallback != false {\n    $context-setter: private-breakpoint-set-context('no-query', $query-fallback);\n  }\n\n  // Print Out Query String\n  @if not breakpoint-get('no queries') {\n    @media #{$query-string} {\n      @content;\n    }\n  }\n\n  @if breakpoint-get('no query fallbacks') != false or breakpoint-get('no queries') == true {\n\n    $type: type-of(breakpoint-get('no query fallbacks'));\n    $print: false;\n\n    @if ($type == 'bool') {\n      $print: true;\n    }\n    @else if ($type == 'string') {\n      @if $query-fallback == breakpoint-get('no query fallbacks') {\n        $print: true;\n      }\n    }\n    @else if ($type == 'list') {\n      @each $wrapper in breakpoint-get('no query fallbacks') {\n        @if $query-fallback == $wrapper {\n          $print: true;\n        }\n      }\n    }\n\n    // Write Fallback\n    @if ($query-fallback != false) and ($print == true) {\n      $type-fallback: type-of($query-fallback);\n\n      @if ($type-fallback != 'bool') {\n        #{$query-fallback} & {\n          @content;\n        }\n      }\n      @else {\n        @content;\n      }\n    }\n  }\n\n  @include private-breakpoint-reset-contexts();\n}\n\n\n@mixin mq($query, $no-query: false) {\n  @include breakpoint($query, $no-query) {\n    @content;\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/_context.scss",
    "content": "//////////////////////////////\n// Private Breakpoint Variables\n//////////////////////////////\n$private-breakpoint-context-holder: ();\n$private-breakpoint-query-count: 0 !default;\n\n//////////////////////////////\n// Breakpoint Has Context\n// Returns whether or not you are inside a Breakpoint query\n//////////////////////////////\n@function breakpoint-has-context() {\n  @if length($private-breakpoint-query-count) {\n    @return true;\n  }\n  @else {\n    @return false;\n  }\n}\n\n//////////////////////////////\n// Breakpoint Get Context\n// $feature: Input feature to get it's current MQ context. Returns false if no context\n//////////////////////////////\n@function breakpoint-get-context($feature) {\n  @if map-has-key($private-breakpoint-context-holder, $feature) {\n    $get: map-get($private-breakpoint-context-holder, $feature);\n    // Special handling of no-query from get side so /false/ prepends aren't returned\n    @if $feature == 'no-query' {\n      @if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false {\n        $get: nth($get, length($get));\n      }\n    }\n    @return $get;\n  }\n  @else {\n    @if breakpoint-has-context() and $feature == 'media' {\n      @return breakpoint-get('default media');\n    }\n    @else {\n      @return false;\n    }\n  }\n}\n\n//////////////////////////////\n// Private function to set context\n//////////////////////////////\n@function private-breakpoint-set-context($feature, $value) {\n  @if $value == 'monochrome' {\n    $feature: 'monochrome';\n  }\n\n  $current: map-get($private-breakpoint-context-holder, $feature);\n  @if $current and length($current) == $private-breakpoint-query-count {\n    @warn \"You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`\";\n  }\n\n  @if not map-has-key($private-breakpoint-context-holder, $feature) {\n    $v-holder: ();\n    @for $i from 1 to $private-breakpoint-query-count {\n      @if $feature == 'media' {\n        $v-holder: append($v-holder, breakpoint-get('default media'));\n      }\n      @else {\n        $v-holder: append($v-holder, false);\n      }\n    }\n    $v-holder: append($v-holder, $value);\n    $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;\n  }\n  @else {\n    $v-holder: map-get($private-breakpoint-context-holder, $feature);\n    $length: length($v-holder);\n    @for $i from $length to $private-breakpoint-query-count - 1 {\n      @if $feature == 'media' {\n        $v-holder: append($v-holder, breakpoint-get('default media'));\n      }\n      @else {\n        $v-holder: append($v-holder, false);\n      }\n    }\n    $v-holder: append($v-holder, $value);\n    $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global;\n  }\n\n  @return true;\n}\n\n//////////////////////////////\n// Private function to reset context\n//////////////////////////////\n@mixin private-breakpoint-reset-contexts {\n  $private-breakpoint-context-holder: () !global;\n  $private-breakpoint-query-count: 0 !global;\n}"
  },
  {
    "path": "_sass/vendor/breakpoint/_helpers.scss",
    "content": "//////////////////////////////\n// Converts the input value to Base EMs\n//////////////////////////////\n@function breakpoint-to-base-em($value) {\n  $value-unit: unit($value);\n\n  // Will convert relative EMs into root EMs.\n  @if breakpoint-get('base font size') and type-of(breakpoint-get('base font size')) == 'number' and $value-unit == 'em' {\n    $base-unit: unit(breakpoint-get('base font size'));\n\n    @if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {\n      @return base-conversion($value) / base-conversion(breakpoint-get('base font size')) * 1em;\n    }\n    @else {\n      @warn '#{breakpoint-get(\\'base font size\\')} is not set in valid units for font size!';\n      @return false;\n    }\n  }\n  @else {\n    @return base-conversion($value);\n  }\n}\n\n@function base-conversion($value) {\n  $unit: unit($value);\n\n  @if $unit == 'px' {\n    @return $value / 16px * 1em;\n  }\n  @else if $unit == '%' {\n    @return $value / 100% * 1em;\n  }\n  @else if $unit == 'em' {\n    @return $value;\n  }\n  @else if $unit == 'pt' {\n    @return $value / 12pt * 1em;\n  }\n  @else {\n    @return $value;\n//    @warn 'Everything is terrible! What have you done?!';\n  }\n}\n\n//////////////////////////////\n// Returns whether the feature can have a min/max pair\n//////////////////////////////\n$breakpoint-min-max-features: 'color',\n                              'color-index',\n                              'aspect-ratio',\n                              'device-aspect-ratio',\n                              'device-height',\n                              'device-width',\n                              'height',\n                              'monochrome',\n                              'resolution',\n                              'width';\n\n@function breakpoint-min-max($feature) {\n  @each $item in $breakpoint-min-max-features {\n    @if $feature == $item {\n      @return true;\n    }\n  }\n  @return false;\n}\n\n//////////////////////////////\n// Returns whether the feature can have a string value\n//////////////////////////////\n$breakpoint-string-features:  'orientation',\n                              'scan',\n                              'color',\n                              'aspect-ratio',\n                              'device-aspect-ratio',\n                              'pointer',\n                              'luminosity';\n\n@function breakpoint-string-value($feature) {\n  @each $item in $breakpoint-string-features {\n    @if breakpoint-min-max($item) {\n      @if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {\n        @return true;\n      }\n    }\n    @else if $feature == $item {\n      @return true;\n    }\n  }\n  @return false;\n}\n\n//////////////////////////////\n// Returns whether the feature is a media type\n//////////////////////////////\n$breakpoint-media-types:  'all',\n                          'braille',\n                          'embossed',\n                          'handheld',\n                          'print',\n                          'projection',\n                          'screen',\n                          'speech',\n                          'tty',\n                          'tv';\n\n@function breakpoint-is-media($feature) {\n  @each $media in $breakpoint-media-types {\n    @if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {\n      @return true;\n    }\n  }\n\n  @return false;\n}\n\n//////////////////////////////\n// Returns whether the feature can stand alone\n//////////////////////////////\n$breakpoint-single-string-features: 'color',\n                                    'color-index',\n                                    'grid',\n                                    'monochrome';\n\n@function breakpoint-single-string($feature) {\n  @each $item in $breakpoint-single-string-features {\n    @if $feature == $item {\n      @return true;\n    }\n  }\n  @return false;\n}\n\n//////////////////////////////\n// Returns whether the feature\n//////////////////////////////\n@function breakpoint-is-resolution($feature) {\n  $resolutions: 'device-pixel-ratio', 'dpr';\n\n  @if breakpoint-get('transform resolutions') {\n    $resolutions: append($resolutions, 'resolution');\n  }\n\n  @each $reso in $resolutions {\n    @if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {\n      @return true;\n    }\n  }\n\n  @return false;\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/_legacy-settings.scss",
    "content": "@mixin legacy-settings-warning {\n  $legacyVars: (\n    'default-media': 'default media',\n    'default-feature': 'default feature',\n    'force-media-all': 'force all media type',\n    'to-ems': 'to ems',\n    'resolutions': 'transform resolutions',\n    'no-queries': 'no queries',\n    'no-query-fallbacks': 'no query fallbacks',\n    'base-font-size': 'base font size',\n    'legacy-syntax': 'legacy syntax'\n  );\n\n  @each $legacy, $new in $legacyVars {\n    @if global-variable-exists('breakpoint-' + $legacy) {\n      @warn \"In order to avoid variable namspace collisions, we have updated the way to change settings for Breakpoint. Please change all instances of `$breakpoint-#{$legacy}: {{setting}}` to `@include breakpoint-set('#{$new}', {{setting}})`. Variable settings, as well as this warning will be deprecated in a future release.\"\n    }\n  };\n\n  //////////////////////////////\n  // Hand correct each setting\n  //////////////////////////////\n  @if global-variable-exists('breakpoint-default-media') and $breakpoint-default-media != breakpoint-get('default media') {\n    @include breakpoint-set('default media', $breakpoint-default-media);\n  }\n  @if global-variable-exists('breakpoint-default-feature') and $breakpoint-default-feature != breakpoint-get('default feature') {\n    @include breakpoint-set('default feature', $breakpoint-default-feature);\n  }\n  @if global-variable-exists('breakpoint-force-media-all') and $breakpoint-force-media-all != breakpoint-get('force all media type') {\n    @include breakpoint-set('force all media type', $breakpoint-force-media-all);\n  }\n  @if global-variable-exists('breakpoint-to-ems') and $breakpoint-to-ems != breakpoint-get('to ems') {\n    @include breakpoint-set('to ems', $breakpoint-to-ems);\n  }\n  @if global-variable-exists('breakpoint-resolutions') and $breakpoint-resolutions != breakpoint-get('transform resolutions') {\n    @include breakpoint-set('transform resolutions', $breakpoint-resolutions);\n  }\n  @if global-variable-exists('breakpoint-no-queries') and $breakpoint-no-queries != breakpoint-get('no queries') {\n    @include breakpoint-set('no queries', $breakpoint-no-queries);\n  }\n  @if global-variable-exists('breakpoint-no-query-fallbacks') and $breakpoint-no-query-fallbacks != breakpoint-get('no query fallbacks') {\n    @include breakpoint-set('no query fallbacks', $breakpoint-no-query-fallbacks);\n  }\n  @if global-variable-exists('breakpoint-base-font-size') and $breakpoint-base-font-size != breakpoint-get('base font size') {\n    @include breakpoint-set('base font size', $breakpoint-base-font-size);\n  }\n  @if global-variable-exists('breakpoint-legacy-syntax') and $breakpoint-legacy-syntax != breakpoint-get('legacy syntax') {\n    @include breakpoint-set('legacy syntax', $breakpoint-legacy-syntax);\n  }\n}"
  },
  {
    "path": "_sass/vendor/breakpoint/_no-query.scss",
    "content": "@function breakpoint-no-query($query) {\n  @if type-of($query) == 'list' {\n    $keyword: nth($query, 1);\n\n    @if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {\n      @return nth($query, 2);\n    }\n    @else {\n      @return false;\n    }\n  }\n  @else {\n    @return false;\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/_parsers.scss",
    "content": "//////////////////////////////\n// Import Parser Pieces\n//////////////////////////////\n@import \"parsers/query\";\n@import \"parsers/single\";\n@import \"parsers/double\";\n@import \"parsers/triple\";\n@import \"parsers/resolution\";\n\n$Memo-Exists: function-exists(memo-get) and function-exists(memo-set);\n\n//////////////////////////////\n// Breakpoint Function\n//////////////////////////////\n@function breakpoint($query, $contexts...) {\n  $run: true;\n  $return: ();\n\n  // Grab the Memo Output if Memoization can be a thing\n  @if $Memo-Exists {\n    $return: memo-get(breakpoint, breakpoint $query $contexts);\n\n    @if $return != null {\n      $run: false;\n    }\n  }\n\n  @if not $Memo-Exists or $run {\n    // Internal Variables\n    $query-string: '';\n    $query-fallback: false;\n    $return: ();\n\n    // Reserve Global Private Breakpoint Context\n    $holder-context: $private-breakpoint-context-holder;\n    $holder-query-count: $private-breakpoint-query-count;\n\n    // Reset Global Private Breakpoint Context\n    $private-breakpoint-context-holder: () !global;\n    $private-breakpoint-query-count: 0 !global;\n\n\n    // Test to see if it's a comma-separated list\n    $or-list: if(list-separator($query) == 'comma', true, false);\n\n\n    @if ($or-list == false and breakpoint-get('legacy syntax') == false) {\n      $query-string: breakpoint-parse($query);\n    }\n    @else {\n      $length: length($query);\n\n      $last: nth($query, $length);\n      $query-fallback: breakpoint-no-query($last);\n\n      @if ($query-fallback != false) {\n        $length: $length - 1;\n      }\n\n      @if (breakpoint-get('legacy syntax') == true) {\n        $mq: ();\n\n        @for $i from 1 through $length {\n          $mq: append($mq, nth($query, $i), comma);\n        }\n\n        $query-string: breakpoint-parse($mq);\n      }\n      @else {\n        $query-string: '';\n        @for $i from 1 through $length {\n          $query-string: $query-string + if($i == 1, '', ', ') + breakpoint-parse(nth($query, $i));\n        }\n      }\n    }\n\n    $return: ('query': $query-string,\n        'fallback': $query-fallback,\n        'context holder': $private-breakpoint-context-holder,\n        'query count': $private-breakpoint-query-count\n    );\n    @if length($contexts) > 0 and nth($contexts, 1) != false {\n      @if $query-fallback != false {\n        $context-setter: private-breakpoint-set-context('no-query', $query-fallback);\n      }\n      $context-map: ();\n      @each $context in $contexts {\n        $context-map: map-merge($context-map, ($context: breakpoint-get-context($context)));\n      }\n      $return: map-merge($return, (context: $context-map));\n    }\n\n    // Reset Global Private Breakpoint Context\n    $private-breakpoint-context-holder: () !global;\n    $private-breakpoint-query-count: 0 !global;\n\n    @if $Memo-Exists {\n      $holder: memo-set(breakpoint, breakpoint $query $contexts, $return);\n    }\n  }\n\n  @return $return;\n}\n\n//////////////////////////////\n// General Breakpoint Parser\n//////////////////////////////\n@function breakpoint-parse($query) {\n  // Increase number of 'and' queries\n  $private-breakpoint-query-count: $private-breakpoint-query-count + 1 !global;\n\n  // Set up Media Type\n  $query-print: '';\n\n  $force-all: ((breakpoint-get('force all media type') == true) and (breakpoint-get('default media') == 'all'));\n  $empty-media: true;\n  @if ($force-all == true) or (breakpoint-get('default media') != 'all') {\n    // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)\n    $query-print: breakpoint-get('default media');\n    $empty-media: false;\n  }\n\n\n  $query-resolution: false;\n\n  $query-holder: breakpoint-parse-query($query);\n\n\n\n  // Loop over each parsed out query and write it to $query-print\n  $first: true;\n\n  @each $feature in $query-holder {\n    $length: length($feature);\n\n    // Parse a single feature\n    @if ($length == 1) {\n      // Feature is currently a list, grab the actual value\n      $feature: nth($feature, 1);\n\n      // Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type\n      @if (breakpoint-is-media($feature)) {\n        @if ($force-all == true) or ($feature != 'all') {\n          // Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)\n          $query-print: $feature;\n          $empty-media: false;\n\n          // Set Context\n          $context-setter: private-breakpoint-set-context(media, $query-print);\n        }\n      }\n      @else {\n        $parsed: breakpoint-parse-single($feature, $empty-media, $first);\n        $query-print: '#{$query-print} #{$parsed}';\n        $first: false;\n      }\n    }\n    // Parse a double feature\n    @else if ($length == 2) {\n      @if (breakpoint-is-resolution($feature) != false) {\n        $query-resolution: $feature;\n      }\n      @else {\n        $parsed: null;\n        // If it's a string/number pair,\n        // we check to see if one is a single-string value,\n        // then we parse it as a normal double\n        $alpha: nth($feature, 1);\n        $beta: nth($feature, 2);\n        @if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {\n          $parsed: breakpoint-parse-single($alpha, $empty-media, $first);\n          $query-print: '#{$query-print} #{$parsed}';\n          $first: false;\n          $parsed: breakpoint-parse-single($beta, $empty-media, $first);\n          $query-print: '#{$query-print} #{$parsed}';\n        }\n        @else {\n          $parsed: breakpoint-parse-double($feature, $empty-media, $first);\n          $query-print: '#{$query-print} #{$parsed}';\n          $first: false;\n        }\n      }\n    }\n    // Parse a triple feature\n    @else if ($length == 3) {\n      $parsed: breakpoint-parse-triple($feature, $empty-media, $first);\n      $query-print: '#{$query-print} #{$parsed}';\n      $first: false;\n    }\n\n  }\n\n  @if ($query-resolution != false) {\n    $query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);\n  }\n\n  // Loop through each feature that's been detected so far and append 'false' to the the value list to increment their counters\n  @each $f, $v in $private-breakpoint-context-holder {\n    $v-holder: $v;\n    $length: length($v-holder);\n    @if length($v-holder) < $private-breakpoint-query-count {\n      @for $i from $length to $private-breakpoint-query-count {\n        @if $f == 'media' {\n          $v-holder: append($v-holder, breakpoint-get('default media'));\n        }\n        @else {\n          $v-holder: append($v-holder, false);\n        }\n      }\n    }\n    $private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($f: $v-holder)) !global;\n  }\n\n  @return $query-print;\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/_respond-to.scss",
    "content": "////////////////////////\n// Default the Breakpoints variable\n////////////////////////\n$breakpoints: () !default;\n$BREAKPOINTS: () !default;\n\n////////////////////////\n// Respond-to API Mixin\n////////////////////////\n@mixin respond-to($context, $no-query: false) {\n  @if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 {\n    @warn \"In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release.\";\n    $BREAKPOINTS: $breakpoints !global;\n    $breakpoints: () !global;\n  }\n\n  @if type-of($BREAKPOINTS) != 'map' {\n    // Just in case someone writes gibberish to the $breakpoints variable.\n    @warn \"Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable.\";\n    @content;\n  }\n  @else if map-has-key($BREAKPOINTS, $context) {\n    @include breakpoint(map-get($BREAKPOINTS, $context), $no-query) {\n      @content;\n    }\n  }\n  @else if not map-has-key($BREAKPOINTS, $context) {\n    @warn \"`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`\";\n    @content;\n  }\n  @else {\n    @warn \"You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`\";\n    @content;\n  }\n}\n\n//////////////////////////////\n// Add Breakpoint to Breakpoints\n// TODO: Remove function in next release\n//////////////////////////////\n@function add-breakpoint($name, $bkpt, $overwrite: false) {\n  $output: ($name: $bkpt);\n\n  @if length($breakpoints) == 0 {\n    @return $output;\n  }\n  @else {\n    @if map-has-key($breakpoints, $name) and $overwrite != true {\n      @warn \"You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.\";\n      @return $breakpoints;\n    }\n    @else if not map-has-key($breakpoints, $name) or $overwrite == true {\n      @return map-merge($breakpoints, $output);\n    }\n  }\n}\n\n@mixin add-breakpoint($name, $bkpt, $overwrite: false) {\n  $output: ($name: $bkpt);\n\n  @if length($BREAKPOINTS) == 0 {\n    $BREAKPOINTS: $output !global;\n  }\n  @else {\n    @if map-has-key($BREAKPOINTS, $name) and $overwrite != true {\n      @warn \"You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint.\";\n      $BREAKPOINTS: $BREAKPOINTS !global;\n    }\n    @else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true {\n      $BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global;\n    }\n  }\n}\n\n@function get-breakpoint($name: false) {\n  @if $name == false {\n    @return $BREAKPOINTS;\n  }\n  @else {\n    @return map-get($BREAKPOINTS, $name);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/_settings.scss",
    "content": "//////////////////////////////\n// Has Setting\n//////////////////////////////\n@function breakpoint-has($setting) {\n  @if map-has-key($breakpoint, $setting) {\n    @return true;\n  }\n  @else {\n    @return false;\n  }\n}\n\n//////////////////////////////\n// Get Settings\n//////////////////////////////\n@function breakpoint-get($setting) {\n  @if breakpoint-has($setting) {\n    @return map-get($breakpoint, $setting);\n  }\n  @else {\n    @return map-get($Breakpoint-Settings, $setting);\n  }\n}\n\n//////////////////////////////\n// Set Settings\n//////////////////////////////\n@function breakpoint-set($setting, $value) {\n  @if (str-index($setting, '-') or str-index($setting, '_')) and str-index($setting, ' ') == null {\n    @warn \"Words in Breakpoint settings should be separated by spaces, not dashes or underscores. Please replace dashes and underscores between words with spaces. Settings will not work as expected until changed.\";\n  }\n  $breakpoint: map-merge($breakpoint, ($setting: $value)) !global;\n  @return true;\n}\n\n@mixin breakpoint-change($setting, $value) {\n  $breakpoint-change: breakpoint-set($setting, $value);\n}\n\n@mixin breakpoint-set($setting, $value) {\n  @include breakpoint-change($setting, $value);\n}\n\n@mixin bkpt-change($setting, $value) {\n  @include breakpoint-change($setting, $value);\n}\n@mixin bkpt-set($setting, $value) {\n  @include breakpoint-change($setting, $value);\n}\n\n//////////////////////////////\n// Remove Setting\n//////////////////////////////\n@function breakpoint-reset($settings...) {\n  @if length($settings) == 1 {\n    $settings: nth($settings, 1);\n  }\n\n  @each $setting in $settings {\n    $breakpoint: map-remove($breakpoint, $setting) !global;\n  }\n  @return true;\n}\n\n@mixin breakpoint-reset($settings...) {\n  $breakpoint-reset: breakpoint-reset($settings);\n}\n\n@mixin bkpt-reset($settings...) {\n  $breakpoint-reset: breakpoint-reset($settings);\n}"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/_double.scss",
    "content": "//////////////////////////////\n// Import Pieces\n//////////////////////////////\n@import \"double/default-pair\";\n@import \"double/double-string\";\n@import \"double/default\";\n\n@function breakpoint-parse-double($feature, $empty-media, $first) {\n  $parsed: '';\n  $leader: '';\n  // If we're forcing\n  @if not ($empty-media) or not ($first) {\n    $leader: 'and ';\n  }\n\n  $first: nth($feature, 1);\n  $second: nth($feature, 2);\n\n  // If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number\n  @if type-of($first) == 'number' and type-of($second) == 'number' {\n    $parsed: breakpoint-parse-default-pair($first, $second);\n  }\n  // If they are both strings, we send it through the string parser\n  @else if type-of($first) == 'string' and type-of($second) == 'string' {\n    $parsed: breakpoint-parse-double-string($first, $second);\n  }\n  // If it's a string/number pair, we parse it as a normal double\n  @else {\n    $parsed: breakpoint-parse-double-default($first, $second);\n  }\n\n  @return $leader + $parsed;\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/_query.scss",
    "content": "@function breakpoint-parse-query($query) {\n  // Parse features out of an individual query\n  $feature-holder: ();\n  $query-holder: ();\n  $length: length($query);\n\n  @if $length == 2 {\n    // If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles\n    @if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') {\n\n      $number: '';\n      $value: '';\n\n      @if type-of(nth($query, 1)) == 'string' {\n        $number: nth($query, 2);\n        $value: nth($query, 1);\n      }\n      @else {\n        $number: nth($query, 1);\n        $value: nth($query, 2);\n      }\n\n      // If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy.\n      @if breakpoint-single-string($value) {\n        @if unitless($number) {\n          $feature-holder: append($value, $number, space);\n          $query-holder: append($query-holder, $feature-holder, comma);\n          @return $query-holder;\n        }\n      }\n      // If the string is a media type, split the query\n      @if breakpoint-is-media($value) {\n        $query-holder: append($query-holder, nth($query, 1));\n        $query-holder: append($query-holder, nth($query, 2));\n        @return $query-holder;\n      }\n      // If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it.\n      @else {\n        $feature-holder: append($value, $number, space);\n        $query-holder: append($query-holder, $feature-holder, comma);\n        @return $query-holder;\n      }\n\n    }\n    // If they're both numbers, we assume it's a double and roll with that\n    @else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') {\n      $feature-holder: append(nth($query, 1), nth($query, 2), space);\n      $query-holder: append($query-holder, $feature-holder, comma);\n      @return $query-holder;\n    }\n    // If they're both strings and neither are singles, we roll with that.\n    @else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') {\n      @if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) {\n        $feature-holder: append(nth($query, 1), nth($query, 2), space);\n        $query-holder: append($query-holder, $feature-holder, comma);\n        @return $query-holder;\n      }\n    }\n  }\n  @else if $length == 3 {\n    // If we've got three items and none is a list, we check to see\n    @if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' {\n      // If none of the items are single string values and none of the values are media values, we're good.\n      @if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and  ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) {\n        $feature-holder: append(nth($query, 1), nth($query, 2), space);\n        $feature-holder: append($feature-holder, nth($query, 3), space);\n        $query-holder: append($query-holder, $feature-holder, comma);\n        @return $query-holder;\n      }\n      // let's check to see if the first item is a media type\n      @else if breakpoint-is-media(nth($query, 1)) {\n        $query-holder: append($query-holder, nth($query, 1));\n        $feature-holder: append(nth($query, 2), nth($query, 3), space);\n        $query-holder: append($query-holder, $feature-holder);\n        @return $query-holder;\n      }\n    }\n  }\n\n  // If it's a single item, or if it's not a special case double or triple, we can simply return the query.\n  @return $query;\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/_resolution.scss",
    "content": "@import \"resolution/resolution\";\n\n@function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) {\n  $leader: '';\n  // If we're forcing\n  @if not ($empty-media) or not ($first) {\n    $leader: 'and ';\n  }\n\n  @if breakpoint-get('transform resolutions') and $query-resolution {\n    $resolutions: breakpoint-make-resolutions($query-resolution);\n    $length: length($resolutions);\n    $query-holder: '';\n\n    @for $i from 1 through $length {\n      $query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}';\n      @if $i == 1 {\n        $query-holder: $query;\n      }\n      @else {\n        $query-holder: '#{$query-holder}, #{$query}';\n      }\n    }\n\n    @return $query-holder;\n  }\n  @else {\n    // Return with attached resolution\n    @return $query-print;\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/_single.scss",
    "content": "//////////////////////////////\n// Import Pieces\n//////////////////////////////\n@import \"single/default\";\n\n@function breakpoint-parse-single($feature, $empty-media, $first) {\n  $parsed: '';\n  $leader: '';\n  // If we're forcing\n  @if not ($empty-media) or not ($first) {\n    $leader: 'and ';\n  }\n\n  // If it's a single feature that can stand alone, we let it\n  @if (breakpoint-single-string($feature)) {\n    $parsed: $feature;\n    // Set Context\n    $context-setter: private-breakpoint-set-context($feature, $feature);\n  }\n  // If it's not a stand alone feature, we pass it off to the default handler.\n  @else {\n    $parsed: breakpoint-parse-default($feature);\n  }\n\n  @return $leader + '(' + $parsed + ')';\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/_triple.scss",
    "content": "//////////////////////////////\n// Import Pieces\n//////////////////////////////\n@import \"triple/default\";\n\n@function breakpoint-parse-triple($feature, $empty-media, $first) {\n  $parsed: '';\n  $leader: '';\n\n  // If we're forcing\n  @if not ($empty-media) or not ($first) {\n    $leader: 'and ';\n  }\n\n  // separate the string features from the value numbers\n  $string: null;\n  $numbers: null;\n  @each $val in $feature {\n    @if type-of($val) == string {\n      $string: $val;\n    }\n    @else {\n      @if type-of($numbers) == 'null' {\n        $numbers: $val;\n      }\n      @else {\n        $numbers: append($numbers, $val);\n      }\n    }\n  }\n\n  $parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2));\n\n  @return $leader + $parsed;\n\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/double/_default-pair.scss",
    "content": "@function breakpoint-parse-default-pair($first, $second) {\n  $default: breakpoint-get('default pair');\n  $min: '';\n  $max: '';\n\n  // Sort into min and max\n  $min: min($first, $second);\n  $max: max($first, $second);\n\n  // Set Context\n  $context-setter: private-breakpoint-set-context(min-#{$default}, $min);\n  $context-setter: private-breakpoint-set-context(max-#{$default}, $max);\n\n  // Make them EMs if need be\n  @if (breakpoint-get('to ems') == true) {\n    $min: breakpoint-to-base-em($min);\n    $max: breakpoint-to-base-em($max);\n  }\n\n  @return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})';\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/double/_default.scss",
    "content": "@function breakpoint-parse-double-default($first, $second) {\n  $feature: '';\n  $value: '';\n\n  @if type-of($first) == 'string' {\n    $feature: $first;\n    $value: $second;\n  }\n  @else {\n    $feature: $second;\n    $value: $first;\n  }\n\n  // Set Context\n  $context-setter: private-breakpoint-set-context($feature, $value);\n\n  @if (breakpoint-get('to ems') == true) {\n    $value: breakpoint-to-base-em($value);\n  }\n\n  @return '(#{$feature}: #{$value})'\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/double/_double-string.scss",
    "content": "@function breakpoint-parse-double-string($first, $second) {\n  $feature: '';\n  $value: '';\n\n  // Test to see which is the feature and which is the value\n  @if (breakpoint-string-value($first) == true) {\n    $feature: $first;\n    $value: $second;\n  }\n  @else if (breakpoint-string-value($second) == true) {\n    $feature: $second;\n    $value: $first;\n  }\n  @else {\n    @warn \"Neither #{$first} nor #{$second} is a valid media query name.\";\n  }\n\n  // Set Context\n  $context-setter: private-breakpoint-set-context($feature, $value);\n\n  @return '(#{$feature}: #{$value})';\n}"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/resolution/_resolution.scss",
    "content": "@function breakpoint-make-resolutions($resolution) {\n  $length: length($resolution);\n\n  $output: ();\n\n  @if $length == 2 {\n    $feature: '';\n    $value: '';\n\n    // Find which is number\n    @if type-of(nth($resolution, 1)) == 'number' {\n      $value: nth($resolution, 1);\n    }\n    @else {\n      $value: nth($resolution, 2);\n    }\n\n    // Determine min/max/standard\n    @if index($resolution, 'min-resolution') {\n      $feature: 'min-';\n    }\n    @else if index($resolution, 'max-resolution') {\n      $feature: 'max-';\n    }\n\n    $standard: '(#{$feature}resolution: #{$value})';\n\n    // If we're not dealing with dppx,\n    @if unit($value) != 'dppx' {\n      $base: 96dpi;\n      @if unit($value) == 'dpcm' {\n        $base: 243.84dpcm;\n      }\n      // Write out feature tests\n      $webkit: '';\n      $moz: '';\n      $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})';\n      $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})';\n      // Append to output\n      $output: append($output, $standard, space);\n      $output: append($output, $webkit, space);\n      $output: append($output, $moz, space);\n    }\n    @else {\n      $webkit: '';\n      $moz: '';\n      $webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})';\n      $moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})';\n      $fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})';\n      // Append to output\n      $output: append($output, $standard, space);\n      $output: append($output, $webkit, space);\n      $output: append($output, $moz, space);\n      $output: append($output, $fallback, space);\n    }\n\n  }\n\n  @return $output;\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/single/_default.scss",
    "content": "@function breakpoint-parse-default($feature) {\n  $default: breakpoint-get('default feature');\n\n  // Set Context\n  $context-setter: private-breakpoint-set-context($default, $feature);\n\n  @if (breakpoint-get('to ems') == true) and (type-of($feature) == 'number') {\n    @return '#{$default}: #{breakpoint-to-base-em($feature)}';\n  }\n  @else {\n    @return '#{$default}: #{$feature}';\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/breakpoint/parsers/triple/_default.scss",
    "content": "@function breakpoint-parse-triple-default($feature, $first, $second) {\n\n  // Sort into min and max\n  $min: min($first, $second);\n  $max: max($first, $second);\n\n  // Set Context\n  $context-setter: private-breakpoint-set-context(min-#{$feature}, $min);\n  $context-setter: private-breakpoint-set-context(max-#{$feature}, $max);\n\n  // Make them EMs if need be\n  @if (breakpoint-get('to ems') == true) {\n    $min: breakpoint-to-base-em($min);\n    $max: breakpoint-to-base-em($max);\n  }\n\n  @return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})';\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_animated.scss",
    "content": "// animating icons\n// --------------------------\n\n.#{$fa-css-prefix}-beat {\n  animation-name: #{$fa-css-prefix}-beat;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-bounce {\n  animation-name: #{$fa-css-prefix}-bounce;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));\n}\n\n.#{$fa-css-prefix}-fade {\n  animation-name: #{$fa-css-prefix}-fade;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-beat-fade {\n  animation-name: #{$fa-css-prefix}-beat-fade;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));\n}\n\n.#{$fa-css-prefix}-flip {\n  animation-name: #{$fa-css-prefix}-flip;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, ease-in-out);\n}\n\n.#{$fa-css-prefix}-shake {\n  animation-name: #{$fa-css-prefix}-shake;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin {\n  animation-name: #{$fa-css-prefix}-spin;\n  animation-delay: var(--#{$fa-css-prefix}-animation-delay, 0s);\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 2s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, linear);\n}\n\n.#{$fa-css-prefix}-spin-reverse {\n  --#{$fa-css-prefix}-animation-direction: reverse;\n}\n\n.#{$fa-css-prefix}-pulse,\n.#{$fa-css-prefix}-spin-pulse {\n  animation-name: #{$fa-css-prefix}-spin;\n  animation-direction: var(--#{$fa-css-prefix}-animation-direction, normal);\n  animation-duration: var(--#{$fa-css-prefix}-animation-duration, 1s);\n  animation-iteration-count: var(--#{$fa-css-prefix}-animation-iteration-count, infinite);\n  animation-timing-function: var(--#{$fa-css-prefix}-animation-timing, steps(8));\n}\n\n// if agent or operating system prefers reduced motion, disable animations\n// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/\n// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\n@media (prefers-reduced-motion: reduce) {\n  .#{$fa-css-prefix}-beat,\n  .#{$fa-css-prefix}-bounce,\n  .#{$fa-css-prefix}-fade,\n  .#{$fa-css-prefix}-beat-fade,\n  .#{$fa-css-prefix}-flip,\n  .#{$fa-css-prefix}-pulse,\n  .#{$fa-css-prefix}-shake,\n  .#{$fa-css-prefix}-spin,\n  .#{$fa-css-prefix}-spin-pulse {\n    animation-delay: -1ms;\n    animation-duration: 1ms;\n    animation-iteration-count: 1;\n    transition-delay: 0s;\n    transition-duration: 0s;\n  }\n}\n\n@keyframes #{$fa-css-prefix}-beat {\n  0%, 90% { transform: scale(1); }\n  45% { transform: scale(var(--#{$fa-css-prefix}-beat-scale, 1.25)); }\n}\n\n@keyframes #{$fa-css-prefix}-bounce {\n  0%   { transform: scale(1,1) translateY(0); }\n  10%  { transform: scale(var(--#{$fa-css-prefix}-bounce-start-scale-x, 1.1),var(--#{$fa-css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }\n  30%  { transform: scale(var(--#{$fa-css-prefix}-bounce-jump-scale-x, 0.9),var(--#{$fa-css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{$fa-css-prefix}-bounce-height, -0.5em)); }\n  50%  { transform: scale(var(--#{$fa-css-prefix}-bounce-land-scale-x, 1.05),var(--#{$fa-css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }\n  57%  { transform: scale(1,1) translateY(var(--#{$fa-css-prefix}-bounce-rebound, -0.125em)); }\n  64%  { transform: scale(1,1) translateY(0); }\n  100% { transform: scale(1,1) translateY(0); }\n}\n\n@keyframes #{$fa-css-prefix}-fade {\n  50% { opacity: var(--#{$fa-css-prefix}-fade-opacity, 0.4); }\n}\n\n@keyframes #{$fa-css-prefix}-beat-fade {\n  0%, 100% {\n    opacity: var(--#{$fa-css-prefix}-beat-fade-opacity, 0.4);\n    transform: scale(1);\n  }\n  50% {\n    opacity: 1;\n    transform: scale(var(--#{$fa-css-prefix}-beat-fade-scale, 1.125));\n  }\n}\n\n@keyframes #{$fa-css-prefix}-flip {\n  50% {\n    transform: rotate3d(var(--#{$fa-css-prefix}-flip-x, 0), var(--#{$fa-css-prefix}-flip-y, 1), var(--#{$fa-css-prefix}-flip-z, 0), var(--#{$fa-css-prefix}-flip-angle, -180deg));\n  }\n}\n\n@keyframes #{$fa-css-prefix}-shake {\n  0% { transform: rotate(-15deg); }\n  4% { transform: rotate(15deg); }\n  8%, 24% { transform: rotate(-18deg); }\n  12%, 28% { transform: rotate(18deg); }\n  16% { transform: rotate(-22deg); }\n  20% { transform: rotate(22deg); }\n  32% { transform: rotate(-12deg); }\n  36% { transform: rotate(12deg); }\n  40%, 100% { transform: rotate(0deg); }\n}\n\n@keyframes #{$fa-css-prefix}-spin {\n  0% { transform: rotate(0deg); }\n  100% { transform: rotate(360deg); }\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_bordered-pulled.scss",
    "content": "// bordered + pulled icons\n// -------------------------\n\n.#{$fa-css-prefix}-border {\n  border-color: var(--#{$fa-css-prefix}-border-color, #{$fa-border-color});\n  border-radius: var(--#{$fa-css-prefix}-border-radius, #{$fa-border-radius});\n  border-style: var(--#{$fa-css-prefix}-border-style, #{$fa-border-style});\n  border-width: var(--#{$fa-css-prefix}-border-width, #{$fa-border-width});\n  padding: var(--#{$fa-css-prefix}-border-padding, #{$fa-border-padding});\n}\n\n.#{$fa-css-prefix}-pull-left {\n  float: left;\n  margin-right: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n\n.#{$fa-css-prefix}-pull-right {\n  float: right;\n  margin-left: var(--#{$fa-css-prefix}-pull-margin, #{$fa-pull-margin}); \n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_core.scss",
    "content": "// base icon class definition\n// -------------------------\n\n.#{$fa-css-prefix} {\n  font-family: var(--#{$fa-css-prefix}-style-family, '#{$fa-style-family}');\n  font-weight: var(--#{$fa-css-prefix}-style, #{$fa-style});\n}\n\n.#{$fa-css-prefix},\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix}-sharp,\n.fas,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular,\n.fab,\n.#{$fa-css-prefix}-brands {\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: var(--#{$fa-css-prefix}-display, #{$fa-display});\n  font-style: normal;\n  font-variant: normal;\n  line-height: 1;\n  text-rendering: auto;\n}\n\n.fas,\n.#{$fa-css-prefix}-classic,\n.#{$fa-css-prefix}-solid,\n.far,\n.#{$fa-css-prefix}-regular {\n  font-family: 'Font Awesome 6 Free';\n}\n\n.fab,\n.#{$fa-css-prefix}-brands {\n  font-family: 'Font Awesome 6 Brands';\n}\n\n\n%fa-icon {\n  @include fa-icon;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_fixed-width.scss",
    "content": "// fixed-width icons\n// -------------------------\n\n.#{$fa-css-prefix}-fw {\n  text-align: center;\n  width: $fa-fw-width;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_functions.scss",
    "content": "// functions\n// --------------------------\n\n// fa-content: convenience function used to set content property\n@function fa-content($fa-var) {\n  @return unquote(\"\\\"#{ $fa-var }\\\"\");\n}\n\n// fa-divide: Originally obtained from the Bootstrap https://github.com/twbs/bootstrap\n//\n// Licensed under: The MIT License (MIT)\n//\n// Copyright (c) 2011-2021 Twitter, Inc.\n// Copyright (c) 2011-2021 The Bootstrap Authors\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n@function fa-divide($dividend, $divisor, $precision: 10) {\n  $sign: if($dividend > 0 and $divisor > 0, 1, -1);\n  $dividend: abs($dividend);\n  $divisor: abs($divisor);\n  $quotient: 0;\n  $remainder: $dividend;\n  @if $dividend == 0 {\n    @return 0;\n  }\n  @if $divisor == 0 {\n    @error \"Cannot divide by 0\";\n  }\n  @if $divisor == 1 {\n    @return $dividend;\n  }\n  @while $remainder >= $divisor {\n    $quotient: $quotient + 1;\n    $remainder: $remainder - $divisor;\n  }\n  @if $remainder > 0 and $precision > 0 {\n    $remainder: fa-divide($remainder * 10, $divisor, $precision - 1) * .1;\n  }\n  @return ($quotient + $remainder) * $sign;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_icons.scss",
    "content": "// specific icon class definition\n// -------------------------\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n\n@each $name, $icon in $fa-icons {\n  .#{$fa-css-prefix}-#{$name}::before { content: unquote(\"\\\"#{ $icon }\\\"\"); }\n}\n\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_list.scss",
    "content": "// icons in a list\n// -------------------------\n\n.#{$fa-css-prefix}-ul {\n  list-style-type: none;\n  margin-left: var(--#{$fa-css-prefix}-li-margin, #{$fa-li-margin});\n  padding-left: 0;\n\n  > li { position: relative; }\n}\n\n.#{$fa-css-prefix}-li {\n  left: calc(var(--#{$fa-css-prefix}-li-width, #{$fa-li-width}) * -1);\n  position: absolute;\n  text-align: center;\n  width: var(--#{$fa-css-prefix}-li-width, #{$fa-li-width});\n  line-height: inherit;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_mixins.scss",
    "content": "// mixins\n// --------------------------\n\n// base rendering for an icon\n@mixin fa-icon {\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  font-weight: normal;\n  line-height: 1;\n}\n\n// sets relative font-sizing and alignment (in _sizing)\n@mixin fa-size ($font-size) {\n  font-size: fa-divide($font-size, $fa-size-scale-base) * 1em; // converts step in sizing scale into an em-based value that's relative to the scale's base\n  line-height: fa-divide(1, $font-size) * 1em; // sets the line-height of the icon back to that of it's parent\n  vertical-align: (fa-divide(6, $font-size) - fa-divide(3, 8)) * 1em; // vertically centers the icon taking into account the surrounding text's descender\n}\n\n// only display content to screen readers\n// see: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// see: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n@mixin fa-sr-only() {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n@mixin fa-sr-only-focusable() {\n  &:not(:focus) {\n    @include fa-sr-only();\n  }\n}\n\n// sets a specific icon family to use alongside style + icon mixins\n\n// convenience mixins for declaring pseudo-elements by CSS variable,\n// including all style-specific font properties, and both the ::before\n// and ::after elements in the duotone case.\n@mixin fa-icon-solid($fa-var) {\n  @extend %fa-icon;\n  @extend .fa-solid;\n\n  &::before {\n    content: unquote(\"\\\"#{ $fa-var }\\\"\");\n  }\n}\n@mixin fa-icon-regular($fa-var) {\n  @extend %fa-icon;\n  @extend .fa-regular;\n\n  &::before {\n    content: unquote(\"\\\"#{ $fa-var }\\\"\");\n  }\n}\n@mixin fa-icon-brands($fa-var) {\n  @extend %fa-icon;\n  @extend .fa-brands;\n\n  &::before {\n    content: unquote(\"\\\"#{ $fa-var }\\\"\");\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_rotated-flipped.scss",
    "content": "// rotating + flipping icons\n// -------------------------\n\n.#{$fa-css-prefix}-rotate-90 {\n  transform: rotate(90deg);\n}\n\n.#{$fa-css-prefix}-rotate-180 {\n  transform: rotate(180deg);\n}\n\n.#{$fa-css-prefix}-rotate-270 {\n  transform: rotate(270deg);\n}\n\n.#{$fa-css-prefix}-flip-horizontal {\n  transform: scale(-1, 1);\n}\n\n.#{$fa-css-prefix}-flip-vertical {\n  transform: scale(1, -1);\n}\n\n.#{$fa-css-prefix}-flip-both,\n.#{$fa-css-prefix}-flip-horizontal.#{$fa-css-prefix}-flip-vertical {\n  transform: scale(-1, -1);\n}\n\n.#{$fa-css-prefix}-rotate-by {\n  transform: rotate(var(--#{$fa-css-prefix}-rotate-angle, 0));\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_screen-reader.scss",
    "content": "// screen-reader utilities\n// -------------------------\n\n// only display content to screen readers\n.sr-only,\n.#{$fa-css-prefix}-sr-only {\n  @include fa-sr-only;\n}\n\n// use in conjunction with .sr-only to only display content when it's focused\n.sr-only-focusable,\n.#{$fa-css-prefix}-sr-only-focusable {\n  @include fa-sr-only-focusable;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_shims.scss",
    "content": ".#{$fa-css-prefix}.#{$fa-css-prefix}-glass:before { content: unquote(\"\\\"#{ $fa-var-martini-glass-empty }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-o:before { content: unquote(\"\\\"#{ $fa-var-envelope }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-o:before { content: unquote(\"\\\"#{ $fa-var-star }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-remove:before { content: unquote(\"\\\"#{ $fa-var-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-close:before { content: unquote(\"\\\"#{ $fa-var-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gear:before { content: unquote(\"\\\"#{ $fa-var-gear }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-trash-o:before { content: unquote(\"\\\"#{ $fa-var-trash-can }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-home:before { content: unquote(\"\\\"#{ $fa-var-house }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-o:before { content: unquote(\"\\\"#{ $fa-var-file }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-clock-o:before { content: unquote(\"\\\"#{ $fa-var-clock }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-down:before { content: unquote(\"\\\"#{ $fa-var-circle-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-up:before { content: unquote(\"\\\"#{ $fa-var-circle-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-play-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-play }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-repeat:before { content: unquote(\"\\\"#{ $fa-var-arrow-rotate-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-right:before { content: unquote(\"\\\"#{ $fa-var-arrow-rotate-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-refresh:before { content: unquote(\"\\\"#{ $fa-var-arrows-rotate }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-list-alt:before { content: unquote(\"\\\"#{ $fa-var-rectangle-list }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dedent:before { content: unquote(\"\\\"#{ $fa-var-outdent }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-video-camera:before { content: unquote(\"\\\"#{ $fa-var-video }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-picture-o:before { content: unquote(\"\\\"#{ $fa-var-image }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-photo {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-photo:before { content: unquote(\"\\\"#{ $fa-var-image }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-image {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-image:before { content: unquote(\"\\\"#{ $fa-var-image }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-map-marker:before { content: unquote(\"\\\"#{ $fa-var-location-dot }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square-o:before { content: unquote(\"\\\"#{ $fa-var-pen-to-square }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-edit {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-edit:before { content: unquote(\"\\\"#{ $fa-var-pen-to-square }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-share-square-o:before { content: unquote(\"\\\"#{ $fa-var-share-from-square }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-check-square-o:before { content: unquote(\"\\\"#{ $fa-var-square-check }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows:before { content: unquote(\"\\\"#{ $fa-var-up-down-left-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-times-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-check-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-check }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-forward:before { content: unquote(\"\\\"#{ $fa-var-share }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-expand:before { content: unquote(\"\\\"#{ $fa-var-up-right-and-down-left-from-center }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-compress:before { content: unquote(\"\\\"#{ $fa-var-down-left-and-up-right-to-center }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-eye {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-eye-slash {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-warning:before { content: unquote(\"\\\"#{ $fa-var-triangle-exclamation }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar:before { content: unquote(\"\\\"#{ $fa-var-calendar-days }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-v:before { content: unquote(\"\\\"#{ $fa-var-up-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-h:before { content: unquote(\"\\\"#{ $fa-var-left-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart:before { content: unquote(\"\\\"#{ $fa-var-chart-column }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bar-chart-o:before { content: unquote(\"\\\"#{ $fa-var-chart-column }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter-square:before { content: unquote(\"\\\"#{ $fa-var-square-twitter }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-square:before { content: unquote(\"\\\"#{ $fa-var-square-facebook }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gears:before { content: unquote(\"\\\"#{ $fa-var-gears }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-up:before { content: unquote(\"\\\"#{ $fa-var-thumbs-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thumbs-o-down:before { content: unquote(\"\\\"#{ $fa-var-thumbs-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-heart-o:before { content: unquote(\"\\\"#{ $fa-var-heart }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-out:before { content: unquote(\"\\\"#{ $fa-var-right-from-bracket }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin-square:before { content: unquote(\"\\\"#{ $fa-var-linkedin }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thumb-tack:before { content: unquote(\"\\\"#{ $fa-var-thumbtack }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link:before { content: unquote(\"\\\"#{ $fa-var-up-right-from-square }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sign-in:before { content: unquote(\"\\\"#{ $fa-var-right-to-bracket }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-github-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-github-square:before { content: unquote(\"\\\"#{ $fa-var-square-github }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lemon-o:before { content: unquote(\"\\\"#{ $fa-var-lemon }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-square-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-square-o:before { content: unquote(\"\\\"#{ $fa-var-square }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bookmark-o:before { content: unquote(\"\\\"#{ $fa-var-bookmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-twitter {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook:before { content: unquote(\"\\\"#{ $fa-var-facebook-f }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-f:before { content: unquote(\"\\\"#{ $fa-var-facebook-f }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-github {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-credit-card {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-feed:before { content: unquote(\"\\\"#{ $fa-var-rss }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hdd-o:before { content: unquote(\"\\\"#{ $fa-var-hard-drive }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-right:before { content: unquote(\"\\\"#{ $fa-var-hand-point-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-left:before { content: unquote(\"\\\"#{ $fa-var-hand-point-left }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-up:before { content: unquote(\"\\\"#{ $fa-var-hand-point-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-o-down:before { content: unquote(\"\\\"#{ $fa-var-hand-point-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-globe:before { content: unquote(\"\\\"#{ $fa-var-earth-americas }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tasks:before { content: unquote(\"\\\"#{ $fa-var-bars-progress }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrows-alt:before { content: unquote(\"\\\"#{ $fa-var-maximize }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-group:before { content: unquote(\"\\\"#{ $fa-var-users }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-chain:before { content: unquote(\"\\\"#{ $fa-var-link }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cut:before { content: unquote(\"\\\"#{ $fa-var-scissors }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-files-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-files-o:before { content: unquote(\"\\\"#{ $fa-var-copy }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-floppy-o:before { content: unquote(\"\\\"#{ $fa-var-floppy-disk }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-save {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-save:before { content: unquote(\"\\\"#{ $fa-var-floppy-disk }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-navicon:before { content: unquote(\"\\\"#{ $fa-var-bars }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-reorder:before { content: unquote(\"\\\"#{ $fa-var-bars }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-magic:before { content: unquote(\"\\\"#{ $fa-var-wand-magic-sparkles }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-square:before { content: unquote(\"\\\"#{ $fa-var-square-pinterest }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-square:before { content: unquote(\"\\\"#{ $fa-var-square-google-plus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus:before { content: unquote(\"\\\"#{ $fa-var-google-plus-g }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-money:before { content: unquote(\"\\\"#{ $fa-var-money-bill-1 }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-unsorted:before { content: unquote(\"\\\"#{ $fa-var-sort }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-desc:before { content: unquote(\"\\\"#{ $fa-var-sort-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-asc:before { content: unquote(\"\\\"#{ $fa-var-sort-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-linkedin:before { content: unquote(\"\\\"#{ $fa-var-linkedin-in }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rotate-left:before { content: unquote(\"\\\"#{ $fa-var-arrow-rotate-left }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-legal:before { content: unquote(\"\\\"#{ $fa-var-gavel }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tachometer:before { content: unquote(\"\\\"#{ $fa-var-gauge-high }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dashboard:before { content: unquote(\"\\\"#{ $fa-var-gauge-high }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-comment-o:before { content: unquote(\"\\\"#{ $fa-var-comment }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-comments-o:before { content: unquote(\"\\\"#{ $fa-var-comments }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-flash:before { content: unquote(\"\\\"#{ $fa-var-bolt }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-clipboard:before { content: unquote(\"\\\"#{ $fa-var-paste }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lightbulb-o:before { content: unquote(\"\\\"#{ $fa-var-lightbulb }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-exchange:before { content: unquote(\"\\\"#{ $fa-var-right-left }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-download:before { content: unquote(\"\\\"#{ $fa-var-cloud-arrow-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cloud-upload:before { content: unquote(\"\\\"#{ $fa-var-cloud-arrow-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-o:before { content: unquote(\"\\\"#{ $fa-var-bell }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cutlery:before { content: unquote(\"\\\"#{ $fa-var-utensils }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text-o:before { content: unquote(\"\\\"#{ $fa-var-file-lines }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-building-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-building-o:before { content: unquote(\"\\\"#{ $fa-var-building }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hospital-o:before { content: unquote(\"\\\"#{ $fa-var-hospital }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tablet:before { content: unquote(\"\\\"#{ $fa-var-tablet-screen-button }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile:before { content: unquote(\"\\\"#{ $fa-var-mobile-screen-button }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mobile-phone:before { content: unquote(\"\\\"#{ $fa-var-mobile-screen-button }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply:before { content: unquote(\"\\\"#{ $fa-var-reply }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-github-alt {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-o:before { content: unquote(\"\\\"#{ $fa-var-folder }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-folder-open-o:before { content: unquote(\"\\\"#{ $fa-var-folder-open }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-smile-o:before { content: unquote(\"\\\"#{ $fa-var-face-smile }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-frown-o:before { content: unquote(\"\\\"#{ $fa-var-face-frown }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-meh-o:before { content: unquote(\"\\\"#{ $fa-var-face-meh }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-keyboard-o:before { content: unquote(\"\\\"#{ $fa-var-keyboard }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-flag-o:before { content: unquote(\"\\\"#{ $fa-var-flag }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mail-reply-all:before { content: unquote(\"\\\"#{ $fa-var-reply-all }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-o:before { content: unquote(\"\\\"#{ $fa-var-star-half-stroke }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-empty:before { content: unquote(\"\\\"#{ $fa-var-star-half-stroke }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-star-half-full:before { content: unquote(\"\\\"#{ $fa-var-star-half-stroke }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-code-fork:before { content: unquote(\"\\\"#{ $fa-var-code-branch }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-chain-broken:before { content: unquote(\"\\\"#{ $fa-var-link-slash }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-unlink:before { content: unquote(\"\\\"#{ $fa-var-link-slash }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-o:before { content: unquote(\"\\\"#{ $fa-var-calendar }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-maxcdn {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-html5 {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-css3 {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-unlock-alt:before { content: unquote(\"\\\"#{ $fa-var-unlock }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-minus-square-o:before { content: unquote(\"\\\"#{ $fa-var-square-minus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-level-up:before { content: unquote(\"\\\"#{ $fa-var-turn-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-level-down:before { content: unquote(\"\\\"#{ $fa-var-turn-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pencil-square:before { content: unquote(\"\\\"#{ $fa-var-square-pen }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-external-link-square:before { content: unquote(\"\\\"#{ $fa-var-square-up-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-compass {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-down {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-down:before { content: unquote(\"\\\"#{ $fa-var-square-caret-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-down:before { content: unquote(\"\\\"#{ $fa-var-square-caret-down }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-up:before { content: unquote(\"\\\"#{ $fa-var-square-caret-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-up:before { content: unquote(\"\\\"#{ $fa-var-square-caret-up }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-right:before { content: unquote(\"\\\"#{ $fa-var-square-caret-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-right:before { content: unquote(\"\\\"#{ $fa-var-square-caret-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-eur:before { content: unquote(\"\\\"#{ $fa-var-euro-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-euro:before { content: unquote(\"\\\"#{ $fa-var-euro-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gbp:before { content: unquote(\"\\\"#{ $fa-var-sterling-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-usd:before { content: unquote(\"\\\"#{ $fa-var-dollar-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dollar:before { content: unquote(\"\\\"#{ $fa-var-dollar-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-inr:before { content: unquote(\"\\\"#{ $fa-var-indian-rupee-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rupee:before { content: unquote(\"\\\"#{ $fa-var-indian-rupee-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-jpy:before { content: unquote(\"\\\"#{ $fa-var-yen-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cny:before { content: unquote(\"\\\"#{ $fa-var-yen-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rmb:before { content: unquote(\"\\\"#{ $fa-var-yen-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yen:before { content: unquote(\"\\\"#{ $fa-var-yen-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rub:before { content: unquote(\"\\\"#{ $fa-var-ruble-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ruble:before { content: unquote(\"\\\"#{ $fa-var-ruble-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rouble:before { content: unquote(\"\\\"#{ $fa-var-ruble-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-krw:before { content: unquote(\"\\\"#{ $fa-var-won-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-won:before { content: unquote(\"\\\"#{ $fa-var-won-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-btc {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bitcoin {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bitcoin:before { content: unquote(\"\\\"#{ $fa-var-btc }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-text:before { content: unquote(\"\\\"#{ $fa-var-file-lines }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-asc:before { content: unquote(\"\\\"#{ $fa-var-arrow-down-a-z }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-alpha-desc:before { content: unquote(\"\\\"#{ $fa-var-arrow-down-z-a }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-asc:before { content: unquote(\"\\\"#{ $fa-var-arrow-down-short-wide }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-amount-desc:before { content: unquote(\"\\\"#{ $fa-var-arrow-down-wide-short }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-asc:before { content: unquote(\"\\\"#{ $fa-var-arrow-down-1-9 }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sort-numeric-desc:before { content: unquote(\"\\\"#{ $fa-var-arrow-down-9-1 }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-square:before { content: unquote(\"\\\"#{ $fa-var-square-youtube }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-xing {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-xing-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-xing-square:before { content: unquote(\"\\\"#{ $fa-var-square-xing }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-youtube-play:before { content: unquote(\"\\\"#{ $fa-var-youtube }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dropbox {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-stack-overflow {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-instagram {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-flickr {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-adn {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bitbucket-square:before { content: unquote(\"\\\"#{ $fa-var-bitbucket }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tumblr-square:before { content: unquote(\"\\\"#{ $fa-var-square-tumblr }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-down:before { content: unquote(\"\\\"#{ $fa-var-down-long }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-up:before { content: unquote(\"\\\"#{ $fa-var-up-long }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-left:before { content: unquote(\"\\\"#{ $fa-var-left-long }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-long-arrow-right:before { content: unquote(\"\\\"#{ $fa-var-right-long }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-apple {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-windows {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-android {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-linux {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dribbble {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-skype {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-foursquare {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-trello {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gratipay {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gittip {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gittip:before { content: unquote(\"\\\"#{ $fa-var-gratipay }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sun-o:before { content: unquote(\"\\\"#{ $fa-var-sun }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-moon-o:before { content: unquote(\"\\\"#{ $fa-var-moon }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vk {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-weibo {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-renren {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pagelines {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-stack-exchange {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-right {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-right:before { content: unquote(\"\\\"#{ $fa-var-circle-right }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-arrow-circle-o-left:before { content: unquote(\"\\\"#{ $fa-var-circle-left }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-caret-square-o-left:before { content: unquote(\"\\\"#{ $fa-var-square-caret-left }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-toggle-left:before { content: unquote(\"\\\"#{ $fa-var-square-caret-left }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dot-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-dot }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo-square:before { content: unquote(\"\\\"#{ $fa-var-square-vimeo }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-try:before { content: unquote(\"\\\"#{ $fa-var-turkish-lira-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-turkish-lira:before { content: unquote(\"\\\"#{ $fa-var-turkish-lira-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-plus-square-o:before { content: unquote(\"\\\"#{ $fa-var-square-plus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-slack {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wordpress {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-openid {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-institution:before { content: unquote(\"\\\"#{ $fa-var-building-columns }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bank:before { content: unquote(\"\\\"#{ $fa-var-building-columns }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mortar-board:before { content: unquote(\"\\\"#{ $fa-var-graduation-cap }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yahoo {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-square:before { content: unquote(\"\\\"#{ $fa-var-square-reddit }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-stumbleupon-circle {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-stumbleupon {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-delicious {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-digg {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper-pp {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper-alt {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-drupal {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-joomla {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-behance {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-behance-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-behance-square:before { content: unquote(\"\\\"#{ $fa-var-square-behance }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-steam {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-steam-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-steam-square:before { content: unquote(\"\\\"#{ $fa-var-square-steam }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-automobile:before { content: unquote(\"\\\"#{ $fa-var-car }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cab:before { content: unquote(\"\\\"#{ $fa-var-taxi }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-spotify {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-deviantart {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-soundcloud {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-pdf-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-pdf-o:before { content: unquote(\"\\\"#{ $fa-var-file-pdf }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-word-o:before { content: unquote(\"\\\"#{ $fa-var-file-word }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-excel-o:before { content: unquote(\"\\\"#{ $fa-var-file-excel }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-powerpoint-o:before { content: unquote(\"\\\"#{ $fa-var-file-powerpoint }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-image-o:before { content: unquote(\"\\\"#{ $fa-var-file-image }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-photo-o:before { content: unquote(\"\\\"#{ $fa-var-file-image }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-picture-o:before { content: unquote(\"\\\"#{ $fa-var-file-image }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-archive-o:before { content: unquote(\"\\\"#{ $fa-var-file-zipper }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-zip-o:before { content: unquote(\"\\\"#{ $fa-var-file-zipper }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-audio-o:before { content: unquote(\"\\\"#{ $fa-var-file-audio }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-sound-o:before { content: unquote(\"\\\"#{ $fa-var-file-audio }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-video-o:before { content: unquote(\"\\\"#{ $fa-var-file-video }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-movie-o:before { content: unquote(\"\\\"#{ $fa-var-file-video }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-file-code-o:before { content: unquote(\"\\\"#{ $fa-var-file-code }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vine {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-codepen {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-jsfiddle {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-life-bouy:before { content: unquote(\"\\\"#{ $fa-var-life-ring }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-life-buoy:before { content: unquote(\"\\\"#{ $fa-var-life-ring }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-life-saver:before { content: unquote(\"\\\"#{ $fa-var-life-ring }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-support:before { content: unquote(\"\\\"#{ $fa-var-life-ring }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-o-notch:before { content: unquote(\"\\\"#{ $fa-var-circle-notch }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-rebel {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ra {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ra:before { content: unquote(\"\\\"#{ $fa-var-rebel }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-resistance {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-resistance:before { content: unquote(\"\\\"#{ $fa-var-rebel }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-empire {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ge {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ge:before { content: unquote(\"\\\"#{ $fa-var-empire }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-git-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-git-square:before { content: unquote(\"\\\"#{ $fa-var-square-git }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-git {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hacker-news {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator-square:before { content: unquote(\"\\\"#{ $fa-var-hacker-news }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yc-square:before { content: unquote(\"\\\"#{ $fa-var-hacker-news }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-tencent-weibo {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-qq {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-weixin {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wechat {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wechat:before { content: unquote(\"\\\"#{ $fa-var-weixin }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-send:before { content: unquote(\"\\\"#{ $fa-var-paper-plane }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-paper-plane-o:before { content: unquote(\"\\\"#{ $fa-var-paper-plane }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-send-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-send-o:before { content: unquote(\"\\\"#{ $fa-var-paper-plane }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-circle-thin:before { content: unquote(\"\\\"#{ $fa-var-circle }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-header:before { content: unquote(\"\\\"#{ $fa-var-heading }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-futbol-o:before { content: unquote(\"\\\"#{ $fa-var-futbol }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-soccer-ball-o:before { content: unquote(\"\\\"#{ $fa-var-futbol }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-slideshare {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-twitch {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yelp {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-newspaper-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-newspaper-o:before { content: unquote(\"\\\"#{ $fa-var-newspaper }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-paypal {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-wallet {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-visa {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-mastercard {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-discover {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-amex {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-paypal {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-stripe {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-slash-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bell-slash-o:before { content: unquote(\"\\\"#{ $fa-var-bell-slash }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-trash:before { content: unquote(\"\\\"#{ $fa-var-trash-can }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-copyright {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-eyedropper:before { content: unquote(\"\\\"#{ $fa-var-eye-dropper }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-area-chart:before { content: unquote(\"\\\"#{ $fa-var-chart-area }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pie-chart:before { content: unquote(\"\\\"#{ $fa-var-chart-pie }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-line-chart:before { content: unquote(\"\\\"#{ $fa-var-chart-line }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-lastfm-square:before { content: unquote(\"\\\"#{ $fa-var-square-lastfm }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ioxhost {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-angellist {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc:before { content: unquote(\"\\\"#{ $fa-var-closed-captioning }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ils:before { content: unquote(\"\\\"#{ $fa-var-shekel-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-shekel:before { content: unquote(\"\\\"#{ $fa-var-shekel-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sheqel:before { content: unquote(\"\\\"#{ $fa-var-shekel-sign }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-buysellads {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-connectdevelop {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-dashcube {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-forumbee {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-leanpub {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sellsy {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-shirtsinbulk {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-simplybuilt {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-skyatlas {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-diamond {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-diamond:before { content: unquote(\"\\\"#{ $fa-var-gem }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender:before { content: unquote(\"\\\"#{ $fa-var-mars-and-venus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-intersex:before { content: unquote(\"\\\"#{ $fa-var-mars-and-venus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-transgender-alt:before { content: unquote(\"\\\"#{ $fa-var-transgender }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-facebook-official:before { content: unquote(\"\\\"#{ $fa-var-facebook }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pinterest-p {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-whatsapp {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hotel:before { content: unquote(\"\\\"#{ $fa-var-bed }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-viacoin {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-medium {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-y-combinator {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yc {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yc:before { content: unquote(\"\\\"#{ $fa-var-y-combinator }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-optin-monster {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-opencart {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-expeditedssl {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-4:before { content: unquote(\"\\\"#{ $fa-var-battery-full }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-battery:before { content: unquote(\"\\\"#{ $fa-var-battery-full }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-3:before { content: unquote(\"\\\"#{ $fa-var-battery-three-quarters }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-2:before { content: unquote(\"\\\"#{ $fa-var-battery-half }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-1:before { content: unquote(\"\\\"#{ $fa-var-battery-quarter }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-battery-0:before { content: unquote(\"\\\"#{ $fa-var-battery-empty }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-object-group {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-object-ungroup {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sticky-note-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-sticky-note-o:before { content: unquote(\"\\\"#{ $fa-var-note-sticky }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-jcb {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-cc-diners-club {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-clone {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-o:before { content: unquote(\"\\\"#{ $fa-var-hourglass }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-1:before { content: unquote(\"\\\"#{ $fa-var-hourglass-start }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-2:before { content: unquote(\"\\\"#{ $fa-var-hourglass-half }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hourglass-3:before { content: unquote(\"\\\"#{ $fa-var-hourglass-end }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-rock-o:before { content: unquote(\"\\\"#{ $fa-var-hand-back-fist }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-grab-o:before { content: unquote(\"\\\"#{ $fa-var-hand-back-fist }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-paper-o:before { content: unquote(\"\\\"#{ $fa-var-hand }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-stop-o:before { content: unquote(\"\\\"#{ $fa-var-hand }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-scissors-o:before { content: unquote(\"\\\"#{ $fa-var-hand-scissors }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-lizard-o:before { content: unquote(\"\\\"#{ $fa-var-hand-lizard }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-spock-o:before { content: unquote(\"\\\"#{ $fa-var-hand-spock }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-pointer-o:before { content: unquote(\"\\\"#{ $fa-var-hand-pointer }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hand-peace-o:before { content: unquote(\"\\\"#{ $fa-var-hand-peace }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-registered {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-creative-commons {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gg {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gg-circle {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-odnoklassniki-square:before { content: unquote(\"\\\"#{ $fa-var-square-odnoklassniki }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-get-pocket {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wikipedia-w {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-safari {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-chrome {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-firefox {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-opera {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-internet-explorer {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-television:before { content: unquote(\"\\\"#{ $fa-var-tv }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-contao {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-500px {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-amazon {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-plus-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-plus-o:before { content: unquote(\"\\\"#{ $fa-var-calendar-plus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-minus-o:before { content: unquote(\"\\\"#{ $fa-var-calendar-minus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-times-o:before { content: unquote(\"\\\"#{ $fa-var-calendar-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-calendar-check-o:before { content: unquote(\"\\\"#{ $fa-var-calendar-check }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-map-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-map-o:before { content: unquote(\"\\\"#{ $fa-var-map }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting:before { content: unquote(\"\\\"#{ $fa-var-comment-dots }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-commenting-o:before { content: unquote(\"\\\"#{ $fa-var-comment-dots }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-houzz {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vimeo:before { content: unquote(\"\\\"#{ $fa-var-vimeo-v }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-black-tie {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-fonticons {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-reddit-alien {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-edge {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-credit-card-alt:before { content: unquote(\"\\\"#{ $fa-var-credit-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-codiepie {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-modx {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-fort-awesome {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-usb {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-product-hunt {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-mixcloud {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-scribd {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pause-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pause-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-pause }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-stop-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-stop }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bluetooth {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bluetooth-b {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-gitlab {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wpbeginner {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wpforms {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-envira {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wheelchair-alt {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wheelchair-alt:before { content: unquote(\"\\\"#{ $fa-var-accessible-icon }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-question-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-question }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-volume-control-phone:before { content: unquote(\"\\\"#{ $fa-var-phone-volume }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-asl-interpreting:before { content: unquote(\"\\\"#{ $fa-var-hands-asl-interpreting }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-deafness:before { content: unquote(\"\\\"#{ $fa-var-ear-deaf }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-hard-of-hearing:before { content: unquote(\"\\\"#{ $fa-var-ear-deaf }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-glide {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-glide-g {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-signing:before { content: unquote(\"\\\"#{ $fa-var-hands }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-viadeo-square:before { content: unquote(\"\\\"#{ $fa-var-square-viadeo }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-ghost {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-ghost:before { content: unquote(\"\\\"#{ $fa-var-snapchat }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snapchat-square:before { content: unquote(\"\\\"#{ $fa-var-square-snapchat }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-pied-piper {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-first-order {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-yoast {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-themeisle {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-official {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-official:before { content: unquote(\"\\\"#{ $fa-var-google-plus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-google-plus-circle:before { content: unquote(\"\\\"#{ $fa-var-google-plus }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-font-awesome {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-fa {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-fa:before { content: unquote(\"\\\"#{ $fa-var-font-awesome }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-handshake-o:before { content: unquote(\"\\\"#{ $fa-var-handshake }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-envelope-open-o:before { content: unquote(\"\\\"#{ $fa-var-envelope-open }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-linode {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-address-book-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-address-book-o:before { content: unquote(\"\\\"#{ $fa-var-address-book }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard:before { content: unquote(\"\\\"#{ $fa-var-address-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-address-card-o:before { content: unquote(\"\\\"#{ $fa-var-address-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-vcard-o:before { content: unquote(\"\\\"#{ $fa-var-address-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-user-circle-o:before { content: unquote(\"\\\"#{ $fa-var-circle-user }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-user-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-user-o:before { content: unquote(\"\\\"#{ $fa-var-user }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-id-badge {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license:before { content: unquote(\"\\\"#{ $fa-var-id-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-id-card-o:before { content: unquote(\"\\\"#{ $fa-var-id-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-drivers-license-o:before { content: unquote(\"\\\"#{ $fa-var-id-card }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-quora {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-free-code-camp {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-telegram {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-4:before { content: unquote(\"\\\"#{ $fa-var-temperature-full }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer:before { content: unquote(\"\\\"#{ $fa-var-temperature-full }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-3:before { content: unquote(\"\\\"#{ $fa-var-temperature-three-quarters }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-2:before { content: unquote(\"\\\"#{ $fa-var-temperature-half }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-1:before { content: unquote(\"\\\"#{ $fa-var-temperature-quarter }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-thermometer-0:before { content: unquote(\"\\\"#{ $fa-var-temperature-empty }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bathtub:before { content: unquote(\"\\\"#{ $fa-var-bath }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-s15:before { content: unquote(\"\\\"#{ $fa-var-bath }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-window-maximize {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-window-restore {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle:before { content: unquote(\"\\\"#{ $fa-var-rectangle-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-window-close-o:before { content: unquote(\"\\\"#{ $fa-var-rectangle-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-times-rectangle-o:before { content: unquote(\"\\\"#{ $fa-var-rectangle-xmark }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-bandcamp {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-grav {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-etsy {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-imdb {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-ravelry {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-eercast {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-eercast:before { content: unquote(\"\\\"#{ $fa-var-sellcast }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o {\n  font-family: 'Font Awesome 6 Free';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-snowflake-o:before { content: unquote(\"\\\"#{ $fa-var-snowflake }\\\"\"); }\n.#{$fa-css-prefix}.#{$fa-css-prefix}-superpowers {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-wpexplorer {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n.#{$fa-css-prefix}.#{$fa-css-prefix}-meetup {\n  font-family: 'Font Awesome 6 Brands';\n  font-weight: 400;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_sizing.scss",
    "content": "// sizing icons\n// -------------------------\n\n// literal magnification scale\n@for $i from 1 through 10 {\n  .#{$fa-css-prefix}-#{$i}x {\n    font-size: $i * 1em;\n  }\n}\n\n// step-based scale (with alignment)\n@each $size, $value in $fa-sizes {\n  .#{$fa-css-prefix}-#{$size} {\n     @include fa-size($value);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_stacked.scss",
    "content": "// stacking icons\n// -------------------------\n\n.#{$fa-css-prefix}-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: $fa-stack-vertical-align;\n  width: $fa-stack-width;\n}\n\n.#{$fa-css-prefix}-stack-1x,\n.#{$fa-css-prefix}-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%;\n  z-index: var(--#{$fa-css-prefix}-stack-z-index, #{$fa-stack-z-index});\n}\n\n.#{$fa-css-prefix}-stack-1x {\n  line-height: inherit;\n}\n\n.#{$fa-css-prefix}-stack-2x {\n  font-size: 2em;\n}\n\n.#{$fa-css-prefix}-inverse {\n  color: var(--#{$fa-css-prefix}-inverse, #{$fa-inverse});\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/_variables.scss",
    "content": "// variables\n// --------------------------\n\n$fa-css-prefix          : fa !default;\n$fa-style               : 900 !default;\n$fa-style-family        : \"Font Awesome 6 Free\" !default;\n\n$fa-display             : inline-block !default;\n\n$fa-fw-width            : fa-divide(20em, 16) !default;\n$fa-inverse             : #fff !default;\n\n$fa-border-color        : #eee !default;\n$fa-border-padding      : .2em .25em .15em !default;\n$fa-border-radius       : .1em !default;\n$fa-border-style        : solid !default;\n$fa-border-width        : .08em !default;\n\n$fa-size-scale-2xs      : 10 !default;\n$fa-size-scale-xs       : 12 !default;\n$fa-size-scale-sm       : 14 !default;\n$fa-size-scale-base     : 16 !default;\n$fa-size-scale-lg       : 20 !default;\n$fa-size-scale-xl       : 24 !default;\n$fa-size-scale-2xl      : 32 !default;\n\n$fa-sizes: (\n  \"2xs\"                 : $fa-size-scale-2xs,\n  \"xs\"                  : $fa-size-scale-xs,\n  \"sm\"                  : $fa-size-scale-sm,\n  \"lg\"                  : $fa-size-scale-lg,\n  \"xl\"                  : $fa-size-scale-xl,\n  \"2xl\"                 : $fa-size-scale-2xl\n) !default;\n\n$fa-li-width            : 2em !default;\n$fa-li-margin           : $fa-li-width * fa-divide(5, 4) !default;\n\n$fa-pull-margin         : .3em !default;\n\n$fa-primary-opacity     : 1 !default;\n$fa-secondary-opacity   : .4 !default;\n\n$fa-stack-vertical-align: middle !default;\n$fa-stack-width         : ($fa-fw-width * 2) !default;\n$fa-stack-z-index       : auto !default;\n\n$fa-font-display        : block !default;\n$fa-font-path           : \"../webfonts\" !default;\n\n$fa-var-0: \\30;\n$fa-var-1: \\31;\n$fa-var-2: \\32;\n$fa-var-3: \\33;\n$fa-var-4: \\34;\n$fa-var-5: \\35;\n$fa-var-6: \\36;\n$fa-var-7: \\37;\n$fa-var-8: \\38;\n$fa-var-9: \\39;\n$fa-var-fill-drip: \\f576;\n$fa-var-arrows-to-circle: \\e4bd;\n$fa-var-circle-chevron-right: \\f138;\n$fa-var-chevron-circle-right: \\f138;\n$fa-var-at: \\40;\n$fa-var-trash-can: \\f2ed;\n$fa-var-trash-alt: \\f2ed;\n$fa-var-text-height: \\f034;\n$fa-var-user-xmark: \\f235;\n$fa-var-user-times: \\f235;\n$fa-var-stethoscope: \\f0f1;\n$fa-var-message: \\f27a;\n$fa-var-comment-alt: \\f27a;\n$fa-var-info: \\f129;\n$fa-var-down-left-and-up-right-to-center: \\f422;\n$fa-var-compress-alt: \\f422;\n$fa-var-explosion: \\e4e9;\n$fa-var-file-lines: \\f15c;\n$fa-var-file-alt: \\f15c;\n$fa-var-file-text: \\f15c;\n$fa-var-wave-square: \\f83e;\n$fa-var-ring: \\f70b;\n$fa-var-building-un: \\e4d9;\n$fa-var-dice-three: \\f527;\n$fa-var-calendar-days: \\f073;\n$fa-var-calendar-alt: \\f073;\n$fa-var-anchor-circle-check: \\e4aa;\n$fa-var-building-circle-arrow-right: \\e4d1;\n$fa-var-volleyball: \\f45f;\n$fa-var-volleyball-ball: \\f45f;\n$fa-var-arrows-up-to-line: \\e4c2;\n$fa-var-sort-down: \\f0dd;\n$fa-var-sort-desc: \\f0dd;\n$fa-var-circle-minus: \\f056;\n$fa-var-minus-circle: \\f056;\n$fa-var-door-open: \\f52b;\n$fa-var-right-from-bracket: \\f2f5;\n$fa-var-sign-out-alt: \\f2f5;\n$fa-var-atom: \\f5d2;\n$fa-var-soap: \\e06e;\n$fa-var-icons: \\f86d;\n$fa-var-heart-music-camera-bolt: \\f86d;\n$fa-var-microphone-lines-slash: \\f539;\n$fa-var-microphone-alt-slash: \\f539;\n$fa-var-bridge-circle-check: \\e4c9;\n$fa-var-pump-medical: \\e06a;\n$fa-var-fingerprint: \\f577;\n$fa-var-hand-point-right: \\f0a4;\n$fa-var-magnifying-glass-location: \\f689;\n$fa-var-search-location: \\f689;\n$fa-var-forward-step: \\f051;\n$fa-var-step-forward: \\f051;\n$fa-var-face-smile-beam: \\f5b8;\n$fa-var-smile-beam: \\f5b8;\n$fa-var-flag-checkered: \\f11e;\n$fa-var-football: \\f44e;\n$fa-var-football-ball: \\f44e;\n$fa-var-school-circle-exclamation: \\e56c;\n$fa-var-crop: \\f125;\n$fa-var-angles-down: \\f103;\n$fa-var-angle-double-down: \\f103;\n$fa-var-users-rectangle: \\e594;\n$fa-var-people-roof: \\e537;\n$fa-var-people-line: \\e534;\n$fa-var-beer-mug-empty: \\f0fc;\n$fa-var-beer: \\f0fc;\n$fa-var-diagram-predecessor: \\e477;\n$fa-var-arrow-up-long: \\f176;\n$fa-var-long-arrow-up: \\f176;\n$fa-var-fire-flame-simple: \\f46a;\n$fa-var-burn: \\f46a;\n$fa-var-person: \\f183;\n$fa-var-male: \\f183;\n$fa-var-laptop: \\f109;\n$fa-var-file-csv: \\f6dd;\n$fa-var-menorah: \\f676;\n$fa-var-truck-plane: \\e58f;\n$fa-var-record-vinyl: \\f8d9;\n$fa-var-face-grin-stars: \\f587;\n$fa-var-grin-stars: \\f587;\n$fa-var-bong: \\f55c;\n$fa-var-spaghetti-monster-flying: \\f67b;\n$fa-var-pastafarianism: \\f67b;\n$fa-var-arrow-down-up-across-line: \\e4af;\n$fa-var-spoon: \\f2e5;\n$fa-var-utensil-spoon: \\f2e5;\n$fa-var-jar-wheat: \\e517;\n$fa-var-envelopes-bulk: \\f674;\n$fa-var-mail-bulk: \\f674;\n$fa-var-file-circle-exclamation: \\e4eb;\n$fa-var-circle-h: \\f47e;\n$fa-var-hospital-symbol: \\f47e;\n$fa-var-pager: \\f815;\n$fa-var-address-book: \\f2b9;\n$fa-var-contact-book: \\f2b9;\n$fa-var-strikethrough: \\f0cc;\n$fa-var-k: \\4b;\n$fa-var-landmark-flag: \\e51c;\n$fa-var-pencil: \\f303;\n$fa-var-pencil-alt: \\f303;\n$fa-var-backward: \\f04a;\n$fa-var-caret-right: \\f0da;\n$fa-var-comments: \\f086;\n$fa-var-paste: \\f0ea;\n$fa-var-file-clipboard: \\f0ea;\n$fa-var-code-pull-request: \\e13c;\n$fa-var-clipboard-list: \\f46d;\n$fa-var-truck-ramp-box: \\f4de;\n$fa-var-truck-loading: \\f4de;\n$fa-var-user-check: \\f4fc;\n$fa-var-vial-virus: \\e597;\n$fa-var-sheet-plastic: \\e571;\n$fa-var-blog: \\f781;\n$fa-var-user-ninja: \\f504;\n$fa-var-person-arrow-up-from-line: \\e539;\n$fa-var-scroll-torah: \\f6a0;\n$fa-var-torah: \\f6a0;\n$fa-var-broom-ball: \\f458;\n$fa-var-quidditch: \\f458;\n$fa-var-quidditch-broom-ball: \\f458;\n$fa-var-toggle-off: \\f204;\n$fa-var-box-archive: \\f187;\n$fa-var-archive: \\f187;\n$fa-var-person-drowning: \\e545;\n$fa-var-arrow-down-9-1: \\f886;\n$fa-var-sort-numeric-desc: \\f886;\n$fa-var-sort-numeric-down-alt: \\f886;\n$fa-var-face-grin-tongue-squint: \\f58a;\n$fa-var-grin-tongue-squint: \\f58a;\n$fa-var-spray-can: \\f5bd;\n$fa-var-truck-monster: \\f63b;\n$fa-var-w: \\57;\n$fa-var-earth-africa: \\f57c;\n$fa-var-globe-africa: \\f57c;\n$fa-var-rainbow: \\f75b;\n$fa-var-circle-notch: \\f1ce;\n$fa-var-tablet-screen-button: \\f3fa;\n$fa-var-tablet-alt: \\f3fa;\n$fa-var-paw: \\f1b0;\n$fa-var-cloud: \\f0c2;\n$fa-var-trowel-bricks: \\e58a;\n$fa-var-face-flushed: \\f579;\n$fa-var-flushed: \\f579;\n$fa-var-hospital-user: \\f80d;\n$fa-var-tent-arrow-left-right: \\e57f;\n$fa-var-gavel: \\f0e3;\n$fa-var-legal: \\f0e3;\n$fa-var-binoculars: \\f1e5;\n$fa-var-microphone-slash: \\f131;\n$fa-var-box-tissue: \\e05b;\n$fa-var-motorcycle: \\f21c;\n$fa-var-bell-concierge: \\f562;\n$fa-var-concierge-bell: \\f562;\n$fa-var-pen-ruler: \\f5ae;\n$fa-var-pencil-ruler: \\f5ae;\n$fa-var-people-arrows: \\e068;\n$fa-var-people-arrows-left-right: \\e068;\n$fa-var-mars-and-venus-burst: \\e523;\n$fa-var-square-caret-right: \\f152;\n$fa-var-caret-square-right: \\f152;\n$fa-var-scissors: \\f0c4;\n$fa-var-cut: \\f0c4;\n$fa-var-sun-plant-wilt: \\e57a;\n$fa-var-toilets-portable: \\e584;\n$fa-var-hockey-puck: \\f453;\n$fa-var-table: \\f0ce;\n$fa-var-magnifying-glass-arrow-right: \\e521;\n$fa-var-tachograph-digital: \\f566;\n$fa-var-digital-tachograph: \\f566;\n$fa-var-users-slash: \\e073;\n$fa-var-clover: \\e139;\n$fa-var-reply: \\f3e5;\n$fa-var-mail-reply: \\f3e5;\n$fa-var-star-and-crescent: \\f699;\n$fa-var-house-fire: \\e50c;\n$fa-var-square-minus: \\f146;\n$fa-var-minus-square: \\f146;\n$fa-var-helicopter: \\f533;\n$fa-var-compass: \\f14e;\n$fa-var-square-caret-down: \\f150;\n$fa-var-caret-square-down: \\f150;\n$fa-var-file-circle-question: \\e4ef;\n$fa-var-laptop-code: \\f5fc;\n$fa-var-swatchbook: \\f5c3;\n$fa-var-prescription-bottle: \\f485;\n$fa-var-bars: \\f0c9;\n$fa-var-navicon: \\f0c9;\n$fa-var-people-group: \\e533;\n$fa-var-hourglass-end: \\f253;\n$fa-var-hourglass-3: \\f253;\n$fa-var-heart-crack: \\f7a9;\n$fa-var-heart-broken: \\f7a9;\n$fa-var-square-up-right: \\f360;\n$fa-var-external-link-square-alt: \\f360;\n$fa-var-face-kiss-beam: \\f597;\n$fa-var-kiss-beam: \\f597;\n$fa-var-film: \\f008;\n$fa-var-ruler-horizontal: \\f547;\n$fa-var-people-robbery: \\e536;\n$fa-var-lightbulb: \\f0eb;\n$fa-var-caret-left: \\f0d9;\n$fa-var-circle-exclamation: \\f06a;\n$fa-var-exclamation-circle: \\f06a;\n$fa-var-school-circle-xmark: \\e56d;\n$fa-var-arrow-right-from-bracket: \\f08b;\n$fa-var-sign-out: \\f08b;\n$fa-var-circle-chevron-down: \\f13a;\n$fa-var-chevron-circle-down: \\f13a;\n$fa-var-unlock-keyhole: \\f13e;\n$fa-var-unlock-alt: \\f13e;\n$fa-var-cloud-showers-heavy: \\f740;\n$fa-var-headphones-simple: \\f58f;\n$fa-var-headphones-alt: \\f58f;\n$fa-var-sitemap: \\f0e8;\n$fa-var-circle-dollar-to-slot: \\f4b9;\n$fa-var-donate: \\f4b9;\n$fa-var-memory: \\f538;\n$fa-var-road-spikes: \\e568;\n$fa-var-fire-burner: \\e4f1;\n$fa-var-flag: \\f024;\n$fa-var-hanukiah: \\f6e6;\n$fa-var-feather: \\f52d;\n$fa-var-volume-low: \\f027;\n$fa-var-volume-down: \\f027;\n$fa-var-comment-slash: \\f4b3;\n$fa-var-cloud-sun-rain: \\f743;\n$fa-var-compress: \\f066;\n$fa-var-wheat-awn: \\e2cd;\n$fa-var-wheat-alt: \\e2cd;\n$fa-var-ankh: \\f644;\n$fa-var-hands-holding-child: \\e4fa;\n$fa-var-asterisk: \\2a;\n$fa-var-square-check: \\f14a;\n$fa-var-check-square: \\f14a;\n$fa-var-peseta-sign: \\e221;\n$fa-var-heading: \\f1dc;\n$fa-var-header: \\f1dc;\n$fa-var-ghost: \\f6e2;\n$fa-var-list: \\f03a;\n$fa-var-list-squares: \\f03a;\n$fa-var-square-phone-flip: \\f87b;\n$fa-var-phone-square-alt: \\f87b;\n$fa-var-cart-plus: \\f217;\n$fa-var-gamepad: \\f11b;\n$fa-var-circle-dot: \\f192;\n$fa-var-dot-circle: \\f192;\n$fa-var-face-dizzy: \\f567;\n$fa-var-dizzy: \\f567;\n$fa-var-egg: \\f7fb;\n$fa-var-house-medical-circle-xmark: \\e513;\n$fa-var-campground: \\f6bb;\n$fa-var-folder-plus: \\f65e;\n$fa-var-futbol: \\f1e3;\n$fa-var-futbol-ball: \\f1e3;\n$fa-var-soccer-ball: \\f1e3;\n$fa-var-paintbrush: \\f1fc;\n$fa-var-paint-brush: \\f1fc;\n$fa-var-lock: \\f023;\n$fa-var-gas-pump: \\f52f;\n$fa-var-hot-tub-person: \\f593;\n$fa-var-hot-tub: \\f593;\n$fa-var-map-location: \\f59f;\n$fa-var-map-marked: \\f59f;\n$fa-var-house-flood-water: \\e50e;\n$fa-var-tree: \\f1bb;\n$fa-var-bridge-lock: \\e4cc;\n$fa-var-sack-dollar: \\f81d;\n$fa-var-pen-to-square: \\f044;\n$fa-var-edit: \\f044;\n$fa-var-car-side: \\f5e4;\n$fa-var-share-nodes: \\f1e0;\n$fa-var-share-alt: \\f1e0;\n$fa-var-heart-circle-minus: \\e4ff;\n$fa-var-hourglass-half: \\f252;\n$fa-var-hourglass-2: \\f252;\n$fa-var-microscope: \\f610;\n$fa-var-sink: \\e06d;\n$fa-var-bag-shopping: \\f290;\n$fa-var-shopping-bag: \\f290;\n$fa-var-arrow-down-z-a: \\f881;\n$fa-var-sort-alpha-desc: \\f881;\n$fa-var-sort-alpha-down-alt: \\f881;\n$fa-var-mitten: \\f7b5;\n$fa-var-person-rays: \\e54d;\n$fa-var-users: \\f0c0;\n$fa-var-eye-slash: \\f070;\n$fa-var-flask-vial: \\e4f3;\n$fa-var-hand: \\f256;\n$fa-var-hand-paper: \\f256;\n$fa-var-om: \\f679;\n$fa-var-worm: \\e599;\n$fa-var-house-circle-xmark: \\e50b;\n$fa-var-plug: \\f1e6;\n$fa-var-chevron-up: \\f077;\n$fa-var-hand-spock: \\f259;\n$fa-var-stopwatch: \\f2f2;\n$fa-var-face-kiss: \\f596;\n$fa-var-kiss: \\f596;\n$fa-var-bridge-circle-xmark: \\e4cb;\n$fa-var-face-grin-tongue: \\f589;\n$fa-var-grin-tongue: \\f589;\n$fa-var-chess-bishop: \\f43a;\n$fa-var-face-grin-wink: \\f58c;\n$fa-var-grin-wink: \\f58c;\n$fa-var-ear-deaf: \\f2a4;\n$fa-var-deaf: \\f2a4;\n$fa-var-deafness: \\f2a4;\n$fa-var-hard-of-hearing: \\f2a4;\n$fa-var-road-circle-check: \\e564;\n$fa-var-dice-five: \\f523;\n$fa-var-square-rss: \\f143;\n$fa-var-rss-square: \\f143;\n$fa-var-land-mine-on: \\e51b;\n$fa-var-i-cursor: \\f246;\n$fa-var-stamp: \\f5bf;\n$fa-var-stairs: \\e289;\n$fa-var-i: \\49;\n$fa-var-hryvnia-sign: \\f6f2;\n$fa-var-hryvnia: \\f6f2;\n$fa-var-pills: \\f484;\n$fa-var-face-grin-wide: \\f581;\n$fa-var-grin-alt: \\f581;\n$fa-var-tooth: \\f5c9;\n$fa-var-v: \\56;\n$fa-var-bangladeshi-taka-sign: \\e2e6;\n$fa-var-bicycle: \\f206;\n$fa-var-staff-snake: \\e579;\n$fa-var-rod-asclepius: \\e579;\n$fa-var-rod-snake: \\e579;\n$fa-var-staff-aesculapius: \\e579;\n$fa-var-head-side-cough-slash: \\e062;\n$fa-var-truck-medical: \\f0f9;\n$fa-var-ambulance: \\f0f9;\n$fa-var-wheat-awn-circle-exclamation: \\e598;\n$fa-var-snowman: \\f7d0;\n$fa-var-mortar-pestle: \\f5a7;\n$fa-var-road-barrier: \\e562;\n$fa-var-school: \\f549;\n$fa-var-igloo: \\f7ae;\n$fa-var-joint: \\f595;\n$fa-var-angle-right: \\f105;\n$fa-var-horse: \\f6f0;\n$fa-var-q: \\51;\n$fa-var-g: \\47;\n$fa-var-notes-medical: \\f481;\n$fa-var-temperature-half: \\f2c9;\n$fa-var-temperature-2: \\f2c9;\n$fa-var-thermometer-2: \\f2c9;\n$fa-var-thermometer-half: \\f2c9;\n$fa-var-dong-sign: \\e169;\n$fa-var-capsules: \\f46b;\n$fa-var-poo-storm: \\f75a;\n$fa-var-poo-bolt: \\f75a;\n$fa-var-face-frown-open: \\f57a;\n$fa-var-frown-open: \\f57a;\n$fa-var-hand-point-up: \\f0a6;\n$fa-var-money-bill: \\f0d6;\n$fa-var-bookmark: \\f02e;\n$fa-var-align-justify: \\f039;\n$fa-var-umbrella-beach: \\f5ca;\n$fa-var-helmet-un: \\e503;\n$fa-var-bullseye: \\f140;\n$fa-var-bacon: \\f7e5;\n$fa-var-hand-point-down: \\f0a7;\n$fa-var-arrow-up-from-bracket: \\e09a;\n$fa-var-folder: \\f07b;\n$fa-var-folder-blank: \\f07b;\n$fa-var-file-waveform: \\f478;\n$fa-var-file-medical-alt: \\f478;\n$fa-var-radiation: \\f7b9;\n$fa-var-chart-simple: \\e473;\n$fa-var-mars-stroke: \\f229;\n$fa-var-vial: \\f492;\n$fa-var-gauge: \\f624;\n$fa-var-dashboard: \\f624;\n$fa-var-gauge-med: \\f624;\n$fa-var-tachometer-alt-average: \\f624;\n$fa-var-wand-magic-sparkles: \\e2ca;\n$fa-var-magic-wand-sparkles: \\e2ca;\n$fa-var-e: \\45;\n$fa-var-pen-clip: \\f305;\n$fa-var-pen-alt: \\f305;\n$fa-var-bridge-circle-exclamation: \\e4ca;\n$fa-var-user: \\f007;\n$fa-var-school-circle-check: \\e56b;\n$fa-var-dumpster: \\f793;\n$fa-var-van-shuttle: \\f5b6;\n$fa-var-shuttle-van: \\f5b6;\n$fa-var-building-user: \\e4da;\n$fa-var-square-caret-left: \\f191;\n$fa-var-caret-square-left: \\f191;\n$fa-var-highlighter: \\f591;\n$fa-var-key: \\f084;\n$fa-var-bullhorn: \\f0a1;\n$fa-var-globe: \\f0ac;\n$fa-var-synagogue: \\f69b;\n$fa-var-person-half-dress: \\e548;\n$fa-var-road-bridge: \\e563;\n$fa-var-location-arrow: \\f124;\n$fa-var-c: \\43;\n$fa-var-tablet-button: \\f10a;\n$fa-var-building-lock: \\e4d6;\n$fa-var-pizza-slice: \\f818;\n$fa-var-money-bill-wave: \\f53a;\n$fa-var-chart-area: \\f1fe;\n$fa-var-area-chart: \\f1fe;\n$fa-var-house-flag: \\e50d;\n$fa-var-person-circle-minus: \\e540;\n$fa-var-ban: \\f05e;\n$fa-var-cancel: \\f05e;\n$fa-var-camera-rotate: \\e0d8;\n$fa-var-spray-can-sparkles: \\f5d0;\n$fa-var-air-freshener: \\f5d0;\n$fa-var-star: \\f005;\n$fa-var-repeat: \\f363;\n$fa-var-cross: \\f654;\n$fa-var-box: \\f466;\n$fa-var-venus-mars: \\f228;\n$fa-var-arrow-pointer: \\f245;\n$fa-var-mouse-pointer: \\f245;\n$fa-var-maximize: \\f31e;\n$fa-var-expand-arrows-alt: \\f31e;\n$fa-var-charging-station: \\f5e7;\n$fa-var-shapes: \\f61f;\n$fa-var-triangle-circle-square: \\f61f;\n$fa-var-shuffle: \\f074;\n$fa-var-random: \\f074;\n$fa-var-person-running: \\f70c;\n$fa-var-running: \\f70c;\n$fa-var-mobile-retro: \\e527;\n$fa-var-grip-lines-vertical: \\f7a5;\n$fa-var-spider: \\f717;\n$fa-var-hands-bound: \\e4f9;\n$fa-var-file-invoice-dollar: \\f571;\n$fa-var-plane-circle-exclamation: \\e556;\n$fa-var-x-ray: \\f497;\n$fa-var-spell-check: \\f891;\n$fa-var-slash: \\f715;\n$fa-var-computer-mouse: \\f8cc;\n$fa-var-mouse: \\f8cc;\n$fa-var-arrow-right-to-bracket: \\f090;\n$fa-var-sign-in: \\f090;\n$fa-var-shop-slash: \\e070;\n$fa-var-store-alt-slash: \\e070;\n$fa-var-server: \\f233;\n$fa-var-virus-covid-slash: \\e4a9;\n$fa-var-shop-lock: \\e4a5;\n$fa-var-hourglass-start: \\f251;\n$fa-var-hourglass-1: \\f251;\n$fa-var-blender-phone: \\f6b6;\n$fa-var-building-wheat: \\e4db;\n$fa-var-person-breastfeeding: \\e53a;\n$fa-var-right-to-bracket: \\f2f6;\n$fa-var-sign-in-alt: \\f2f6;\n$fa-var-venus: \\f221;\n$fa-var-passport: \\f5ab;\n$fa-var-heart-pulse: \\f21e;\n$fa-var-heartbeat: \\f21e;\n$fa-var-people-carry-box: \\f4ce;\n$fa-var-people-carry: \\f4ce;\n$fa-var-temperature-high: \\f769;\n$fa-var-microchip: \\f2db;\n$fa-var-crown: \\f521;\n$fa-var-weight-hanging: \\f5cd;\n$fa-var-xmarks-lines: \\e59a;\n$fa-var-file-prescription: \\f572;\n$fa-var-weight-scale: \\f496;\n$fa-var-weight: \\f496;\n$fa-var-user-group: \\f500;\n$fa-var-user-friends: \\f500;\n$fa-var-arrow-up-a-z: \\f15e;\n$fa-var-sort-alpha-up: \\f15e;\n$fa-var-chess-knight: \\f441;\n$fa-var-face-laugh-squint: \\f59b;\n$fa-var-laugh-squint: \\f59b;\n$fa-var-wheelchair: \\f193;\n$fa-var-circle-arrow-up: \\f0aa;\n$fa-var-arrow-circle-up: \\f0aa;\n$fa-var-toggle-on: \\f205;\n$fa-var-person-walking: \\f554;\n$fa-var-walking: \\f554;\n$fa-var-l: \\4c;\n$fa-var-fire: \\f06d;\n$fa-var-bed-pulse: \\f487;\n$fa-var-procedures: \\f487;\n$fa-var-shuttle-space: \\f197;\n$fa-var-space-shuttle: \\f197;\n$fa-var-face-laugh: \\f599;\n$fa-var-laugh: \\f599;\n$fa-var-folder-open: \\f07c;\n$fa-var-heart-circle-plus: \\e500;\n$fa-var-code-fork: \\e13b;\n$fa-var-city: \\f64f;\n$fa-var-microphone-lines: \\f3c9;\n$fa-var-microphone-alt: \\f3c9;\n$fa-var-pepper-hot: \\f816;\n$fa-var-unlock: \\f09c;\n$fa-var-colon-sign: \\e140;\n$fa-var-headset: \\f590;\n$fa-var-store-slash: \\e071;\n$fa-var-road-circle-xmark: \\e566;\n$fa-var-user-minus: \\f503;\n$fa-var-mars-stroke-up: \\f22a;\n$fa-var-mars-stroke-v: \\f22a;\n$fa-var-champagne-glasses: \\f79f;\n$fa-var-glass-cheers: \\f79f;\n$fa-var-clipboard: \\f328;\n$fa-var-house-circle-exclamation: \\e50a;\n$fa-var-file-arrow-up: \\f574;\n$fa-var-file-upload: \\f574;\n$fa-var-wifi: \\f1eb;\n$fa-var-wifi-3: \\f1eb;\n$fa-var-wifi-strong: \\f1eb;\n$fa-var-bath: \\f2cd;\n$fa-var-bathtub: \\f2cd;\n$fa-var-underline: \\f0cd;\n$fa-var-user-pen: \\f4ff;\n$fa-var-user-edit: \\f4ff;\n$fa-var-signature: \\f5b7;\n$fa-var-stroopwafel: \\f551;\n$fa-var-bold: \\f032;\n$fa-var-anchor-lock: \\e4ad;\n$fa-var-building-ngo: \\e4d7;\n$fa-var-manat-sign: \\e1d5;\n$fa-var-not-equal: \\f53e;\n$fa-var-border-top-left: \\f853;\n$fa-var-border-style: \\f853;\n$fa-var-map-location-dot: \\f5a0;\n$fa-var-map-marked-alt: \\f5a0;\n$fa-var-jedi: \\f669;\n$fa-var-square-poll-vertical: \\f681;\n$fa-var-poll: \\f681;\n$fa-var-mug-hot: \\f7b6;\n$fa-var-car-battery: \\f5df;\n$fa-var-battery-car: \\f5df;\n$fa-var-gift: \\f06b;\n$fa-var-dice-two: \\f528;\n$fa-var-chess-queen: \\f445;\n$fa-var-glasses: \\f530;\n$fa-var-chess-board: \\f43c;\n$fa-var-building-circle-check: \\e4d2;\n$fa-var-person-chalkboard: \\e53d;\n$fa-var-mars-stroke-right: \\f22b;\n$fa-var-mars-stroke-h: \\f22b;\n$fa-var-hand-back-fist: \\f255;\n$fa-var-hand-rock: \\f255;\n$fa-var-square-caret-up: \\f151;\n$fa-var-caret-square-up: \\f151;\n$fa-var-cloud-showers-water: \\e4e4;\n$fa-var-chart-bar: \\f080;\n$fa-var-bar-chart: \\f080;\n$fa-var-hands-bubbles: \\e05e;\n$fa-var-hands-wash: \\e05e;\n$fa-var-less-than-equal: \\f537;\n$fa-var-train: \\f238;\n$fa-var-eye-low-vision: \\f2a8;\n$fa-var-low-vision: \\f2a8;\n$fa-var-crow: \\f520;\n$fa-var-sailboat: \\e445;\n$fa-var-window-restore: \\f2d2;\n$fa-var-square-plus: \\f0fe;\n$fa-var-plus-square: \\f0fe;\n$fa-var-torii-gate: \\f6a1;\n$fa-var-frog: \\f52e;\n$fa-var-bucket: \\e4cf;\n$fa-var-image: \\f03e;\n$fa-var-microphone: \\f130;\n$fa-var-cow: \\f6c8;\n$fa-var-caret-up: \\f0d8;\n$fa-var-screwdriver: \\f54a;\n$fa-var-folder-closed: \\e185;\n$fa-var-house-tsunami: \\e515;\n$fa-var-square-nfi: \\e576;\n$fa-var-arrow-up-from-ground-water: \\e4b5;\n$fa-var-martini-glass: \\f57b;\n$fa-var-glass-martini-alt: \\f57b;\n$fa-var-rotate-left: \\f2ea;\n$fa-var-rotate-back: \\f2ea;\n$fa-var-rotate-backward: \\f2ea;\n$fa-var-undo-alt: \\f2ea;\n$fa-var-table-columns: \\f0db;\n$fa-var-columns: \\f0db;\n$fa-var-lemon: \\f094;\n$fa-var-head-side-mask: \\e063;\n$fa-var-handshake: \\f2b5;\n$fa-var-gem: \\f3a5;\n$fa-var-dolly: \\f472;\n$fa-var-dolly-box: \\f472;\n$fa-var-smoking: \\f48d;\n$fa-var-minimize: \\f78c;\n$fa-var-compress-arrows-alt: \\f78c;\n$fa-var-monument: \\f5a6;\n$fa-var-snowplow: \\f7d2;\n$fa-var-angles-right: \\f101;\n$fa-var-angle-double-right: \\f101;\n$fa-var-cannabis: \\f55f;\n$fa-var-circle-play: \\f144;\n$fa-var-play-circle: \\f144;\n$fa-var-tablets: \\f490;\n$fa-var-ethernet: \\f796;\n$fa-var-euro-sign: \\f153;\n$fa-var-eur: \\f153;\n$fa-var-euro: \\f153;\n$fa-var-chair: \\f6c0;\n$fa-var-circle-check: \\f058;\n$fa-var-check-circle: \\f058;\n$fa-var-circle-stop: \\f28d;\n$fa-var-stop-circle: \\f28d;\n$fa-var-compass-drafting: \\f568;\n$fa-var-drafting-compass: \\f568;\n$fa-var-plate-wheat: \\e55a;\n$fa-var-icicles: \\f7ad;\n$fa-var-person-shelter: \\e54f;\n$fa-var-neuter: \\f22c;\n$fa-var-id-badge: \\f2c1;\n$fa-var-marker: \\f5a1;\n$fa-var-face-laugh-beam: \\f59a;\n$fa-var-laugh-beam: \\f59a;\n$fa-var-helicopter-symbol: \\e502;\n$fa-var-universal-access: \\f29a;\n$fa-var-circle-chevron-up: \\f139;\n$fa-var-chevron-circle-up: \\f139;\n$fa-var-lari-sign: \\e1c8;\n$fa-var-volcano: \\f770;\n$fa-var-person-walking-dashed-line-arrow-right: \\e553;\n$fa-var-sterling-sign: \\f154;\n$fa-var-gbp: \\f154;\n$fa-var-pound-sign: \\f154;\n$fa-var-viruses: \\e076;\n$fa-var-square-person-confined: \\e577;\n$fa-var-user-tie: \\f508;\n$fa-var-arrow-down-long: \\f175;\n$fa-var-long-arrow-down: \\f175;\n$fa-var-tent-arrow-down-to-line: \\e57e;\n$fa-var-certificate: \\f0a3;\n$fa-var-reply-all: \\f122;\n$fa-var-mail-reply-all: \\f122;\n$fa-var-suitcase: \\f0f2;\n$fa-var-person-skating: \\f7c5;\n$fa-var-skating: \\f7c5;\n$fa-var-filter-circle-dollar: \\f662;\n$fa-var-funnel-dollar: \\f662;\n$fa-var-camera-retro: \\f083;\n$fa-var-circle-arrow-down: \\f0ab;\n$fa-var-arrow-circle-down: \\f0ab;\n$fa-var-file-import: \\f56f;\n$fa-var-arrow-right-to-file: \\f56f;\n$fa-var-square-arrow-up-right: \\f14c;\n$fa-var-external-link-square: \\f14c;\n$fa-var-box-open: \\f49e;\n$fa-var-scroll: \\f70e;\n$fa-var-spa: \\f5bb;\n$fa-var-location-pin-lock: \\e51f;\n$fa-var-pause: \\f04c;\n$fa-var-hill-avalanche: \\e507;\n$fa-var-temperature-empty: \\f2cb;\n$fa-var-temperature-0: \\f2cb;\n$fa-var-thermometer-0: \\f2cb;\n$fa-var-thermometer-empty: \\f2cb;\n$fa-var-bomb: \\f1e2;\n$fa-var-registered: \\f25d;\n$fa-var-address-card: \\f2bb;\n$fa-var-contact-card: \\f2bb;\n$fa-var-vcard: \\f2bb;\n$fa-var-scale-unbalanced-flip: \\f516;\n$fa-var-balance-scale-right: \\f516;\n$fa-var-subscript: \\f12c;\n$fa-var-diamond-turn-right: \\f5eb;\n$fa-var-directions: \\f5eb;\n$fa-var-burst: \\e4dc;\n$fa-var-house-laptop: \\e066;\n$fa-var-laptop-house: \\e066;\n$fa-var-face-tired: \\f5c8;\n$fa-var-tired: \\f5c8;\n$fa-var-money-bills: \\e1f3;\n$fa-var-smog: \\f75f;\n$fa-var-crutch: \\f7f7;\n$fa-var-cloud-arrow-up: \\f0ee;\n$fa-var-cloud-upload: \\f0ee;\n$fa-var-cloud-upload-alt: \\f0ee;\n$fa-var-palette: \\f53f;\n$fa-var-arrows-turn-right: \\e4c0;\n$fa-var-vest: \\e085;\n$fa-var-ferry: \\e4ea;\n$fa-var-arrows-down-to-people: \\e4b9;\n$fa-var-seedling: \\f4d8;\n$fa-var-sprout: \\f4d8;\n$fa-var-left-right: \\f337;\n$fa-var-arrows-alt-h: \\f337;\n$fa-var-boxes-packing: \\e4c7;\n$fa-var-circle-arrow-left: \\f0a8;\n$fa-var-arrow-circle-left: \\f0a8;\n$fa-var-group-arrows-rotate: \\e4f6;\n$fa-var-bowl-food: \\e4c6;\n$fa-var-candy-cane: \\f786;\n$fa-var-arrow-down-wide-short: \\f160;\n$fa-var-sort-amount-asc: \\f160;\n$fa-var-sort-amount-down: \\f160;\n$fa-var-cloud-bolt: \\f76c;\n$fa-var-thunderstorm: \\f76c;\n$fa-var-text-slash: \\f87d;\n$fa-var-remove-format: \\f87d;\n$fa-var-face-smile-wink: \\f4da;\n$fa-var-smile-wink: \\f4da;\n$fa-var-file-word: \\f1c2;\n$fa-var-file-powerpoint: \\f1c4;\n$fa-var-arrows-left-right: \\f07e;\n$fa-var-arrows-h: \\f07e;\n$fa-var-house-lock: \\e510;\n$fa-var-cloud-arrow-down: \\f0ed;\n$fa-var-cloud-download: \\f0ed;\n$fa-var-cloud-download-alt: \\f0ed;\n$fa-var-children: \\e4e1;\n$fa-var-chalkboard: \\f51b;\n$fa-var-blackboard: \\f51b;\n$fa-var-user-large-slash: \\f4fa;\n$fa-var-user-alt-slash: \\f4fa;\n$fa-var-envelope-open: \\f2b6;\n$fa-var-handshake-simple-slash: \\e05f;\n$fa-var-handshake-alt-slash: \\e05f;\n$fa-var-mattress-pillow: \\e525;\n$fa-var-guarani-sign: \\e19a;\n$fa-var-arrows-rotate: \\f021;\n$fa-var-refresh: \\f021;\n$fa-var-sync: \\f021;\n$fa-var-fire-extinguisher: \\f134;\n$fa-var-cruzeiro-sign: \\e152;\n$fa-var-greater-than-equal: \\f532;\n$fa-var-shield-halved: \\f3ed;\n$fa-var-shield-alt: \\f3ed;\n$fa-var-book-atlas: \\f558;\n$fa-var-atlas: \\f558;\n$fa-var-virus: \\e074;\n$fa-var-envelope-circle-check: \\e4e8;\n$fa-var-layer-group: \\f5fd;\n$fa-var-arrows-to-dot: \\e4be;\n$fa-var-archway: \\f557;\n$fa-var-heart-circle-check: \\e4fd;\n$fa-var-house-chimney-crack: \\f6f1;\n$fa-var-house-damage: \\f6f1;\n$fa-var-file-zipper: \\f1c6;\n$fa-var-file-archive: \\f1c6;\n$fa-var-square: \\f0c8;\n$fa-var-martini-glass-empty: \\f000;\n$fa-var-glass-martini: \\f000;\n$fa-var-couch: \\f4b8;\n$fa-var-cedi-sign: \\e0df;\n$fa-var-italic: \\f033;\n$fa-var-table-cells-column-lock: \\e678;\n$fa-var-church: \\f51d;\n$fa-var-comments-dollar: \\f653;\n$fa-var-democrat: \\f747;\n$fa-var-z: \\5a;\n$fa-var-person-skiing: \\f7c9;\n$fa-var-skiing: \\f7c9;\n$fa-var-road-lock: \\e567;\n$fa-var-a: \\41;\n$fa-var-temperature-arrow-down: \\e03f;\n$fa-var-temperature-down: \\e03f;\n$fa-var-feather-pointed: \\f56b;\n$fa-var-feather-alt: \\f56b;\n$fa-var-p: \\50;\n$fa-var-snowflake: \\f2dc;\n$fa-var-newspaper: \\f1ea;\n$fa-var-rectangle-ad: \\f641;\n$fa-var-ad: \\f641;\n$fa-var-circle-arrow-right: \\f0a9;\n$fa-var-arrow-circle-right: \\f0a9;\n$fa-var-filter-circle-xmark: \\e17b;\n$fa-var-locust: \\e520;\n$fa-var-sort: \\f0dc;\n$fa-var-unsorted: \\f0dc;\n$fa-var-list-ol: \\f0cb;\n$fa-var-list-1-2: \\f0cb;\n$fa-var-list-numeric: \\f0cb;\n$fa-var-person-dress-burst: \\e544;\n$fa-var-money-check-dollar: \\f53d;\n$fa-var-money-check-alt: \\f53d;\n$fa-var-vector-square: \\f5cb;\n$fa-var-bread-slice: \\f7ec;\n$fa-var-language: \\f1ab;\n$fa-var-face-kiss-wink-heart: \\f598;\n$fa-var-kiss-wink-heart: \\f598;\n$fa-var-filter: \\f0b0;\n$fa-var-question: \\3f;\n$fa-var-file-signature: \\f573;\n$fa-var-up-down-left-right: \\f0b2;\n$fa-var-arrows-alt: \\f0b2;\n$fa-var-house-chimney-user: \\e065;\n$fa-var-hand-holding-heart: \\f4be;\n$fa-var-puzzle-piece: \\f12e;\n$fa-var-money-check: \\f53c;\n$fa-var-star-half-stroke: \\f5c0;\n$fa-var-star-half-alt: \\f5c0;\n$fa-var-code: \\f121;\n$fa-var-whiskey-glass: \\f7a0;\n$fa-var-glass-whiskey: \\f7a0;\n$fa-var-building-circle-exclamation: \\e4d3;\n$fa-var-magnifying-glass-chart: \\e522;\n$fa-var-arrow-up-right-from-square: \\f08e;\n$fa-var-external-link: \\f08e;\n$fa-var-cubes-stacked: \\e4e6;\n$fa-var-won-sign: \\f159;\n$fa-var-krw: \\f159;\n$fa-var-won: \\f159;\n$fa-var-virus-covid: \\e4a8;\n$fa-var-austral-sign: \\e0a9;\n$fa-var-f: \\46;\n$fa-var-leaf: \\f06c;\n$fa-var-road: \\f018;\n$fa-var-taxi: \\f1ba;\n$fa-var-cab: \\f1ba;\n$fa-var-person-circle-plus: \\e541;\n$fa-var-chart-pie: \\f200;\n$fa-var-pie-chart: \\f200;\n$fa-var-bolt-lightning: \\e0b7;\n$fa-var-sack-xmark: \\e56a;\n$fa-var-file-excel: \\f1c3;\n$fa-var-file-contract: \\f56c;\n$fa-var-fish-fins: \\e4f2;\n$fa-var-building-flag: \\e4d5;\n$fa-var-face-grin-beam: \\f582;\n$fa-var-grin-beam: \\f582;\n$fa-var-object-ungroup: \\f248;\n$fa-var-poop: \\f619;\n$fa-var-location-pin: \\f041;\n$fa-var-map-marker: \\f041;\n$fa-var-kaaba: \\f66b;\n$fa-var-toilet-paper: \\f71e;\n$fa-var-helmet-safety: \\f807;\n$fa-var-hard-hat: \\f807;\n$fa-var-hat-hard: \\f807;\n$fa-var-eject: \\f052;\n$fa-var-circle-right: \\f35a;\n$fa-var-arrow-alt-circle-right: \\f35a;\n$fa-var-plane-circle-check: \\e555;\n$fa-var-face-rolling-eyes: \\f5a5;\n$fa-var-meh-rolling-eyes: \\f5a5;\n$fa-var-object-group: \\f247;\n$fa-var-chart-line: \\f201;\n$fa-var-line-chart: \\f201;\n$fa-var-mask-ventilator: \\e524;\n$fa-var-arrow-right: \\f061;\n$fa-var-signs-post: \\f277;\n$fa-var-map-signs: \\f277;\n$fa-var-cash-register: \\f788;\n$fa-var-person-circle-question: \\e542;\n$fa-var-h: \\48;\n$fa-var-tarp: \\e57b;\n$fa-var-screwdriver-wrench: \\f7d9;\n$fa-var-tools: \\f7d9;\n$fa-var-arrows-to-eye: \\e4bf;\n$fa-var-plug-circle-bolt: \\e55b;\n$fa-var-heart: \\f004;\n$fa-var-mars-and-venus: \\f224;\n$fa-var-house-user: \\e1b0;\n$fa-var-home-user: \\e1b0;\n$fa-var-dumpster-fire: \\f794;\n$fa-var-house-crack: \\e3b1;\n$fa-var-martini-glass-citrus: \\f561;\n$fa-var-cocktail: \\f561;\n$fa-var-face-surprise: \\f5c2;\n$fa-var-surprise: \\f5c2;\n$fa-var-bottle-water: \\e4c5;\n$fa-var-circle-pause: \\f28b;\n$fa-var-pause-circle: \\f28b;\n$fa-var-toilet-paper-slash: \\e072;\n$fa-var-apple-whole: \\f5d1;\n$fa-var-apple-alt: \\f5d1;\n$fa-var-kitchen-set: \\e51a;\n$fa-var-r: \\52;\n$fa-var-temperature-quarter: \\f2ca;\n$fa-var-temperature-1: \\f2ca;\n$fa-var-thermometer-1: \\f2ca;\n$fa-var-thermometer-quarter: \\f2ca;\n$fa-var-cube: \\f1b2;\n$fa-var-bitcoin-sign: \\e0b4;\n$fa-var-shield-dog: \\e573;\n$fa-var-solar-panel: \\f5ba;\n$fa-var-lock-open: \\f3c1;\n$fa-var-elevator: \\e16d;\n$fa-var-money-bill-transfer: \\e528;\n$fa-var-money-bill-trend-up: \\e529;\n$fa-var-house-flood-water-circle-arrow-right: \\e50f;\n$fa-var-square-poll-horizontal: \\f682;\n$fa-var-poll-h: \\f682;\n$fa-var-circle: \\f111;\n$fa-var-backward-fast: \\f049;\n$fa-var-fast-backward: \\f049;\n$fa-var-recycle: \\f1b8;\n$fa-var-user-astronaut: \\f4fb;\n$fa-var-plane-slash: \\e069;\n$fa-var-trademark: \\f25c;\n$fa-var-basketball: \\f434;\n$fa-var-basketball-ball: \\f434;\n$fa-var-satellite-dish: \\f7c0;\n$fa-var-circle-up: \\f35b;\n$fa-var-arrow-alt-circle-up: \\f35b;\n$fa-var-mobile-screen-button: \\f3cd;\n$fa-var-mobile-alt: \\f3cd;\n$fa-var-volume-high: \\f028;\n$fa-var-volume-up: \\f028;\n$fa-var-users-rays: \\e593;\n$fa-var-wallet: \\f555;\n$fa-var-clipboard-check: \\f46c;\n$fa-var-file-audio: \\f1c7;\n$fa-var-burger: \\f805;\n$fa-var-hamburger: \\f805;\n$fa-var-wrench: \\f0ad;\n$fa-var-bugs: \\e4d0;\n$fa-var-rupee-sign: \\f156;\n$fa-var-rupee: \\f156;\n$fa-var-file-image: \\f1c5;\n$fa-var-circle-question: \\f059;\n$fa-var-question-circle: \\f059;\n$fa-var-plane-departure: \\f5b0;\n$fa-var-handshake-slash: \\e060;\n$fa-var-book-bookmark: \\e0bb;\n$fa-var-code-branch: \\f126;\n$fa-var-hat-cowboy: \\f8c0;\n$fa-var-bridge: \\e4c8;\n$fa-var-phone-flip: \\f879;\n$fa-var-phone-alt: \\f879;\n$fa-var-truck-front: \\e2b7;\n$fa-var-cat: \\f6be;\n$fa-var-anchor-circle-exclamation: \\e4ab;\n$fa-var-truck-field: \\e58d;\n$fa-var-route: \\f4d7;\n$fa-var-clipboard-question: \\e4e3;\n$fa-var-panorama: \\e209;\n$fa-var-comment-medical: \\f7f5;\n$fa-var-teeth-open: \\f62f;\n$fa-var-file-circle-minus: \\e4ed;\n$fa-var-tags: \\f02c;\n$fa-var-wine-glass: \\f4e3;\n$fa-var-forward-fast: \\f050;\n$fa-var-fast-forward: \\f050;\n$fa-var-face-meh-blank: \\f5a4;\n$fa-var-meh-blank: \\f5a4;\n$fa-var-square-parking: \\f540;\n$fa-var-parking: \\f540;\n$fa-var-house-signal: \\e012;\n$fa-var-bars-progress: \\f828;\n$fa-var-tasks-alt: \\f828;\n$fa-var-faucet-drip: \\e006;\n$fa-var-cart-flatbed: \\f474;\n$fa-var-dolly-flatbed: \\f474;\n$fa-var-ban-smoking: \\f54d;\n$fa-var-smoking-ban: \\f54d;\n$fa-var-terminal: \\f120;\n$fa-var-mobile-button: \\f10b;\n$fa-var-house-medical-flag: \\e514;\n$fa-var-basket-shopping: \\f291;\n$fa-var-shopping-basket: \\f291;\n$fa-var-tape: \\f4db;\n$fa-var-bus-simple: \\f55e;\n$fa-var-bus-alt: \\f55e;\n$fa-var-eye: \\f06e;\n$fa-var-face-sad-cry: \\f5b3;\n$fa-var-sad-cry: \\f5b3;\n$fa-var-audio-description: \\f29e;\n$fa-var-person-military-to-person: \\e54c;\n$fa-var-file-shield: \\e4f0;\n$fa-var-user-slash: \\f506;\n$fa-var-pen: \\f304;\n$fa-var-tower-observation: \\e586;\n$fa-var-file-code: \\f1c9;\n$fa-var-signal: \\f012;\n$fa-var-signal-5: \\f012;\n$fa-var-signal-perfect: \\f012;\n$fa-var-bus: \\f207;\n$fa-var-heart-circle-xmark: \\e501;\n$fa-var-house-chimney: \\e3af;\n$fa-var-home-lg: \\e3af;\n$fa-var-window-maximize: \\f2d0;\n$fa-var-face-frown: \\f119;\n$fa-var-frown: \\f119;\n$fa-var-prescription: \\f5b1;\n$fa-var-shop: \\f54f;\n$fa-var-store-alt: \\f54f;\n$fa-var-floppy-disk: \\f0c7;\n$fa-var-save: \\f0c7;\n$fa-var-vihara: \\f6a7;\n$fa-var-scale-unbalanced: \\f515;\n$fa-var-balance-scale-left: \\f515;\n$fa-var-sort-up: \\f0de;\n$fa-var-sort-asc: \\f0de;\n$fa-var-comment-dots: \\f4ad;\n$fa-var-commenting: \\f4ad;\n$fa-var-plant-wilt: \\e5aa;\n$fa-var-diamond: \\f219;\n$fa-var-face-grin-squint: \\f585;\n$fa-var-grin-squint: \\f585;\n$fa-var-hand-holding-dollar: \\f4c0;\n$fa-var-hand-holding-usd: \\f4c0;\n$fa-var-bacterium: \\e05a;\n$fa-var-hand-pointer: \\f25a;\n$fa-var-drum-steelpan: \\f56a;\n$fa-var-hand-scissors: \\f257;\n$fa-var-hands-praying: \\f684;\n$fa-var-praying-hands: \\f684;\n$fa-var-arrow-rotate-right: \\f01e;\n$fa-var-arrow-right-rotate: \\f01e;\n$fa-var-arrow-rotate-forward: \\f01e;\n$fa-var-redo: \\f01e;\n$fa-var-biohazard: \\f780;\n$fa-var-location-crosshairs: \\f601;\n$fa-var-location: \\f601;\n$fa-var-mars-double: \\f227;\n$fa-var-child-dress: \\e59c;\n$fa-var-users-between-lines: \\e591;\n$fa-var-lungs-virus: \\e067;\n$fa-var-face-grin-tears: \\f588;\n$fa-var-grin-tears: \\f588;\n$fa-var-phone: \\f095;\n$fa-var-calendar-xmark: \\f273;\n$fa-var-calendar-times: \\f273;\n$fa-var-child-reaching: \\e59d;\n$fa-var-head-side-virus: \\e064;\n$fa-var-user-gear: \\f4fe;\n$fa-var-user-cog: \\f4fe;\n$fa-var-arrow-up-1-9: \\f163;\n$fa-var-sort-numeric-up: \\f163;\n$fa-var-door-closed: \\f52a;\n$fa-var-shield-virus: \\e06c;\n$fa-var-dice-six: \\f526;\n$fa-var-mosquito-net: \\e52c;\n$fa-var-bridge-water: \\e4ce;\n$fa-var-person-booth: \\f756;\n$fa-var-text-width: \\f035;\n$fa-var-hat-wizard: \\f6e8;\n$fa-var-pen-fancy: \\f5ac;\n$fa-var-person-digging: \\f85e;\n$fa-var-digging: \\f85e;\n$fa-var-trash: \\f1f8;\n$fa-var-gauge-simple: \\f629;\n$fa-var-gauge-simple-med: \\f629;\n$fa-var-tachometer-average: \\f629;\n$fa-var-book-medical: \\f7e6;\n$fa-var-poo: \\f2fe;\n$fa-var-quote-right: \\f10e;\n$fa-var-quote-right-alt: \\f10e;\n$fa-var-shirt: \\f553;\n$fa-var-t-shirt: \\f553;\n$fa-var-tshirt: \\f553;\n$fa-var-cubes: \\f1b3;\n$fa-var-divide: \\f529;\n$fa-var-tenge-sign: \\f7d7;\n$fa-var-tenge: \\f7d7;\n$fa-var-headphones: \\f025;\n$fa-var-hands-holding: \\f4c2;\n$fa-var-hands-clapping: \\e1a8;\n$fa-var-republican: \\f75e;\n$fa-var-arrow-left: \\f060;\n$fa-var-person-circle-xmark: \\e543;\n$fa-var-ruler: \\f545;\n$fa-var-align-left: \\f036;\n$fa-var-dice-d6: \\f6d1;\n$fa-var-restroom: \\f7bd;\n$fa-var-j: \\4a;\n$fa-var-users-viewfinder: \\e595;\n$fa-var-file-video: \\f1c8;\n$fa-var-up-right-from-square: \\f35d;\n$fa-var-external-link-alt: \\f35d;\n$fa-var-table-cells: \\f00a;\n$fa-var-th: \\f00a;\n$fa-var-file-pdf: \\f1c1;\n$fa-var-book-bible: \\f647;\n$fa-var-bible: \\f647;\n$fa-var-o: \\4f;\n$fa-var-suitcase-medical: \\f0fa;\n$fa-var-medkit: \\f0fa;\n$fa-var-user-secret: \\f21b;\n$fa-var-otter: \\f700;\n$fa-var-person-dress: \\f182;\n$fa-var-female: \\f182;\n$fa-var-comment-dollar: \\f651;\n$fa-var-business-time: \\f64a;\n$fa-var-briefcase-clock: \\f64a;\n$fa-var-table-cells-large: \\f009;\n$fa-var-th-large: \\f009;\n$fa-var-book-tanakh: \\f827;\n$fa-var-tanakh: \\f827;\n$fa-var-phone-volume: \\f2a0;\n$fa-var-volume-control-phone: \\f2a0;\n$fa-var-hat-cowboy-side: \\f8c1;\n$fa-var-clipboard-user: \\f7f3;\n$fa-var-child: \\f1ae;\n$fa-var-lira-sign: \\f195;\n$fa-var-satellite: \\f7bf;\n$fa-var-plane-lock: \\e558;\n$fa-var-tag: \\f02b;\n$fa-var-comment: \\f075;\n$fa-var-cake-candles: \\f1fd;\n$fa-var-birthday-cake: \\f1fd;\n$fa-var-cake: \\f1fd;\n$fa-var-envelope: \\f0e0;\n$fa-var-angles-up: \\f102;\n$fa-var-angle-double-up: \\f102;\n$fa-var-paperclip: \\f0c6;\n$fa-var-arrow-right-to-city: \\e4b3;\n$fa-var-ribbon: \\f4d6;\n$fa-var-lungs: \\f604;\n$fa-var-arrow-up-9-1: \\f887;\n$fa-var-sort-numeric-up-alt: \\f887;\n$fa-var-litecoin-sign: \\e1d3;\n$fa-var-border-none: \\f850;\n$fa-var-circle-nodes: \\e4e2;\n$fa-var-parachute-box: \\f4cd;\n$fa-var-indent: \\f03c;\n$fa-var-truck-field-un: \\e58e;\n$fa-var-hourglass: \\f254;\n$fa-var-hourglass-empty: \\f254;\n$fa-var-mountain: \\f6fc;\n$fa-var-user-doctor: \\f0f0;\n$fa-var-user-md: \\f0f0;\n$fa-var-circle-info: \\f05a;\n$fa-var-info-circle: \\f05a;\n$fa-var-cloud-meatball: \\f73b;\n$fa-var-camera: \\f030;\n$fa-var-camera-alt: \\f030;\n$fa-var-square-virus: \\e578;\n$fa-var-meteor: \\f753;\n$fa-var-car-on: \\e4dd;\n$fa-var-sleigh: \\f7cc;\n$fa-var-arrow-down-1-9: \\f162;\n$fa-var-sort-numeric-asc: \\f162;\n$fa-var-sort-numeric-down: \\f162;\n$fa-var-hand-holding-droplet: \\f4c1;\n$fa-var-hand-holding-water: \\f4c1;\n$fa-var-water: \\f773;\n$fa-var-calendar-check: \\f274;\n$fa-var-braille: \\f2a1;\n$fa-var-prescription-bottle-medical: \\f486;\n$fa-var-prescription-bottle-alt: \\f486;\n$fa-var-landmark: \\f66f;\n$fa-var-truck: \\f0d1;\n$fa-var-crosshairs: \\f05b;\n$fa-var-person-cane: \\e53c;\n$fa-var-tent: \\e57d;\n$fa-var-vest-patches: \\e086;\n$fa-var-check-double: \\f560;\n$fa-var-arrow-down-a-z: \\f15d;\n$fa-var-sort-alpha-asc: \\f15d;\n$fa-var-sort-alpha-down: \\f15d;\n$fa-var-money-bill-wheat: \\e52a;\n$fa-var-cookie: \\f563;\n$fa-var-arrow-rotate-left: \\f0e2;\n$fa-var-arrow-left-rotate: \\f0e2;\n$fa-var-arrow-rotate-back: \\f0e2;\n$fa-var-arrow-rotate-backward: \\f0e2;\n$fa-var-undo: \\f0e2;\n$fa-var-hard-drive: \\f0a0;\n$fa-var-hdd: \\f0a0;\n$fa-var-face-grin-squint-tears: \\f586;\n$fa-var-grin-squint-tears: \\f586;\n$fa-var-dumbbell: \\f44b;\n$fa-var-rectangle-list: \\f022;\n$fa-var-list-alt: \\f022;\n$fa-var-tarp-droplet: \\e57c;\n$fa-var-house-medical-circle-check: \\e511;\n$fa-var-person-skiing-nordic: \\f7ca;\n$fa-var-skiing-nordic: \\f7ca;\n$fa-var-calendar-plus: \\f271;\n$fa-var-plane-arrival: \\f5af;\n$fa-var-circle-left: \\f359;\n$fa-var-arrow-alt-circle-left: \\f359;\n$fa-var-train-subway: \\f239;\n$fa-var-subway: \\f239;\n$fa-var-chart-gantt: \\e0e4;\n$fa-var-indian-rupee-sign: \\e1bc;\n$fa-var-indian-rupee: \\e1bc;\n$fa-var-inr: \\e1bc;\n$fa-var-crop-simple: \\f565;\n$fa-var-crop-alt: \\f565;\n$fa-var-money-bill-1: \\f3d1;\n$fa-var-money-bill-alt: \\f3d1;\n$fa-var-left-long: \\f30a;\n$fa-var-long-arrow-alt-left: \\f30a;\n$fa-var-dna: \\f471;\n$fa-var-virus-slash: \\e075;\n$fa-var-minus: \\f068;\n$fa-var-subtract: \\f068;\n$fa-var-chess: \\f439;\n$fa-var-arrow-left-long: \\f177;\n$fa-var-long-arrow-left: \\f177;\n$fa-var-plug-circle-check: \\e55c;\n$fa-var-street-view: \\f21d;\n$fa-var-franc-sign: \\e18f;\n$fa-var-volume-off: \\f026;\n$fa-var-hands-asl-interpreting: \\f2a3;\n$fa-var-american-sign-language-interpreting: \\f2a3;\n$fa-var-asl-interpreting: \\f2a3;\n$fa-var-hands-american-sign-language-interpreting: \\f2a3;\n$fa-var-gear: \\f013;\n$fa-var-cog: \\f013;\n$fa-var-droplet-slash: \\f5c7;\n$fa-var-tint-slash: \\f5c7;\n$fa-var-mosque: \\f678;\n$fa-var-mosquito: \\e52b;\n$fa-var-star-of-david: \\f69a;\n$fa-var-person-military-rifle: \\e54b;\n$fa-var-cart-shopping: \\f07a;\n$fa-var-shopping-cart: \\f07a;\n$fa-var-vials: \\f493;\n$fa-var-plug-circle-plus: \\e55f;\n$fa-var-place-of-worship: \\f67f;\n$fa-var-grip-vertical: \\f58e;\n$fa-var-arrow-turn-up: \\f148;\n$fa-var-level-up: \\f148;\n$fa-var-u: \\55;\n$fa-var-square-root-variable: \\f698;\n$fa-var-square-root-alt: \\f698;\n$fa-var-clock: \\f017;\n$fa-var-clock-four: \\f017;\n$fa-var-backward-step: \\f048;\n$fa-var-step-backward: \\f048;\n$fa-var-pallet: \\f482;\n$fa-var-faucet: \\e005;\n$fa-var-baseball-bat-ball: \\f432;\n$fa-var-s: \\53;\n$fa-var-timeline: \\e29c;\n$fa-var-keyboard: \\f11c;\n$fa-var-caret-down: \\f0d7;\n$fa-var-house-chimney-medical: \\f7f2;\n$fa-var-clinic-medical: \\f7f2;\n$fa-var-temperature-three-quarters: \\f2c8;\n$fa-var-temperature-3: \\f2c8;\n$fa-var-thermometer-3: \\f2c8;\n$fa-var-thermometer-three-quarters: \\f2c8;\n$fa-var-mobile-screen: \\f3cf;\n$fa-var-mobile-android-alt: \\f3cf;\n$fa-var-plane-up: \\e22d;\n$fa-var-piggy-bank: \\f4d3;\n$fa-var-battery-half: \\f242;\n$fa-var-battery-3: \\f242;\n$fa-var-mountain-city: \\e52e;\n$fa-var-coins: \\f51e;\n$fa-var-khanda: \\f66d;\n$fa-var-sliders: \\f1de;\n$fa-var-sliders-h: \\f1de;\n$fa-var-folder-tree: \\f802;\n$fa-var-network-wired: \\f6ff;\n$fa-var-map-pin: \\f276;\n$fa-var-hamsa: \\f665;\n$fa-var-cent-sign: \\e3f5;\n$fa-var-flask: \\f0c3;\n$fa-var-person-pregnant: \\e31e;\n$fa-var-wand-sparkles: \\f72b;\n$fa-var-ellipsis-vertical: \\f142;\n$fa-var-ellipsis-v: \\f142;\n$fa-var-ticket: \\f145;\n$fa-var-power-off: \\f011;\n$fa-var-right-long: \\f30b;\n$fa-var-long-arrow-alt-right: \\f30b;\n$fa-var-flag-usa: \\f74d;\n$fa-var-laptop-file: \\e51d;\n$fa-var-tty: \\f1e4;\n$fa-var-teletype: \\f1e4;\n$fa-var-diagram-next: \\e476;\n$fa-var-person-rifle: \\e54e;\n$fa-var-house-medical-circle-exclamation: \\e512;\n$fa-var-closed-captioning: \\f20a;\n$fa-var-person-hiking: \\f6ec;\n$fa-var-hiking: \\f6ec;\n$fa-var-venus-double: \\f226;\n$fa-var-images: \\f302;\n$fa-var-calculator: \\f1ec;\n$fa-var-people-pulling: \\e535;\n$fa-var-n: \\4e;\n$fa-var-cable-car: \\f7da;\n$fa-var-tram: \\f7da;\n$fa-var-cloud-rain: \\f73d;\n$fa-var-building-circle-xmark: \\e4d4;\n$fa-var-ship: \\f21a;\n$fa-var-arrows-down-to-line: \\e4b8;\n$fa-var-download: \\f019;\n$fa-var-face-grin: \\f580;\n$fa-var-grin: \\f580;\n$fa-var-delete-left: \\f55a;\n$fa-var-backspace: \\f55a;\n$fa-var-eye-dropper: \\f1fb;\n$fa-var-eye-dropper-empty: \\f1fb;\n$fa-var-eyedropper: \\f1fb;\n$fa-var-file-circle-check: \\e5a0;\n$fa-var-forward: \\f04e;\n$fa-var-mobile: \\f3ce;\n$fa-var-mobile-android: \\f3ce;\n$fa-var-mobile-phone: \\f3ce;\n$fa-var-face-meh: \\f11a;\n$fa-var-meh: \\f11a;\n$fa-var-align-center: \\f037;\n$fa-var-book-skull: \\f6b7;\n$fa-var-book-dead: \\f6b7;\n$fa-var-id-card: \\f2c2;\n$fa-var-drivers-license: \\f2c2;\n$fa-var-outdent: \\f03b;\n$fa-var-dedent: \\f03b;\n$fa-var-heart-circle-exclamation: \\e4fe;\n$fa-var-house: \\f015;\n$fa-var-home: \\f015;\n$fa-var-home-alt: \\f015;\n$fa-var-home-lg-alt: \\f015;\n$fa-var-calendar-week: \\f784;\n$fa-var-laptop-medical: \\f812;\n$fa-var-b: \\42;\n$fa-var-file-medical: \\f477;\n$fa-var-dice-one: \\f525;\n$fa-var-kiwi-bird: \\f535;\n$fa-var-arrow-right-arrow-left: \\f0ec;\n$fa-var-exchange: \\f0ec;\n$fa-var-rotate-right: \\f2f9;\n$fa-var-redo-alt: \\f2f9;\n$fa-var-rotate-forward: \\f2f9;\n$fa-var-utensils: \\f2e7;\n$fa-var-cutlery: \\f2e7;\n$fa-var-arrow-up-wide-short: \\f161;\n$fa-var-sort-amount-up: \\f161;\n$fa-var-mill-sign: \\e1ed;\n$fa-var-bowl-rice: \\e2eb;\n$fa-var-skull: \\f54c;\n$fa-var-tower-broadcast: \\f519;\n$fa-var-broadcast-tower: \\f519;\n$fa-var-truck-pickup: \\f63c;\n$fa-var-up-long: \\f30c;\n$fa-var-long-arrow-alt-up: \\f30c;\n$fa-var-stop: \\f04d;\n$fa-var-code-merge: \\f387;\n$fa-var-upload: \\f093;\n$fa-var-hurricane: \\f751;\n$fa-var-mound: \\e52d;\n$fa-var-toilet-portable: \\e583;\n$fa-var-compact-disc: \\f51f;\n$fa-var-file-arrow-down: \\f56d;\n$fa-var-file-download: \\f56d;\n$fa-var-caravan: \\f8ff;\n$fa-var-shield-cat: \\e572;\n$fa-var-bolt: \\f0e7;\n$fa-var-zap: \\f0e7;\n$fa-var-glass-water: \\e4f4;\n$fa-var-oil-well: \\e532;\n$fa-var-vault: \\e2c5;\n$fa-var-mars: \\f222;\n$fa-var-toilet: \\f7d8;\n$fa-var-plane-circle-xmark: \\e557;\n$fa-var-yen-sign: \\f157;\n$fa-var-cny: \\f157;\n$fa-var-jpy: \\f157;\n$fa-var-rmb: \\f157;\n$fa-var-yen: \\f157;\n$fa-var-ruble-sign: \\f158;\n$fa-var-rouble: \\f158;\n$fa-var-rub: \\f158;\n$fa-var-ruble: \\f158;\n$fa-var-sun: \\f185;\n$fa-var-guitar: \\f7a6;\n$fa-var-face-laugh-wink: \\f59c;\n$fa-var-laugh-wink: \\f59c;\n$fa-var-horse-head: \\f7ab;\n$fa-var-bore-hole: \\e4c3;\n$fa-var-industry: \\f275;\n$fa-var-circle-down: \\f358;\n$fa-var-arrow-alt-circle-down: \\f358;\n$fa-var-arrows-turn-to-dots: \\e4c1;\n$fa-var-florin-sign: \\e184;\n$fa-var-arrow-down-short-wide: \\f884;\n$fa-var-sort-amount-desc: \\f884;\n$fa-var-sort-amount-down-alt: \\f884;\n$fa-var-less-than: \\3c;\n$fa-var-angle-down: \\f107;\n$fa-var-car-tunnel: \\e4de;\n$fa-var-head-side-cough: \\e061;\n$fa-var-grip-lines: \\f7a4;\n$fa-var-thumbs-down: \\f165;\n$fa-var-user-lock: \\f502;\n$fa-var-arrow-right-long: \\f178;\n$fa-var-long-arrow-right: \\f178;\n$fa-var-anchor-circle-xmark: \\e4ac;\n$fa-var-ellipsis: \\f141;\n$fa-var-ellipsis-h: \\f141;\n$fa-var-chess-pawn: \\f443;\n$fa-var-kit-medical: \\f479;\n$fa-var-first-aid: \\f479;\n$fa-var-person-through-window: \\e5a9;\n$fa-var-toolbox: \\f552;\n$fa-var-hands-holding-circle: \\e4fb;\n$fa-var-bug: \\f188;\n$fa-var-credit-card: \\f09d;\n$fa-var-credit-card-alt: \\f09d;\n$fa-var-car: \\f1b9;\n$fa-var-automobile: \\f1b9;\n$fa-var-hand-holding-hand: \\e4f7;\n$fa-var-book-open-reader: \\f5da;\n$fa-var-book-reader: \\f5da;\n$fa-var-mountain-sun: \\e52f;\n$fa-var-arrows-left-right-to-line: \\e4ba;\n$fa-var-dice-d20: \\f6cf;\n$fa-var-truck-droplet: \\e58c;\n$fa-var-file-circle-xmark: \\e5a1;\n$fa-var-temperature-arrow-up: \\e040;\n$fa-var-temperature-up: \\e040;\n$fa-var-medal: \\f5a2;\n$fa-var-bed: \\f236;\n$fa-var-square-h: \\f0fd;\n$fa-var-h-square: \\f0fd;\n$fa-var-podcast: \\f2ce;\n$fa-var-temperature-full: \\f2c7;\n$fa-var-temperature-4: \\f2c7;\n$fa-var-thermometer-4: \\f2c7;\n$fa-var-thermometer-full: \\f2c7;\n$fa-var-bell: \\f0f3;\n$fa-var-superscript: \\f12b;\n$fa-var-plug-circle-xmark: \\e560;\n$fa-var-star-of-life: \\f621;\n$fa-var-phone-slash: \\f3dd;\n$fa-var-paint-roller: \\f5aa;\n$fa-var-handshake-angle: \\f4c4;\n$fa-var-hands-helping: \\f4c4;\n$fa-var-location-dot: \\f3c5;\n$fa-var-map-marker-alt: \\f3c5;\n$fa-var-file: \\f15b;\n$fa-var-greater-than: \\3e;\n$fa-var-person-swimming: \\f5c4;\n$fa-var-swimmer: \\f5c4;\n$fa-var-arrow-down: \\f063;\n$fa-var-droplet: \\f043;\n$fa-var-tint: \\f043;\n$fa-var-eraser: \\f12d;\n$fa-var-earth-americas: \\f57d;\n$fa-var-earth: \\f57d;\n$fa-var-earth-america: \\f57d;\n$fa-var-globe-americas: \\f57d;\n$fa-var-person-burst: \\e53b;\n$fa-var-dove: \\f4ba;\n$fa-var-battery-empty: \\f244;\n$fa-var-battery-0: \\f244;\n$fa-var-socks: \\f696;\n$fa-var-inbox: \\f01c;\n$fa-var-section: \\e447;\n$fa-var-gauge-high: \\f625;\n$fa-var-tachometer-alt: \\f625;\n$fa-var-tachometer-alt-fast: \\f625;\n$fa-var-envelope-open-text: \\f658;\n$fa-var-hospital: \\f0f8;\n$fa-var-hospital-alt: \\f0f8;\n$fa-var-hospital-wide: \\f0f8;\n$fa-var-wine-bottle: \\f72f;\n$fa-var-chess-rook: \\f447;\n$fa-var-bars-staggered: \\f550;\n$fa-var-reorder: \\f550;\n$fa-var-stream: \\f550;\n$fa-var-dharmachakra: \\f655;\n$fa-var-hotdog: \\f80f;\n$fa-var-person-walking-with-cane: \\f29d;\n$fa-var-blind: \\f29d;\n$fa-var-drum: \\f569;\n$fa-var-ice-cream: \\f810;\n$fa-var-heart-circle-bolt: \\e4fc;\n$fa-var-fax: \\f1ac;\n$fa-var-paragraph: \\f1dd;\n$fa-var-check-to-slot: \\f772;\n$fa-var-vote-yea: \\f772;\n$fa-var-star-half: \\f089;\n$fa-var-boxes-stacked: \\f468;\n$fa-var-boxes: \\f468;\n$fa-var-boxes-alt: \\f468;\n$fa-var-link: \\f0c1;\n$fa-var-chain: \\f0c1;\n$fa-var-ear-listen: \\f2a2;\n$fa-var-assistive-listening-systems: \\f2a2;\n$fa-var-tree-city: \\e587;\n$fa-var-play: \\f04b;\n$fa-var-font: \\f031;\n$fa-var-table-cells-row-lock: \\e67a;\n$fa-var-rupiah-sign: \\e23d;\n$fa-var-magnifying-glass: \\f002;\n$fa-var-search: \\f002;\n$fa-var-table-tennis-paddle-ball: \\f45d;\n$fa-var-ping-pong-paddle-ball: \\f45d;\n$fa-var-table-tennis: \\f45d;\n$fa-var-person-dots-from-line: \\f470;\n$fa-var-diagnoses: \\f470;\n$fa-var-trash-can-arrow-up: \\f82a;\n$fa-var-trash-restore-alt: \\f82a;\n$fa-var-naira-sign: \\e1f6;\n$fa-var-cart-arrow-down: \\f218;\n$fa-var-walkie-talkie: \\f8ef;\n$fa-var-file-pen: \\f31c;\n$fa-var-file-edit: \\f31c;\n$fa-var-receipt: \\f543;\n$fa-var-square-pen: \\f14b;\n$fa-var-pen-square: \\f14b;\n$fa-var-pencil-square: \\f14b;\n$fa-var-suitcase-rolling: \\f5c1;\n$fa-var-person-circle-exclamation: \\e53f;\n$fa-var-chevron-down: \\f078;\n$fa-var-battery-full: \\f240;\n$fa-var-battery: \\f240;\n$fa-var-battery-5: \\f240;\n$fa-var-skull-crossbones: \\f714;\n$fa-var-code-compare: \\e13a;\n$fa-var-list-ul: \\f0ca;\n$fa-var-list-dots: \\f0ca;\n$fa-var-school-lock: \\e56f;\n$fa-var-tower-cell: \\e585;\n$fa-var-down-long: \\f309;\n$fa-var-long-arrow-alt-down: \\f309;\n$fa-var-ranking-star: \\e561;\n$fa-var-chess-king: \\f43f;\n$fa-var-person-harassing: \\e549;\n$fa-var-brazilian-real-sign: \\e46c;\n$fa-var-landmark-dome: \\f752;\n$fa-var-landmark-alt: \\f752;\n$fa-var-arrow-up: \\f062;\n$fa-var-tv: \\f26c;\n$fa-var-television: \\f26c;\n$fa-var-tv-alt: \\f26c;\n$fa-var-shrimp: \\e448;\n$fa-var-list-check: \\f0ae;\n$fa-var-tasks: \\f0ae;\n$fa-var-jug-detergent: \\e519;\n$fa-var-circle-user: \\f2bd;\n$fa-var-user-circle: \\f2bd;\n$fa-var-user-shield: \\f505;\n$fa-var-wind: \\f72e;\n$fa-var-car-burst: \\f5e1;\n$fa-var-car-crash: \\f5e1;\n$fa-var-y: \\59;\n$fa-var-person-snowboarding: \\f7ce;\n$fa-var-snowboarding: \\f7ce;\n$fa-var-truck-fast: \\f48b;\n$fa-var-shipping-fast: \\f48b;\n$fa-var-fish: \\f578;\n$fa-var-user-graduate: \\f501;\n$fa-var-circle-half-stroke: \\f042;\n$fa-var-adjust: \\f042;\n$fa-var-clapperboard: \\e131;\n$fa-var-circle-radiation: \\f7ba;\n$fa-var-radiation-alt: \\f7ba;\n$fa-var-baseball: \\f433;\n$fa-var-baseball-ball: \\f433;\n$fa-var-jet-fighter-up: \\e518;\n$fa-var-diagram-project: \\f542;\n$fa-var-project-diagram: \\f542;\n$fa-var-copy: \\f0c5;\n$fa-var-volume-xmark: \\f6a9;\n$fa-var-volume-mute: \\f6a9;\n$fa-var-volume-times: \\f6a9;\n$fa-var-hand-sparkles: \\e05d;\n$fa-var-grip: \\f58d;\n$fa-var-grip-horizontal: \\f58d;\n$fa-var-share-from-square: \\f14d;\n$fa-var-share-square: \\f14d;\n$fa-var-child-combatant: \\e4e0;\n$fa-var-child-rifle: \\e4e0;\n$fa-var-gun: \\e19b;\n$fa-var-square-phone: \\f098;\n$fa-var-phone-square: \\f098;\n$fa-var-plus: \\2b;\n$fa-var-add: \\2b;\n$fa-var-expand: \\f065;\n$fa-var-computer: \\e4e5;\n$fa-var-xmark: \\f00d;\n$fa-var-close: \\f00d;\n$fa-var-multiply: \\f00d;\n$fa-var-remove: \\f00d;\n$fa-var-times: \\f00d;\n$fa-var-arrows-up-down-left-right: \\f047;\n$fa-var-arrows: \\f047;\n$fa-var-chalkboard-user: \\f51c;\n$fa-var-chalkboard-teacher: \\f51c;\n$fa-var-peso-sign: \\e222;\n$fa-var-building-shield: \\e4d8;\n$fa-var-baby: \\f77c;\n$fa-var-users-line: \\e592;\n$fa-var-quote-left: \\f10d;\n$fa-var-quote-left-alt: \\f10d;\n$fa-var-tractor: \\f722;\n$fa-var-trash-arrow-up: \\f829;\n$fa-var-trash-restore: \\f829;\n$fa-var-arrow-down-up-lock: \\e4b0;\n$fa-var-lines-leaning: \\e51e;\n$fa-var-ruler-combined: \\f546;\n$fa-var-copyright: \\f1f9;\n$fa-var-equals: \\3d;\n$fa-var-blender: \\f517;\n$fa-var-teeth: \\f62e;\n$fa-var-shekel-sign: \\f20b;\n$fa-var-ils: \\f20b;\n$fa-var-shekel: \\f20b;\n$fa-var-sheqel: \\f20b;\n$fa-var-sheqel-sign: \\f20b;\n$fa-var-map: \\f279;\n$fa-var-rocket: \\f135;\n$fa-var-photo-film: \\f87c;\n$fa-var-photo-video: \\f87c;\n$fa-var-folder-minus: \\f65d;\n$fa-var-store: \\f54e;\n$fa-var-arrow-trend-up: \\e098;\n$fa-var-plug-circle-minus: \\e55e;\n$fa-var-sign-hanging: \\f4d9;\n$fa-var-sign: \\f4d9;\n$fa-var-bezier-curve: \\f55b;\n$fa-var-bell-slash: \\f1f6;\n$fa-var-tablet: \\f3fb;\n$fa-var-tablet-android: \\f3fb;\n$fa-var-school-flag: \\e56e;\n$fa-var-fill: \\f575;\n$fa-var-angle-up: \\f106;\n$fa-var-drumstick-bite: \\f6d7;\n$fa-var-holly-berry: \\f7aa;\n$fa-var-chevron-left: \\f053;\n$fa-var-bacteria: \\e059;\n$fa-var-hand-lizard: \\f258;\n$fa-var-notdef: \\e1fe;\n$fa-var-disease: \\f7fa;\n$fa-var-briefcase-medical: \\f469;\n$fa-var-genderless: \\f22d;\n$fa-var-chevron-right: \\f054;\n$fa-var-retweet: \\f079;\n$fa-var-car-rear: \\f5de;\n$fa-var-car-alt: \\f5de;\n$fa-var-pump-soap: \\e06b;\n$fa-var-video-slash: \\f4e2;\n$fa-var-battery-quarter: \\f243;\n$fa-var-battery-2: \\f243;\n$fa-var-radio: \\f8d7;\n$fa-var-baby-carriage: \\f77d;\n$fa-var-carriage-baby: \\f77d;\n$fa-var-traffic-light: \\f637;\n$fa-var-thermometer: \\f491;\n$fa-var-vr-cardboard: \\f729;\n$fa-var-hand-middle-finger: \\f806;\n$fa-var-percent: \\25;\n$fa-var-percentage: \\25;\n$fa-var-truck-moving: \\f4df;\n$fa-var-glass-water-droplet: \\e4f5;\n$fa-var-display: \\e163;\n$fa-var-face-smile: \\f118;\n$fa-var-smile: \\f118;\n$fa-var-thumbtack: \\f08d;\n$fa-var-thumb-tack: \\f08d;\n$fa-var-trophy: \\f091;\n$fa-var-person-praying: \\f683;\n$fa-var-pray: \\f683;\n$fa-var-hammer: \\f6e3;\n$fa-var-hand-peace: \\f25b;\n$fa-var-rotate: \\f2f1;\n$fa-var-sync-alt: \\f2f1;\n$fa-var-spinner: \\f110;\n$fa-var-robot: \\f544;\n$fa-var-peace: \\f67c;\n$fa-var-gears: \\f085;\n$fa-var-cogs: \\f085;\n$fa-var-warehouse: \\f494;\n$fa-var-arrow-up-right-dots: \\e4b7;\n$fa-var-splotch: \\f5bc;\n$fa-var-face-grin-hearts: \\f584;\n$fa-var-grin-hearts: \\f584;\n$fa-var-dice-four: \\f524;\n$fa-var-sim-card: \\f7c4;\n$fa-var-transgender: \\f225;\n$fa-var-transgender-alt: \\f225;\n$fa-var-mercury: \\f223;\n$fa-var-arrow-turn-down: \\f149;\n$fa-var-level-down: \\f149;\n$fa-var-person-falling-burst: \\e547;\n$fa-var-award: \\f559;\n$fa-var-ticket-simple: \\f3ff;\n$fa-var-ticket-alt: \\f3ff;\n$fa-var-building: \\f1ad;\n$fa-var-angles-left: \\f100;\n$fa-var-angle-double-left: \\f100;\n$fa-var-qrcode: \\f029;\n$fa-var-clock-rotate-left: \\f1da;\n$fa-var-history: \\f1da;\n$fa-var-face-grin-beam-sweat: \\f583;\n$fa-var-grin-beam-sweat: \\f583;\n$fa-var-file-export: \\f56e;\n$fa-var-arrow-right-from-file: \\f56e;\n$fa-var-shield: \\f132;\n$fa-var-shield-blank: \\f132;\n$fa-var-arrow-up-short-wide: \\f885;\n$fa-var-sort-amount-up-alt: \\f885;\n$fa-var-house-medical: \\e3b2;\n$fa-var-golf-ball-tee: \\f450;\n$fa-var-golf-ball: \\f450;\n$fa-var-circle-chevron-left: \\f137;\n$fa-var-chevron-circle-left: \\f137;\n$fa-var-house-chimney-window: \\e00d;\n$fa-var-pen-nib: \\f5ad;\n$fa-var-tent-arrow-turn-left: \\e580;\n$fa-var-tents: \\e582;\n$fa-var-wand-magic: \\f0d0;\n$fa-var-magic: \\f0d0;\n$fa-var-dog: \\f6d3;\n$fa-var-carrot: \\f787;\n$fa-var-moon: \\f186;\n$fa-var-wine-glass-empty: \\f5ce;\n$fa-var-wine-glass-alt: \\f5ce;\n$fa-var-cheese: \\f7ef;\n$fa-var-yin-yang: \\f6ad;\n$fa-var-music: \\f001;\n$fa-var-code-commit: \\f386;\n$fa-var-temperature-low: \\f76b;\n$fa-var-person-biking: \\f84a;\n$fa-var-biking: \\f84a;\n$fa-var-broom: \\f51a;\n$fa-var-shield-heart: \\e574;\n$fa-var-gopuram: \\f664;\n$fa-var-earth-oceania: \\e47b;\n$fa-var-globe-oceania: \\e47b;\n$fa-var-square-xmark: \\f2d3;\n$fa-var-times-square: \\f2d3;\n$fa-var-xmark-square: \\f2d3;\n$fa-var-hashtag: \\23;\n$fa-var-up-right-and-down-left-from-center: \\f424;\n$fa-var-expand-alt: \\f424;\n$fa-var-oil-can: \\f613;\n$fa-var-t: \\54;\n$fa-var-hippo: \\f6ed;\n$fa-var-chart-column: \\e0e3;\n$fa-var-infinity: \\f534;\n$fa-var-vial-circle-check: \\e596;\n$fa-var-person-arrow-down-to-line: \\e538;\n$fa-var-voicemail: \\f897;\n$fa-var-fan: \\f863;\n$fa-var-person-walking-luggage: \\e554;\n$fa-var-up-down: \\f338;\n$fa-var-arrows-alt-v: \\f338;\n$fa-var-cloud-moon-rain: \\f73c;\n$fa-var-calendar: \\f133;\n$fa-var-trailer: \\e041;\n$fa-var-bahai: \\f666;\n$fa-var-haykal: \\f666;\n$fa-var-sd-card: \\f7c2;\n$fa-var-dragon: \\f6d5;\n$fa-var-shoe-prints: \\f54b;\n$fa-var-circle-plus: \\f055;\n$fa-var-plus-circle: \\f055;\n$fa-var-face-grin-tongue-wink: \\f58b;\n$fa-var-grin-tongue-wink: \\f58b;\n$fa-var-hand-holding: \\f4bd;\n$fa-var-plug-circle-exclamation: \\e55d;\n$fa-var-link-slash: \\f127;\n$fa-var-chain-broken: \\f127;\n$fa-var-chain-slash: \\f127;\n$fa-var-unlink: \\f127;\n$fa-var-clone: \\f24d;\n$fa-var-person-walking-arrow-loop-left: \\e551;\n$fa-var-arrow-up-z-a: \\f882;\n$fa-var-sort-alpha-up-alt: \\f882;\n$fa-var-fire-flame-curved: \\f7e4;\n$fa-var-fire-alt: \\f7e4;\n$fa-var-tornado: \\f76f;\n$fa-var-file-circle-plus: \\e494;\n$fa-var-book-quran: \\f687;\n$fa-var-quran: \\f687;\n$fa-var-anchor: \\f13d;\n$fa-var-border-all: \\f84c;\n$fa-var-face-angry: \\f556;\n$fa-var-angry: \\f556;\n$fa-var-cookie-bite: \\f564;\n$fa-var-arrow-trend-down: \\e097;\n$fa-var-rss: \\f09e;\n$fa-var-feed: \\f09e;\n$fa-var-draw-polygon: \\f5ee;\n$fa-var-scale-balanced: \\f24e;\n$fa-var-balance-scale: \\f24e;\n$fa-var-gauge-simple-high: \\f62a;\n$fa-var-tachometer: \\f62a;\n$fa-var-tachometer-fast: \\f62a;\n$fa-var-shower: \\f2cc;\n$fa-var-desktop: \\f390;\n$fa-var-desktop-alt: \\f390;\n$fa-var-m: \\4d;\n$fa-var-table-list: \\f00b;\n$fa-var-th-list: \\f00b;\n$fa-var-comment-sms: \\f7cd;\n$fa-var-sms: \\f7cd;\n$fa-var-book: \\f02d;\n$fa-var-user-plus: \\f234;\n$fa-var-check: \\f00c;\n$fa-var-battery-three-quarters: \\f241;\n$fa-var-battery-4: \\f241;\n$fa-var-house-circle-check: \\e509;\n$fa-var-angle-left: \\f104;\n$fa-var-diagram-successor: \\e47a;\n$fa-var-truck-arrow-right: \\e58b;\n$fa-var-arrows-split-up-and-left: \\e4bc;\n$fa-var-hand-fist: \\f6de;\n$fa-var-fist-raised: \\f6de;\n$fa-var-cloud-moon: \\f6c3;\n$fa-var-briefcase: \\f0b1;\n$fa-var-person-falling: \\e546;\n$fa-var-image-portrait: \\f3e0;\n$fa-var-portrait: \\f3e0;\n$fa-var-user-tag: \\f507;\n$fa-var-rug: \\e569;\n$fa-var-earth-europe: \\f7a2;\n$fa-var-globe-europe: \\f7a2;\n$fa-var-cart-flatbed-suitcase: \\f59d;\n$fa-var-luggage-cart: \\f59d;\n$fa-var-rectangle-xmark: \\f410;\n$fa-var-rectangle-times: \\f410;\n$fa-var-times-rectangle: \\f410;\n$fa-var-window-close: \\f410;\n$fa-var-baht-sign: \\e0ac;\n$fa-var-book-open: \\f518;\n$fa-var-book-journal-whills: \\f66a;\n$fa-var-journal-whills: \\f66a;\n$fa-var-handcuffs: \\e4f8;\n$fa-var-triangle-exclamation: \\f071;\n$fa-var-exclamation-triangle: \\f071;\n$fa-var-warning: \\f071;\n$fa-var-database: \\f1c0;\n$fa-var-share: \\f064;\n$fa-var-mail-forward: \\f064;\n$fa-var-bottle-droplet: \\e4c4;\n$fa-var-mask-face: \\e1d7;\n$fa-var-hill-rockslide: \\e508;\n$fa-var-right-left: \\f362;\n$fa-var-exchange-alt: \\f362;\n$fa-var-paper-plane: \\f1d8;\n$fa-var-road-circle-exclamation: \\e565;\n$fa-var-dungeon: \\f6d9;\n$fa-var-align-right: \\f038;\n$fa-var-money-bill-1-wave: \\f53b;\n$fa-var-money-bill-wave-alt: \\f53b;\n$fa-var-life-ring: \\f1cd;\n$fa-var-hands: \\f2a7;\n$fa-var-sign-language: \\f2a7;\n$fa-var-signing: \\f2a7;\n$fa-var-calendar-day: \\f783;\n$fa-var-water-ladder: \\f5c5;\n$fa-var-ladder-water: \\f5c5;\n$fa-var-swimming-pool: \\f5c5;\n$fa-var-arrows-up-down: \\f07d;\n$fa-var-arrows-v: \\f07d;\n$fa-var-face-grimace: \\f57f;\n$fa-var-grimace: \\f57f;\n$fa-var-wheelchair-move: \\e2ce;\n$fa-var-wheelchair-alt: \\e2ce;\n$fa-var-turn-down: \\f3be;\n$fa-var-level-down-alt: \\f3be;\n$fa-var-person-walking-arrow-right: \\e552;\n$fa-var-square-envelope: \\f199;\n$fa-var-envelope-square: \\f199;\n$fa-var-dice: \\f522;\n$fa-var-bowling-ball: \\f436;\n$fa-var-brain: \\f5dc;\n$fa-var-bandage: \\f462;\n$fa-var-band-aid: \\f462;\n$fa-var-calendar-minus: \\f272;\n$fa-var-circle-xmark: \\f057;\n$fa-var-times-circle: \\f057;\n$fa-var-xmark-circle: \\f057;\n$fa-var-gifts: \\f79c;\n$fa-var-hotel: \\f594;\n$fa-var-earth-asia: \\f57e;\n$fa-var-globe-asia: \\f57e;\n$fa-var-id-card-clip: \\f47f;\n$fa-var-id-card-alt: \\f47f;\n$fa-var-magnifying-glass-plus: \\f00e;\n$fa-var-search-plus: \\f00e;\n$fa-var-thumbs-up: \\f164;\n$fa-var-user-clock: \\f4fd;\n$fa-var-hand-dots: \\f461;\n$fa-var-allergies: \\f461;\n$fa-var-file-invoice: \\f570;\n$fa-var-window-minimize: \\f2d1;\n$fa-var-mug-saucer: \\f0f4;\n$fa-var-coffee: \\f0f4;\n$fa-var-brush: \\f55d;\n$fa-var-mask: \\f6fa;\n$fa-var-magnifying-glass-minus: \\f010;\n$fa-var-search-minus: \\f010;\n$fa-var-ruler-vertical: \\f548;\n$fa-var-user-large: \\f406;\n$fa-var-user-alt: \\f406;\n$fa-var-train-tram: \\e5b4;\n$fa-var-user-nurse: \\f82f;\n$fa-var-syringe: \\f48e;\n$fa-var-cloud-sun: \\f6c4;\n$fa-var-stopwatch-20: \\e06f;\n$fa-var-square-full: \\f45c;\n$fa-var-magnet: \\f076;\n$fa-var-jar: \\e516;\n$fa-var-note-sticky: \\f249;\n$fa-var-sticky-note: \\f249;\n$fa-var-bug-slash: \\e490;\n$fa-var-arrow-up-from-water-pump: \\e4b6;\n$fa-var-bone: \\f5d7;\n$fa-var-user-injured: \\f728;\n$fa-var-face-sad-tear: \\f5b4;\n$fa-var-sad-tear: \\f5b4;\n$fa-var-plane: \\f072;\n$fa-var-tent-arrows-down: \\e581;\n$fa-var-exclamation: \\21;\n$fa-var-arrows-spin: \\e4bb;\n$fa-var-print: \\f02f;\n$fa-var-turkish-lira-sign: \\e2bb;\n$fa-var-try: \\e2bb;\n$fa-var-turkish-lira: \\e2bb;\n$fa-var-dollar-sign: \\24;\n$fa-var-dollar: \\24;\n$fa-var-usd: \\24;\n$fa-var-x: \\58;\n$fa-var-magnifying-glass-dollar: \\f688;\n$fa-var-search-dollar: \\f688;\n$fa-var-users-gear: \\f509;\n$fa-var-users-cog: \\f509;\n$fa-var-person-military-pointing: \\e54a;\n$fa-var-building-columns: \\f19c;\n$fa-var-bank: \\f19c;\n$fa-var-institution: \\f19c;\n$fa-var-museum: \\f19c;\n$fa-var-university: \\f19c;\n$fa-var-umbrella: \\f0e9;\n$fa-var-trowel: \\e589;\n$fa-var-d: \\44;\n$fa-var-stapler: \\e5af;\n$fa-var-masks-theater: \\f630;\n$fa-var-theater-masks: \\f630;\n$fa-var-kip-sign: \\e1c4;\n$fa-var-hand-point-left: \\f0a5;\n$fa-var-handshake-simple: \\f4c6;\n$fa-var-handshake-alt: \\f4c6;\n$fa-var-jet-fighter: \\f0fb;\n$fa-var-fighter-jet: \\f0fb;\n$fa-var-square-share-nodes: \\f1e1;\n$fa-var-share-alt-square: \\f1e1;\n$fa-var-barcode: \\f02a;\n$fa-var-plus-minus: \\e43c;\n$fa-var-video: \\f03d;\n$fa-var-video-camera: \\f03d;\n$fa-var-graduation-cap: \\f19d;\n$fa-var-mortar-board: \\f19d;\n$fa-var-hand-holding-medical: \\e05c;\n$fa-var-person-circle-check: \\e53e;\n$fa-var-turn-up: \\f3bf;\n$fa-var-level-up-alt: \\f3bf;\n\n$fa-var-monero: \\f3d0;\n$fa-var-hooli: \\f427;\n$fa-var-yelp: \\f1e9;\n$fa-var-cc-visa: \\f1f0;\n$fa-var-lastfm: \\f202;\n$fa-var-shopware: \\f5b5;\n$fa-var-creative-commons-nc: \\f4e8;\n$fa-var-aws: \\f375;\n$fa-var-redhat: \\f7bc;\n$fa-var-yoast: \\f2b1;\n$fa-var-cloudflare: \\e07d;\n$fa-var-ups: \\f7e0;\n$fa-var-pixiv: \\e640;\n$fa-var-wpexplorer: \\f2de;\n$fa-var-dyalog: \\f399;\n$fa-var-bity: \\f37a;\n$fa-var-stackpath: \\f842;\n$fa-var-buysellads: \\f20d;\n$fa-var-first-order: \\f2b0;\n$fa-var-modx: \\f285;\n$fa-var-guilded: \\e07e;\n$fa-var-vnv: \\f40b;\n$fa-var-square-js: \\f3b9;\n$fa-var-js-square: \\f3b9;\n$fa-var-microsoft: \\f3ca;\n$fa-var-qq: \\f1d6;\n$fa-var-orcid: \\f8d2;\n$fa-var-java: \\f4e4;\n$fa-var-invision: \\f7b0;\n$fa-var-creative-commons-pd-alt: \\f4ed;\n$fa-var-centercode: \\f380;\n$fa-var-glide-g: \\f2a6;\n$fa-var-drupal: \\f1a9;\n$fa-var-jxl: \\e67b;\n$fa-var-hire-a-helper: \\f3b0;\n$fa-var-creative-commons-by: \\f4e7;\n$fa-var-unity: \\e049;\n$fa-var-whmcs: \\f40d;\n$fa-var-rocketchat: \\f3e8;\n$fa-var-vk: \\f189;\n$fa-var-untappd: \\f405;\n$fa-var-mailchimp: \\f59e;\n$fa-var-css3-alt: \\f38b;\n$fa-var-square-reddit: \\f1a2;\n$fa-var-reddit-square: \\f1a2;\n$fa-var-vimeo-v: \\f27d;\n$fa-var-contao: \\f26d;\n$fa-var-square-font-awesome: \\e5ad;\n$fa-var-deskpro: \\f38f;\n$fa-var-brave: \\e63c;\n$fa-var-sistrix: \\f3ee;\n$fa-var-square-instagram: \\e055;\n$fa-var-instagram-square: \\e055;\n$fa-var-battle-net: \\f835;\n$fa-var-the-red-yeti: \\f69d;\n$fa-var-square-hacker-news: \\f3af;\n$fa-var-hacker-news-square: \\f3af;\n$fa-var-edge: \\f282;\n$fa-var-threads: \\e618;\n$fa-var-napster: \\f3d2;\n$fa-var-square-snapchat: \\f2ad;\n$fa-var-snapchat-square: \\f2ad;\n$fa-var-google-plus-g: \\f0d5;\n$fa-var-artstation: \\f77a;\n$fa-var-markdown: \\f60f;\n$fa-var-sourcetree: \\f7d3;\n$fa-var-google-plus: \\f2b3;\n$fa-var-diaspora: \\f791;\n$fa-var-foursquare: \\f180;\n$fa-var-stack-overflow: \\f16c;\n$fa-var-github-alt: \\f113;\n$fa-var-phoenix-squadron: \\f511;\n$fa-var-pagelines: \\f18c;\n$fa-var-algolia: \\f36c;\n$fa-var-red-river: \\f3e3;\n$fa-var-creative-commons-sa: \\f4ef;\n$fa-var-safari: \\f267;\n$fa-var-google: \\f1a0;\n$fa-var-square-font-awesome-stroke: \\f35c;\n$fa-var-font-awesome-alt: \\f35c;\n$fa-var-atlassian: \\f77b;\n$fa-var-linkedin-in: \\f0e1;\n$fa-var-digital-ocean: \\f391;\n$fa-var-nimblr: \\f5a8;\n$fa-var-chromecast: \\f838;\n$fa-var-evernote: \\f839;\n$fa-var-hacker-news: \\f1d4;\n$fa-var-creative-commons-sampling: \\f4f0;\n$fa-var-adversal: \\f36a;\n$fa-var-creative-commons: \\f25e;\n$fa-var-watchman-monitoring: \\e087;\n$fa-var-fonticons: \\f280;\n$fa-var-weixin: \\f1d7;\n$fa-var-shirtsinbulk: \\f214;\n$fa-var-codepen: \\f1cb;\n$fa-var-git-alt: \\f841;\n$fa-var-lyft: \\f3c3;\n$fa-var-rev: \\f5b2;\n$fa-var-windows: \\f17a;\n$fa-var-wizards-of-the-coast: \\f730;\n$fa-var-square-viadeo: \\f2aa;\n$fa-var-viadeo-square: \\f2aa;\n$fa-var-meetup: \\f2e0;\n$fa-var-centos: \\f789;\n$fa-var-adn: \\f170;\n$fa-var-cloudsmith: \\f384;\n$fa-var-opensuse: \\e62b;\n$fa-var-pied-piper-alt: \\f1a8;\n$fa-var-square-dribbble: \\f397;\n$fa-var-dribbble-square: \\f397;\n$fa-var-codiepie: \\f284;\n$fa-var-node: \\f419;\n$fa-var-mix: \\f3cb;\n$fa-var-steam: \\f1b6;\n$fa-var-cc-apple-pay: \\f416;\n$fa-var-scribd: \\f28a;\n$fa-var-debian: \\e60b;\n$fa-var-openid: \\f19b;\n$fa-var-instalod: \\e081;\n$fa-var-expeditedssl: \\f23e;\n$fa-var-sellcast: \\f2da;\n$fa-var-square-twitter: \\f081;\n$fa-var-twitter-square: \\f081;\n$fa-var-r-project: \\f4f7;\n$fa-var-delicious: \\f1a5;\n$fa-var-freebsd: \\f3a4;\n$fa-var-vuejs: \\f41f;\n$fa-var-accusoft: \\f369;\n$fa-var-ioxhost: \\f208;\n$fa-var-fonticons-fi: \\f3a2;\n$fa-var-app-store: \\f36f;\n$fa-var-cc-mastercard: \\f1f1;\n$fa-var-itunes-note: \\f3b5;\n$fa-var-golang: \\e40f;\n$fa-var-kickstarter: \\f3bb;\n$fa-var-square-kickstarter: \\f3bb;\n$fa-var-grav: \\f2d6;\n$fa-var-weibo: \\f18a;\n$fa-var-uncharted: \\e084;\n$fa-var-firstdraft: \\f3a1;\n$fa-var-square-youtube: \\f431;\n$fa-var-youtube-square: \\f431;\n$fa-var-wikipedia-w: \\f266;\n$fa-var-wpressr: \\f3e4;\n$fa-var-rendact: \\f3e4;\n$fa-var-angellist: \\f209;\n$fa-var-galactic-republic: \\f50c;\n$fa-var-nfc-directional: \\e530;\n$fa-var-skype: \\f17e;\n$fa-var-joget: \\f3b7;\n$fa-var-fedora: \\f798;\n$fa-var-stripe-s: \\f42a;\n$fa-var-meta: \\e49b;\n$fa-var-laravel: \\f3bd;\n$fa-var-hotjar: \\f3b1;\n$fa-var-bluetooth-b: \\f294;\n$fa-var-square-letterboxd: \\e62e;\n$fa-var-sticker-mule: \\f3f7;\n$fa-var-creative-commons-zero: \\f4f3;\n$fa-var-hips: \\f452;\n$fa-var-behance: \\f1b4;\n$fa-var-reddit: \\f1a1;\n$fa-var-discord: \\f392;\n$fa-var-chrome: \\f268;\n$fa-var-app-store-ios: \\f370;\n$fa-var-cc-discover: \\f1f2;\n$fa-var-wpbeginner: \\f297;\n$fa-var-confluence: \\f78d;\n$fa-var-shoelace: \\e60c;\n$fa-var-mdb: \\f8ca;\n$fa-var-dochub: \\f394;\n$fa-var-accessible-icon: \\f368;\n$fa-var-ebay: \\f4f4;\n$fa-var-amazon: \\f270;\n$fa-var-unsplash: \\e07c;\n$fa-var-yarn: \\f7e3;\n$fa-var-square-steam: \\f1b7;\n$fa-var-steam-square: \\f1b7;\n$fa-var-500px: \\f26e;\n$fa-var-square-vimeo: \\f194;\n$fa-var-vimeo-square: \\f194;\n$fa-var-asymmetrik: \\f372;\n$fa-var-font-awesome: \\f2b4;\n$fa-var-font-awesome-flag: \\f2b4;\n$fa-var-font-awesome-logo-full: \\f2b4;\n$fa-var-gratipay: \\f184;\n$fa-var-apple: \\f179;\n$fa-var-hive: \\e07f;\n$fa-var-gitkraken: \\f3a6;\n$fa-var-keybase: \\f4f5;\n$fa-var-apple-pay: \\f415;\n$fa-var-padlet: \\e4a0;\n$fa-var-amazon-pay: \\f42c;\n$fa-var-square-github: \\f092;\n$fa-var-github-square: \\f092;\n$fa-var-stumbleupon: \\f1a4;\n$fa-var-fedex: \\f797;\n$fa-var-phoenix-framework: \\f3dc;\n$fa-var-shopify: \\e057;\n$fa-var-neos: \\f612;\n$fa-var-square-threads: \\e619;\n$fa-var-hackerrank: \\f5f7;\n$fa-var-researchgate: \\f4f8;\n$fa-var-swift: \\f8e1;\n$fa-var-angular: \\f420;\n$fa-var-speakap: \\f3f3;\n$fa-var-angrycreative: \\f36e;\n$fa-var-y-combinator: \\f23b;\n$fa-var-empire: \\f1d1;\n$fa-var-envira: \\f299;\n$fa-var-google-scholar: \\e63b;\n$fa-var-square-gitlab: \\e5ae;\n$fa-var-gitlab-square: \\e5ae;\n$fa-var-studiovinari: \\f3f8;\n$fa-var-pied-piper: \\f2ae;\n$fa-var-wordpress: \\f19a;\n$fa-var-product-hunt: \\f288;\n$fa-var-firefox: \\f269;\n$fa-var-linode: \\f2b8;\n$fa-var-goodreads: \\f3a8;\n$fa-var-square-odnoklassniki: \\f264;\n$fa-var-odnoklassniki-square: \\f264;\n$fa-var-jsfiddle: \\f1cc;\n$fa-var-sith: \\f512;\n$fa-var-themeisle: \\f2b2;\n$fa-var-page4: \\f3d7;\n$fa-var-hashnode: \\e499;\n$fa-var-react: \\f41b;\n$fa-var-cc-paypal: \\f1f4;\n$fa-var-squarespace: \\f5be;\n$fa-var-cc-stripe: \\f1f5;\n$fa-var-creative-commons-share: \\f4f2;\n$fa-var-bitcoin: \\f379;\n$fa-var-keycdn: \\f3ba;\n$fa-var-opera: \\f26a;\n$fa-var-itch-io: \\f83a;\n$fa-var-umbraco: \\f8e8;\n$fa-var-galactic-senate: \\f50d;\n$fa-var-ubuntu: \\f7df;\n$fa-var-draft2digital: \\f396;\n$fa-var-stripe: \\f429;\n$fa-var-houzz: \\f27c;\n$fa-var-gg: \\f260;\n$fa-var-dhl: \\f790;\n$fa-var-square-pinterest: \\f0d3;\n$fa-var-pinterest-square: \\f0d3;\n$fa-var-xing: \\f168;\n$fa-var-blackberry: \\f37b;\n$fa-var-creative-commons-pd: \\f4ec;\n$fa-var-playstation: \\f3df;\n$fa-var-quinscape: \\f459;\n$fa-var-less: \\f41d;\n$fa-var-blogger-b: \\f37d;\n$fa-var-opencart: \\f23d;\n$fa-var-vine: \\f1ca;\n$fa-var-signal-messenger: \\e663;\n$fa-var-paypal: \\f1ed;\n$fa-var-gitlab: \\f296;\n$fa-var-typo3: \\f42b;\n$fa-var-reddit-alien: \\f281;\n$fa-var-yahoo: \\f19e;\n$fa-var-dailymotion: \\e052;\n$fa-var-affiliatetheme: \\f36b;\n$fa-var-pied-piper-pp: \\f1a7;\n$fa-var-bootstrap: \\f836;\n$fa-var-odnoklassniki: \\f263;\n$fa-var-nfc-symbol: \\e531;\n$fa-var-mintbit: \\e62f;\n$fa-var-ethereum: \\f42e;\n$fa-var-speaker-deck: \\f83c;\n$fa-var-creative-commons-nc-eu: \\f4e9;\n$fa-var-patreon: \\f3d9;\n$fa-var-avianex: \\f374;\n$fa-var-ello: \\f5f1;\n$fa-var-gofore: \\f3a7;\n$fa-var-bimobject: \\f378;\n$fa-var-brave-reverse: \\e63d;\n$fa-var-facebook-f: \\f39e;\n$fa-var-square-google-plus: \\f0d4;\n$fa-var-google-plus-square: \\f0d4;\n$fa-var-web-awesome: \\e682;\n$fa-var-mandalorian: \\f50f;\n$fa-var-first-order-alt: \\f50a;\n$fa-var-osi: \\f41a;\n$fa-var-google-wallet: \\f1ee;\n$fa-var-d-and-d-beyond: \\f6ca;\n$fa-var-periscope: \\f3da;\n$fa-var-fulcrum: \\f50b;\n$fa-var-cloudscale: \\f383;\n$fa-var-forumbee: \\f211;\n$fa-var-mizuni: \\f3cc;\n$fa-var-schlix: \\f3ea;\n$fa-var-square-xing: \\f169;\n$fa-var-xing-square: \\f169;\n$fa-var-bandcamp: \\f2d5;\n$fa-var-wpforms: \\f298;\n$fa-var-cloudversify: \\f385;\n$fa-var-usps: \\f7e1;\n$fa-var-megaport: \\f5a3;\n$fa-var-magento: \\f3c4;\n$fa-var-spotify: \\f1bc;\n$fa-var-optin-monster: \\f23c;\n$fa-var-fly: \\f417;\n$fa-var-aviato: \\f421;\n$fa-var-itunes: \\f3b4;\n$fa-var-cuttlefish: \\f38c;\n$fa-var-blogger: \\f37c;\n$fa-var-flickr: \\f16e;\n$fa-var-viber: \\f409;\n$fa-var-soundcloud: \\f1be;\n$fa-var-digg: \\f1a6;\n$fa-var-tencent-weibo: \\f1d5;\n$fa-var-letterboxd: \\e62d;\n$fa-var-symfony: \\f83d;\n$fa-var-maxcdn: \\f136;\n$fa-var-etsy: \\f2d7;\n$fa-var-facebook-messenger: \\f39f;\n$fa-var-audible: \\f373;\n$fa-var-think-peaks: \\f731;\n$fa-var-bilibili: \\e3d9;\n$fa-var-erlang: \\f39d;\n$fa-var-x-twitter: \\e61b;\n$fa-var-cotton-bureau: \\f89e;\n$fa-var-dashcube: \\f210;\n$fa-var-42-group: \\e080;\n$fa-var-innosoft: \\e080;\n$fa-var-stack-exchange: \\f18d;\n$fa-var-elementor: \\f430;\n$fa-var-square-pied-piper: \\e01e;\n$fa-var-pied-piper-square: \\e01e;\n$fa-var-creative-commons-nd: \\f4eb;\n$fa-var-palfed: \\f3d8;\n$fa-var-superpowers: \\f2dd;\n$fa-var-resolving: \\f3e7;\n$fa-var-xbox: \\f412;\n$fa-var-square-web-awesome-stroke: \\e684;\n$fa-var-searchengin: \\f3eb;\n$fa-var-tiktok: \\e07b;\n$fa-var-square-facebook: \\f082;\n$fa-var-facebook-square: \\f082;\n$fa-var-renren: \\f18b;\n$fa-var-linux: \\f17c;\n$fa-var-glide: \\f2a5;\n$fa-var-linkedin: \\f08c;\n$fa-var-hubspot: \\f3b2;\n$fa-var-deploydog: \\f38e;\n$fa-var-twitch: \\f1e8;\n$fa-var-ravelry: \\f2d9;\n$fa-var-mixer: \\e056;\n$fa-var-square-lastfm: \\f203;\n$fa-var-lastfm-square: \\f203;\n$fa-var-vimeo: \\f40a;\n$fa-var-mendeley: \\f7b3;\n$fa-var-uniregistry: \\f404;\n$fa-var-figma: \\f799;\n$fa-var-creative-commons-remix: \\f4ee;\n$fa-var-cc-amazon-pay: \\f42d;\n$fa-var-dropbox: \\f16b;\n$fa-var-instagram: \\f16d;\n$fa-var-cmplid: \\e360;\n$fa-var-upwork: \\e641;\n$fa-var-facebook: \\f09a;\n$fa-var-gripfire: \\f3ac;\n$fa-var-jedi-order: \\f50e;\n$fa-var-uikit: \\f403;\n$fa-var-fort-awesome-alt: \\f3a3;\n$fa-var-phabricator: \\f3db;\n$fa-var-ussunnah: \\f407;\n$fa-var-earlybirds: \\f39a;\n$fa-var-trade-federation: \\f513;\n$fa-var-autoprefixer: \\f41c;\n$fa-var-whatsapp: \\f232;\n$fa-var-square-upwork: \\e67c;\n$fa-var-slideshare: \\f1e7;\n$fa-var-google-play: \\f3ab;\n$fa-var-viadeo: \\f2a9;\n$fa-var-line: \\f3c0;\n$fa-var-google-drive: \\f3aa;\n$fa-var-servicestack: \\f3ec;\n$fa-var-simplybuilt: \\f215;\n$fa-var-bitbucket: \\f171;\n$fa-var-imdb: \\f2d8;\n$fa-var-deezer: \\e077;\n$fa-var-raspberry-pi: \\f7bb;\n$fa-var-jira: \\f7b1;\n$fa-var-docker: \\f395;\n$fa-var-screenpal: \\e570;\n$fa-var-bluetooth: \\f293;\n$fa-var-gitter: \\f426;\n$fa-var-d-and-d: \\f38d;\n$fa-var-microblog: \\e01a;\n$fa-var-cc-diners-club: \\f24c;\n$fa-var-gg-circle: \\f261;\n$fa-var-pied-piper-hat: \\f4e5;\n$fa-var-kickstarter-k: \\f3bc;\n$fa-var-yandex: \\f413;\n$fa-var-readme: \\f4d5;\n$fa-var-html5: \\f13b;\n$fa-var-sellsy: \\f213;\n$fa-var-square-web-awesome: \\e683;\n$fa-var-sass: \\f41e;\n$fa-var-wirsindhandwerk: \\e2d0;\n$fa-var-wsh: \\e2d0;\n$fa-var-buromobelexperte: \\f37f;\n$fa-var-salesforce: \\f83b;\n$fa-var-octopus-deploy: \\e082;\n$fa-var-medapps: \\f3c6;\n$fa-var-ns8: \\f3d5;\n$fa-var-pinterest-p: \\f231;\n$fa-var-apper: \\f371;\n$fa-var-fort-awesome: \\f286;\n$fa-var-waze: \\f83f;\n$fa-var-bluesky: \\e671;\n$fa-var-cc-jcb: \\f24b;\n$fa-var-snapchat: \\f2ab;\n$fa-var-snapchat-ghost: \\f2ab;\n$fa-var-fantasy-flight-games: \\f6dc;\n$fa-var-rust: \\e07a;\n$fa-var-wix: \\f5cf;\n$fa-var-square-behance: \\f1b5;\n$fa-var-behance-square: \\f1b5;\n$fa-var-supple: \\f3f9;\n$fa-var-webflow: \\e65c;\n$fa-var-rebel: \\f1d0;\n$fa-var-css3: \\f13c;\n$fa-var-staylinked: \\f3f5;\n$fa-var-kaggle: \\f5fa;\n$fa-var-space-awesome: \\e5ac;\n$fa-var-deviantart: \\f1bd;\n$fa-var-cpanel: \\f388;\n$fa-var-goodreads-g: \\f3a9;\n$fa-var-square-git: \\f1d2;\n$fa-var-git-square: \\f1d2;\n$fa-var-square-tumblr: \\f174;\n$fa-var-tumblr-square: \\f174;\n$fa-var-trello: \\f181;\n$fa-var-creative-commons-nc-jp: \\f4ea;\n$fa-var-get-pocket: \\f265;\n$fa-var-perbyte: \\e083;\n$fa-var-grunt: \\f3ad;\n$fa-var-weebly: \\f5cc;\n$fa-var-connectdevelop: \\f20e;\n$fa-var-leanpub: \\f212;\n$fa-var-black-tie: \\f27e;\n$fa-var-themeco: \\f5c6;\n$fa-var-python: \\f3e2;\n$fa-var-android: \\f17b;\n$fa-var-bots: \\e340;\n$fa-var-free-code-camp: \\f2c5;\n$fa-var-hornbill: \\f592;\n$fa-var-js: \\f3b8;\n$fa-var-ideal: \\e013;\n$fa-var-git: \\f1d3;\n$fa-var-dev: \\f6cc;\n$fa-var-sketch: \\f7c6;\n$fa-var-yandex-international: \\f414;\n$fa-var-cc-amex: \\f1f3;\n$fa-var-uber: \\f402;\n$fa-var-github: \\f09b;\n$fa-var-php: \\f457;\n$fa-var-alipay: \\f642;\n$fa-var-youtube: \\f167;\n$fa-var-skyatlas: \\f216;\n$fa-var-firefox-browser: \\e007;\n$fa-var-replyd: \\f3e6;\n$fa-var-suse: \\f7d6;\n$fa-var-jenkins: \\f3b6;\n$fa-var-twitter: \\f099;\n$fa-var-rockrms: \\f3e9;\n$fa-var-pinterest: \\f0d2;\n$fa-var-buffer: \\f837;\n$fa-var-npm: \\f3d4;\n$fa-var-yammer: \\f840;\n$fa-var-btc: \\f15a;\n$fa-var-dribbble: \\f17d;\n$fa-var-stumbleupon-circle: \\f1a3;\n$fa-var-internet-explorer: \\f26b;\n$fa-var-stubber: \\e5c7;\n$fa-var-telegram: \\f2c6;\n$fa-var-telegram-plane: \\f2c6;\n$fa-var-old-republic: \\f510;\n$fa-var-odysee: \\e5c6;\n$fa-var-square-whatsapp: \\f40c;\n$fa-var-whatsapp-square: \\f40c;\n$fa-var-node-js: \\f3d3;\n$fa-var-edge-legacy: \\e078;\n$fa-var-slack: \\f198;\n$fa-var-slack-hash: \\f198;\n$fa-var-medrt: \\f3c8;\n$fa-var-usb: \\f287;\n$fa-var-tumblr: \\f173;\n$fa-var-vaadin: \\f408;\n$fa-var-quora: \\f2c4;\n$fa-var-square-x-twitter: \\e61a;\n$fa-var-reacteurope: \\f75d;\n$fa-var-medium: \\f23a;\n$fa-var-medium-m: \\f23a;\n$fa-var-amilia: \\f36d;\n$fa-var-mixcloud: \\f289;\n$fa-var-flipboard: \\f44d;\n$fa-var-viacoin: \\f237;\n$fa-var-critical-role: \\f6c9;\n$fa-var-sitrox: \\e44a;\n$fa-var-discourse: \\f393;\n$fa-var-joomla: \\f1aa;\n$fa-var-mastodon: \\f4f6;\n$fa-var-airbnb: \\f834;\n$fa-var-wolf-pack-battalion: \\f514;\n$fa-var-buy-n-large: \\f8a6;\n$fa-var-gulp: \\f3ae;\n$fa-var-creative-commons-sampling-plus: \\f4f1;\n$fa-var-strava: \\f428;\n$fa-var-ember: \\f423;\n$fa-var-canadian-maple-leaf: \\f785;\n$fa-var-teamspeak: \\f4f9;\n$fa-var-pushed: \\f3e1;\n$fa-var-wordpress-simple: \\f411;\n$fa-var-nutritionix: \\f3d6;\n$fa-var-wodu: \\e088;\n$fa-var-google-pay: \\e079;\n$fa-var-intercom: \\f7af;\n$fa-var-zhihu: \\f63f;\n$fa-var-korvue: \\f42f;\n$fa-var-pix: \\e43a;\n$fa-var-steam-symbol: \\f3f6;\n\n$fa-icons: (\n  \"0\": $fa-var-0,\n  \"1\": $fa-var-1,\n  \"2\": $fa-var-2,\n  \"3\": $fa-var-3,\n  \"4\": $fa-var-4,\n  \"5\": $fa-var-5,\n  \"6\": $fa-var-6,\n  \"7\": $fa-var-7,\n  \"8\": $fa-var-8,\n  \"9\": $fa-var-9,\n  \"fill-drip\": $fa-var-fill-drip,\n  \"arrows-to-circle\": $fa-var-arrows-to-circle,\n  \"circle-chevron-right\": $fa-var-circle-chevron-right,\n  \"chevron-circle-right\": $fa-var-chevron-circle-right,\n  \"at\": $fa-var-at,\n  \"trash-can\": $fa-var-trash-can,\n  \"trash-alt\": $fa-var-trash-alt,\n  \"text-height\": $fa-var-text-height,\n  \"user-xmark\": $fa-var-user-xmark,\n  \"user-times\": $fa-var-user-times,\n  \"stethoscope\": $fa-var-stethoscope,\n  \"message\": $fa-var-message,\n  \"comment-alt\": $fa-var-comment-alt,\n  \"info\": $fa-var-info,\n  \"down-left-and-up-right-to-center\": $fa-var-down-left-and-up-right-to-center,\n  \"compress-alt\": $fa-var-compress-alt,\n  \"explosion\": $fa-var-explosion,\n  \"file-lines\": $fa-var-file-lines,\n  \"file-alt\": $fa-var-file-alt,\n  \"file-text\": $fa-var-file-text,\n  \"wave-square\": $fa-var-wave-square,\n  \"ring\": $fa-var-ring,\n  \"building-un\": $fa-var-building-un,\n  \"dice-three\": $fa-var-dice-three,\n  \"calendar-days\": $fa-var-calendar-days,\n  \"calendar-alt\": $fa-var-calendar-alt,\n  \"anchor-circle-check\": $fa-var-anchor-circle-check,\n  \"building-circle-arrow-right\": $fa-var-building-circle-arrow-right,\n  \"volleyball\": $fa-var-volleyball,\n  \"volleyball-ball\": $fa-var-volleyball-ball,\n  \"arrows-up-to-line\": $fa-var-arrows-up-to-line,\n  \"sort-down\": $fa-var-sort-down,\n  \"sort-desc\": $fa-var-sort-desc,\n  \"circle-minus\": $fa-var-circle-minus,\n  \"minus-circle\": $fa-var-minus-circle,\n  \"door-open\": $fa-var-door-open,\n  \"right-from-bracket\": $fa-var-right-from-bracket,\n  \"sign-out-alt\": $fa-var-sign-out-alt,\n  \"atom\": $fa-var-atom,\n  \"soap\": $fa-var-soap,\n  \"icons\": $fa-var-icons,\n  \"heart-music-camera-bolt\": $fa-var-heart-music-camera-bolt,\n  \"microphone-lines-slash\": $fa-var-microphone-lines-slash,\n  \"microphone-alt-slash\": $fa-var-microphone-alt-slash,\n  \"bridge-circle-check\": $fa-var-bridge-circle-check,\n  \"pump-medical\": $fa-var-pump-medical,\n  \"fingerprint\": $fa-var-fingerprint,\n  \"hand-point-right\": $fa-var-hand-point-right,\n  \"magnifying-glass-location\": $fa-var-magnifying-glass-location,\n  \"search-location\": $fa-var-search-location,\n  \"forward-step\": $fa-var-forward-step,\n  \"step-forward\": $fa-var-step-forward,\n  \"face-smile-beam\": $fa-var-face-smile-beam,\n  \"smile-beam\": $fa-var-smile-beam,\n  \"flag-checkered\": $fa-var-flag-checkered,\n  \"football\": $fa-var-football,\n  \"football-ball\": $fa-var-football-ball,\n  \"school-circle-exclamation\": $fa-var-school-circle-exclamation,\n  \"crop\": $fa-var-crop,\n  \"angles-down\": $fa-var-angles-down,\n  \"angle-double-down\": $fa-var-angle-double-down,\n  \"users-rectangle\": $fa-var-users-rectangle,\n  \"people-roof\": $fa-var-people-roof,\n  \"people-line\": $fa-var-people-line,\n  \"beer-mug-empty\": $fa-var-beer-mug-empty,\n  \"beer\": $fa-var-beer,\n  \"diagram-predecessor\": $fa-var-diagram-predecessor,\n  \"arrow-up-long\": $fa-var-arrow-up-long,\n  \"long-arrow-up\": $fa-var-long-arrow-up,\n  \"fire-flame-simple\": $fa-var-fire-flame-simple,\n  \"burn\": $fa-var-burn,\n  \"person\": $fa-var-person,\n  \"male\": $fa-var-male,\n  \"laptop\": $fa-var-laptop,\n  \"file-csv\": $fa-var-file-csv,\n  \"menorah\": $fa-var-menorah,\n  \"truck-plane\": $fa-var-truck-plane,\n  \"record-vinyl\": $fa-var-record-vinyl,\n  \"face-grin-stars\": $fa-var-face-grin-stars,\n  \"grin-stars\": $fa-var-grin-stars,\n  \"bong\": $fa-var-bong,\n  \"spaghetti-monster-flying\": $fa-var-spaghetti-monster-flying,\n  \"pastafarianism\": $fa-var-pastafarianism,\n  \"arrow-down-up-across-line\": $fa-var-arrow-down-up-across-line,\n  \"spoon\": $fa-var-spoon,\n  \"utensil-spoon\": $fa-var-utensil-spoon,\n  \"jar-wheat\": $fa-var-jar-wheat,\n  \"envelopes-bulk\": $fa-var-envelopes-bulk,\n  \"mail-bulk\": $fa-var-mail-bulk,\n  \"file-circle-exclamation\": $fa-var-file-circle-exclamation,\n  \"circle-h\": $fa-var-circle-h,\n  \"hospital-symbol\": $fa-var-hospital-symbol,\n  \"pager\": $fa-var-pager,\n  \"address-book\": $fa-var-address-book,\n  \"contact-book\": $fa-var-contact-book,\n  \"strikethrough\": $fa-var-strikethrough,\n  \"k\": $fa-var-k,\n  \"landmark-flag\": $fa-var-landmark-flag,\n  \"pencil\": $fa-var-pencil,\n  \"pencil-alt\": $fa-var-pencil-alt,\n  \"backward\": $fa-var-backward,\n  \"caret-right\": $fa-var-caret-right,\n  \"comments\": $fa-var-comments,\n  \"paste\": $fa-var-paste,\n  \"file-clipboard\": $fa-var-file-clipboard,\n  \"code-pull-request\": $fa-var-code-pull-request,\n  \"clipboard-list\": $fa-var-clipboard-list,\n  \"truck-ramp-box\": $fa-var-truck-ramp-box,\n  \"truck-loading\": $fa-var-truck-loading,\n  \"user-check\": $fa-var-user-check,\n  \"vial-virus\": $fa-var-vial-virus,\n  \"sheet-plastic\": $fa-var-sheet-plastic,\n  \"blog\": $fa-var-blog,\n  \"user-ninja\": $fa-var-user-ninja,\n  \"person-arrow-up-from-line\": $fa-var-person-arrow-up-from-line,\n  \"scroll-torah\": $fa-var-scroll-torah,\n  \"torah\": $fa-var-torah,\n  \"broom-ball\": $fa-var-broom-ball,\n  \"quidditch\": $fa-var-quidditch,\n  \"quidditch-broom-ball\": $fa-var-quidditch-broom-ball,\n  \"toggle-off\": $fa-var-toggle-off,\n  \"box-archive\": $fa-var-box-archive,\n  \"archive\": $fa-var-archive,\n  \"person-drowning\": $fa-var-person-drowning,\n  \"arrow-down-9-1\": $fa-var-arrow-down-9-1,\n  \"sort-numeric-desc\": $fa-var-sort-numeric-desc,\n  \"sort-numeric-down-alt\": $fa-var-sort-numeric-down-alt,\n  \"face-grin-tongue-squint\": $fa-var-face-grin-tongue-squint,\n  \"grin-tongue-squint\": $fa-var-grin-tongue-squint,\n  \"spray-can\": $fa-var-spray-can,\n  \"truck-monster\": $fa-var-truck-monster,\n  \"w\": $fa-var-w,\n  \"earth-africa\": $fa-var-earth-africa,\n  \"globe-africa\": $fa-var-globe-africa,\n  \"rainbow\": $fa-var-rainbow,\n  \"circle-notch\": $fa-var-circle-notch,\n  \"tablet-screen-button\": $fa-var-tablet-screen-button,\n  \"tablet-alt\": $fa-var-tablet-alt,\n  \"paw\": $fa-var-paw,\n  \"cloud\": $fa-var-cloud,\n  \"trowel-bricks\": $fa-var-trowel-bricks,\n  \"face-flushed\": $fa-var-face-flushed,\n  \"flushed\": $fa-var-flushed,\n  \"hospital-user\": $fa-var-hospital-user,\n  \"tent-arrow-left-right\": $fa-var-tent-arrow-left-right,\n  \"gavel\": $fa-var-gavel,\n  \"legal\": $fa-var-legal,\n  \"binoculars\": $fa-var-binoculars,\n  \"microphone-slash\": $fa-var-microphone-slash,\n  \"box-tissue\": $fa-var-box-tissue,\n  \"motorcycle\": $fa-var-motorcycle,\n  \"bell-concierge\": $fa-var-bell-concierge,\n  \"concierge-bell\": $fa-var-concierge-bell,\n  \"pen-ruler\": $fa-var-pen-ruler,\n  \"pencil-ruler\": $fa-var-pencil-ruler,\n  \"people-arrows\": $fa-var-people-arrows,\n  \"people-arrows-left-right\": $fa-var-people-arrows-left-right,\n  \"mars-and-venus-burst\": $fa-var-mars-and-venus-burst,\n  \"square-caret-right\": $fa-var-square-caret-right,\n  \"caret-square-right\": $fa-var-caret-square-right,\n  \"scissors\": $fa-var-scissors,\n  \"cut\": $fa-var-cut,\n  \"sun-plant-wilt\": $fa-var-sun-plant-wilt,\n  \"toilets-portable\": $fa-var-toilets-portable,\n  \"hockey-puck\": $fa-var-hockey-puck,\n  \"table\": $fa-var-table,\n  \"magnifying-glass-arrow-right\": $fa-var-magnifying-glass-arrow-right,\n  \"tachograph-digital\": $fa-var-tachograph-digital,\n  \"digital-tachograph\": $fa-var-digital-tachograph,\n  \"users-slash\": $fa-var-users-slash,\n  \"clover\": $fa-var-clover,\n  \"reply\": $fa-var-reply,\n  \"mail-reply\": $fa-var-mail-reply,\n  \"star-and-crescent\": $fa-var-star-and-crescent,\n  \"house-fire\": $fa-var-house-fire,\n  \"square-minus\": $fa-var-square-minus,\n  \"minus-square\": $fa-var-minus-square,\n  \"helicopter\": $fa-var-helicopter,\n  \"compass\": $fa-var-compass,\n  \"square-caret-down\": $fa-var-square-caret-down,\n  \"caret-square-down\": $fa-var-caret-square-down,\n  \"file-circle-question\": $fa-var-file-circle-question,\n  \"laptop-code\": $fa-var-laptop-code,\n  \"swatchbook\": $fa-var-swatchbook,\n  \"prescription-bottle\": $fa-var-prescription-bottle,\n  \"bars\": $fa-var-bars,\n  \"navicon\": $fa-var-navicon,\n  \"people-group\": $fa-var-people-group,\n  \"hourglass-end\": $fa-var-hourglass-end,\n  \"hourglass-3\": $fa-var-hourglass-3,\n  \"heart-crack\": $fa-var-heart-crack,\n  \"heart-broken\": $fa-var-heart-broken,\n  \"square-up-right\": $fa-var-square-up-right,\n  \"external-link-square-alt\": $fa-var-external-link-square-alt,\n  \"face-kiss-beam\": $fa-var-face-kiss-beam,\n  \"kiss-beam\": $fa-var-kiss-beam,\n  \"film\": $fa-var-film,\n  \"ruler-horizontal\": $fa-var-ruler-horizontal,\n  \"people-robbery\": $fa-var-people-robbery,\n  \"lightbulb\": $fa-var-lightbulb,\n  \"caret-left\": $fa-var-caret-left,\n  \"circle-exclamation\": $fa-var-circle-exclamation,\n  \"exclamation-circle\": $fa-var-exclamation-circle,\n  \"school-circle-xmark\": $fa-var-school-circle-xmark,\n  \"arrow-right-from-bracket\": $fa-var-arrow-right-from-bracket,\n  \"sign-out\": $fa-var-sign-out,\n  \"circle-chevron-down\": $fa-var-circle-chevron-down,\n  \"chevron-circle-down\": $fa-var-chevron-circle-down,\n  \"unlock-keyhole\": $fa-var-unlock-keyhole,\n  \"unlock-alt\": $fa-var-unlock-alt,\n  \"cloud-showers-heavy\": $fa-var-cloud-showers-heavy,\n  \"headphones-simple\": $fa-var-headphones-simple,\n  \"headphones-alt\": $fa-var-headphones-alt,\n  \"sitemap\": $fa-var-sitemap,\n  \"circle-dollar-to-slot\": $fa-var-circle-dollar-to-slot,\n  \"donate\": $fa-var-donate,\n  \"memory\": $fa-var-memory,\n  \"road-spikes\": $fa-var-road-spikes,\n  \"fire-burner\": $fa-var-fire-burner,\n  \"flag\": $fa-var-flag,\n  \"hanukiah\": $fa-var-hanukiah,\n  \"feather\": $fa-var-feather,\n  \"volume-low\": $fa-var-volume-low,\n  \"volume-down\": $fa-var-volume-down,\n  \"comment-slash\": $fa-var-comment-slash,\n  \"cloud-sun-rain\": $fa-var-cloud-sun-rain,\n  \"compress\": $fa-var-compress,\n  \"wheat-awn\": $fa-var-wheat-awn,\n  \"wheat-alt\": $fa-var-wheat-alt,\n  \"ankh\": $fa-var-ankh,\n  \"hands-holding-child\": $fa-var-hands-holding-child,\n  \"asterisk\": $fa-var-asterisk,\n  \"square-check\": $fa-var-square-check,\n  \"check-square\": $fa-var-check-square,\n  \"peseta-sign\": $fa-var-peseta-sign,\n  \"heading\": $fa-var-heading,\n  \"header\": $fa-var-header,\n  \"ghost\": $fa-var-ghost,\n  \"list\": $fa-var-list,\n  \"list-squares\": $fa-var-list-squares,\n  \"square-phone-flip\": $fa-var-square-phone-flip,\n  \"phone-square-alt\": $fa-var-phone-square-alt,\n  \"cart-plus\": $fa-var-cart-plus,\n  \"gamepad\": $fa-var-gamepad,\n  \"circle-dot\": $fa-var-circle-dot,\n  \"dot-circle\": $fa-var-dot-circle,\n  \"face-dizzy\": $fa-var-face-dizzy,\n  \"dizzy\": $fa-var-dizzy,\n  \"egg\": $fa-var-egg,\n  \"house-medical-circle-xmark\": $fa-var-house-medical-circle-xmark,\n  \"campground\": $fa-var-campground,\n  \"folder-plus\": $fa-var-folder-plus,\n  \"futbol\": $fa-var-futbol,\n  \"futbol-ball\": $fa-var-futbol-ball,\n  \"soccer-ball\": $fa-var-soccer-ball,\n  \"paintbrush\": $fa-var-paintbrush,\n  \"paint-brush\": $fa-var-paint-brush,\n  \"lock\": $fa-var-lock,\n  \"gas-pump\": $fa-var-gas-pump,\n  \"hot-tub-person\": $fa-var-hot-tub-person,\n  \"hot-tub\": $fa-var-hot-tub,\n  \"map-location\": $fa-var-map-location,\n  \"map-marked\": $fa-var-map-marked,\n  \"house-flood-water\": $fa-var-house-flood-water,\n  \"tree\": $fa-var-tree,\n  \"bridge-lock\": $fa-var-bridge-lock,\n  \"sack-dollar\": $fa-var-sack-dollar,\n  \"pen-to-square\": $fa-var-pen-to-square,\n  \"edit\": $fa-var-edit,\n  \"car-side\": $fa-var-car-side,\n  \"share-nodes\": $fa-var-share-nodes,\n  \"share-alt\": $fa-var-share-alt,\n  \"heart-circle-minus\": $fa-var-heart-circle-minus,\n  \"hourglass-half\": $fa-var-hourglass-half,\n  \"hourglass-2\": $fa-var-hourglass-2,\n  \"microscope\": $fa-var-microscope,\n  \"sink\": $fa-var-sink,\n  \"bag-shopping\": $fa-var-bag-shopping,\n  \"shopping-bag\": $fa-var-shopping-bag,\n  \"arrow-down-z-a\": $fa-var-arrow-down-z-a,\n  \"sort-alpha-desc\": $fa-var-sort-alpha-desc,\n  \"sort-alpha-down-alt\": $fa-var-sort-alpha-down-alt,\n  \"mitten\": $fa-var-mitten,\n  \"person-rays\": $fa-var-person-rays,\n  \"users\": $fa-var-users,\n  \"eye-slash\": $fa-var-eye-slash,\n  \"flask-vial\": $fa-var-flask-vial,\n  \"hand\": $fa-var-hand,\n  \"hand-paper\": $fa-var-hand-paper,\n  \"om\": $fa-var-om,\n  \"worm\": $fa-var-worm,\n  \"house-circle-xmark\": $fa-var-house-circle-xmark,\n  \"plug\": $fa-var-plug,\n  \"chevron-up\": $fa-var-chevron-up,\n  \"hand-spock\": $fa-var-hand-spock,\n  \"stopwatch\": $fa-var-stopwatch,\n  \"face-kiss\": $fa-var-face-kiss,\n  \"kiss\": $fa-var-kiss,\n  \"bridge-circle-xmark\": $fa-var-bridge-circle-xmark,\n  \"face-grin-tongue\": $fa-var-face-grin-tongue,\n  \"grin-tongue\": $fa-var-grin-tongue,\n  \"chess-bishop\": $fa-var-chess-bishop,\n  \"face-grin-wink\": $fa-var-face-grin-wink,\n  \"grin-wink\": $fa-var-grin-wink,\n  \"ear-deaf\": $fa-var-ear-deaf,\n  \"deaf\": $fa-var-deaf,\n  \"deafness\": $fa-var-deafness,\n  \"hard-of-hearing\": $fa-var-hard-of-hearing,\n  \"road-circle-check\": $fa-var-road-circle-check,\n  \"dice-five\": $fa-var-dice-five,\n  \"square-rss\": $fa-var-square-rss,\n  \"rss-square\": $fa-var-rss-square,\n  \"land-mine-on\": $fa-var-land-mine-on,\n  \"i-cursor\": $fa-var-i-cursor,\n  \"stamp\": $fa-var-stamp,\n  \"stairs\": $fa-var-stairs,\n  \"i\": $fa-var-i,\n  \"hryvnia-sign\": $fa-var-hryvnia-sign,\n  \"hryvnia\": $fa-var-hryvnia,\n  \"pills\": $fa-var-pills,\n  \"face-grin-wide\": $fa-var-face-grin-wide,\n  \"grin-alt\": $fa-var-grin-alt,\n  \"tooth\": $fa-var-tooth,\n  \"v\": $fa-var-v,\n  \"bangladeshi-taka-sign\": $fa-var-bangladeshi-taka-sign,\n  \"bicycle\": $fa-var-bicycle,\n  \"staff-snake\": $fa-var-staff-snake,\n  \"rod-asclepius\": $fa-var-rod-asclepius,\n  \"rod-snake\": $fa-var-rod-snake,\n  \"staff-aesculapius\": $fa-var-staff-aesculapius,\n  \"head-side-cough-slash\": $fa-var-head-side-cough-slash,\n  \"truck-medical\": $fa-var-truck-medical,\n  \"ambulance\": $fa-var-ambulance,\n  \"wheat-awn-circle-exclamation\": $fa-var-wheat-awn-circle-exclamation,\n  \"snowman\": $fa-var-snowman,\n  \"mortar-pestle\": $fa-var-mortar-pestle,\n  \"road-barrier\": $fa-var-road-barrier,\n  \"school\": $fa-var-school,\n  \"igloo\": $fa-var-igloo,\n  \"joint\": $fa-var-joint,\n  \"angle-right\": $fa-var-angle-right,\n  \"horse\": $fa-var-horse,\n  \"q\": $fa-var-q,\n  \"g\": $fa-var-g,\n  \"notes-medical\": $fa-var-notes-medical,\n  \"temperature-half\": $fa-var-temperature-half,\n  \"temperature-2\": $fa-var-temperature-2,\n  \"thermometer-2\": $fa-var-thermometer-2,\n  \"thermometer-half\": $fa-var-thermometer-half,\n  \"dong-sign\": $fa-var-dong-sign,\n  \"capsules\": $fa-var-capsules,\n  \"poo-storm\": $fa-var-poo-storm,\n  \"poo-bolt\": $fa-var-poo-bolt,\n  \"face-frown-open\": $fa-var-face-frown-open,\n  \"frown-open\": $fa-var-frown-open,\n  \"hand-point-up\": $fa-var-hand-point-up,\n  \"money-bill\": $fa-var-money-bill,\n  \"bookmark\": $fa-var-bookmark,\n  \"align-justify\": $fa-var-align-justify,\n  \"umbrella-beach\": $fa-var-umbrella-beach,\n  \"helmet-un\": $fa-var-helmet-un,\n  \"bullseye\": $fa-var-bullseye,\n  \"bacon\": $fa-var-bacon,\n  \"hand-point-down\": $fa-var-hand-point-down,\n  \"arrow-up-from-bracket\": $fa-var-arrow-up-from-bracket,\n  \"folder\": $fa-var-folder,\n  \"folder-blank\": $fa-var-folder-blank,\n  \"file-waveform\": $fa-var-file-waveform,\n  \"file-medical-alt\": $fa-var-file-medical-alt,\n  \"radiation\": $fa-var-radiation,\n  \"chart-simple\": $fa-var-chart-simple,\n  \"mars-stroke\": $fa-var-mars-stroke,\n  \"vial\": $fa-var-vial,\n  \"gauge\": $fa-var-gauge,\n  \"dashboard\": $fa-var-dashboard,\n  \"gauge-med\": $fa-var-gauge-med,\n  \"tachometer-alt-average\": $fa-var-tachometer-alt-average,\n  \"wand-magic-sparkles\": $fa-var-wand-magic-sparkles,\n  \"magic-wand-sparkles\": $fa-var-magic-wand-sparkles,\n  \"e\": $fa-var-e,\n  \"pen-clip\": $fa-var-pen-clip,\n  \"pen-alt\": $fa-var-pen-alt,\n  \"bridge-circle-exclamation\": $fa-var-bridge-circle-exclamation,\n  \"user\": $fa-var-user,\n  \"school-circle-check\": $fa-var-school-circle-check,\n  \"dumpster\": $fa-var-dumpster,\n  \"van-shuttle\": $fa-var-van-shuttle,\n  \"shuttle-van\": $fa-var-shuttle-van,\n  \"building-user\": $fa-var-building-user,\n  \"square-caret-left\": $fa-var-square-caret-left,\n  \"caret-square-left\": $fa-var-caret-square-left,\n  \"highlighter\": $fa-var-highlighter,\n  \"key\": $fa-var-key,\n  \"bullhorn\": $fa-var-bullhorn,\n  \"globe\": $fa-var-globe,\n  \"synagogue\": $fa-var-synagogue,\n  \"person-half-dress\": $fa-var-person-half-dress,\n  \"road-bridge\": $fa-var-road-bridge,\n  \"location-arrow\": $fa-var-location-arrow,\n  \"c\": $fa-var-c,\n  \"tablet-button\": $fa-var-tablet-button,\n  \"building-lock\": $fa-var-building-lock,\n  \"pizza-slice\": $fa-var-pizza-slice,\n  \"money-bill-wave\": $fa-var-money-bill-wave,\n  \"chart-area\": $fa-var-chart-area,\n  \"area-chart\": $fa-var-area-chart,\n  \"house-flag\": $fa-var-house-flag,\n  \"person-circle-minus\": $fa-var-person-circle-minus,\n  \"ban\": $fa-var-ban,\n  \"cancel\": $fa-var-cancel,\n  \"camera-rotate\": $fa-var-camera-rotate,\n  \"spray-can-sparkles\": $fa-var-spray-can-sparkles,\n  \"air-freshener\": $fa-var-air-freshener,\n  \"star\": $fa-var-star,\n  \"repeat\": $fa-var-repeat,\n  \"cross\": $fa-var-cross,\n  \"box\": $fa-var-box,\n  \"venus-mars\": $fa-var-venus-mars,\n  \"arrow-pointer\": $fa-var-arrow-pointer,\n  \"mouse-pointer\": $fa-var-mouse-pointer,\n  \"maximize\": $fa-var-maximize,\n  \"expand-arrows-alt\": $fa-var-expand-arrows-alt,\n  \"charging-station\": $fa-var-charging-station,\n  \"shapes\": $fa-var-shapes,\n  \"triangle-circle-square\": $fa-var-triangle-circle-square,\n  \"shuffle\": $fa-var-shuffle,\n  \"random\": $fa-var-random,\n  \"person-running\": $fa-var-person-running,\n  \"running\": $fa-var-running,\n  \"mobile-retro\": $fa-var-mobile-retro,\n  \"grip-lines-vertical\": $fa-var-grip-lines-vertical,\n  \"spider\": $fa-var-spider,\n  \"hands-bound\": $fa-var-hands-bound,\n  \"file-invoice-dollar\": $fa-var-file-invoice-dollar,\n  \"plane-circle-exclamation\": $fa-var-plane-circle-exclamation,\n  \"x-ray\": $fa-var-x-ray,\n  \"spell-check\": $fa-var-spell-check,\n  \"slash\": $fa-var-slash,\n  \"computer-mouse\": $fa-var-computer-mouse,\n  \"mouse\": $fa-var-mouse,\n  \"arrow-right-to-bracket\": $fa-var-arrow-right-to-bracket,\n  \"sign-in\": $fa-var-sign-in,\n  \"shop-slash\": $fa-var-shop-slash,\n  \"store-alt-slash\": $fa-var-store-alt-slash,\n  \"server\": $fa-var-server,\n  \"virus-covid-slash\": $fa-var-virus-covid-slash,\n  \"shop-lock\": $fa-var-shop-lock,\n  \"hourglass-start\": $fa-var-hourglass-start,\n  \"hourglass-1\": $fa-var-hourglass-1,\n  \"blender-phone\": $fa-var-blender-phone,\n  \"building-wheat\": $fa-var-building-wheat,\n  \"person-breastfeeding\": $fa-var-person-breastfeeding,\n  \"right-to-bracket\": $fa-var-right-to-bracket,\n  \"sign-in-alt\": $fa-var-sign-in-alt,\n  \"venus\": $fa-var-venus,\n  \"passport\": $fa-var-passport,\n  \"heart-pulse\": $fa-var-heart-pulse,\n  \"heartbeat\": $fa-var-heartbeat,\n  \"people-carry-box\": $fa-var-people-carry-box,\n  \"people-carry\": $fa-var-people-carry,\n  \"temperature-high\": $fa-var-temperature-high,\n  \"microchip\": $fa-var-microchip,\n  \"crown\": $fa-var-crown,\n  \"weight-hanging\": $fa-var-weight-hanging,\n  \"xmarks-lines\": $fa-var-xmarks-lines,\n  \"file-prescription\": $fa-var-file-prescription,\n  \"weight-scale\": $fa-var-weight-scale,\n  \"weight\": $fa-var-weight,\n  \"user-group\": $fa-var-user-group,\n  \"user-friends\": $fa-var-user-friends,\n  \"arrow-up-a-z\": $fa-var-arrow-up-a-z,\n  \"sort-alpha-up\": $fa-var-sort-alpha-up,\n  \"chess-knight\": $fa-var-chess-knight,\n  \"face-laugh-squint\": $fa-var-face-laugh-squint,\n  \"laugh-squint\": $fa-var-laugh-squint,\n  \"wheelchair\": $fa-var-wheelchair,\n  \"circle-arrow-up\": $fa-var-circle-arrow-up,\n  \"arrow-circle-up\": $fa-var-arrow-circle-up,\n  \"toggle-on\": $fa-var-toggle-on,\n  \"person-walking\": $fa-var-person-walking,\n  \"walking\": $fa-var-walking,\n  \"l\": $fa-var-l,\n  \"fire\": $fa-var-fire,\n  \"bed-pulse\": $fa-var-bed-pulse,\n  \"procedures\": $fa-var-procedures,\n  \"shuttle-space\": $fa-var-shuttle-space,\n  \"space-shuttle\": $fa-var-space-shuttle,\n  \"face-laugh\": $fa-var-face-laugh,\n  \"laugh\": $fa-var-laugh,\n  \"folder-open\": $fa-var-folder-open,\n  \"heart-circle-plus\": $fa-var-heart-circle-plus,\n  \"code-fork\": $fa-var-code-fork,\n  \"city\": $fa-var-city,\n  \"microphone-lines\": $fa-var-microphone-lines,\n  \"microphone-alt\": $fa-var-microphone-alt,\n  \"pepper-hot\": $fa-var-pepper-hot,\n  \"unlock\": $fa-var-unlock,\n  \"colon-sign\": $fa-var-colon-sign,\n  \"headset\": $fa-var-headset,\n  \"store-slash\": $fa-var-store-slash,\n  \"road-circle-xmark\": $fa-var-road-circle-xmark,\n  \"user-minus\": $fa-var-user-minus,\n  \"mars-stroke-up\": $fa-var-mars-stroke-up,\n  \"mars-stroke-v\": $fa-var-mars-stroke-v,\n  \"champagne-glasses\": $fa-var-champagne-glasses,\n  \"glass-cheers\": $fa-var-glass-cheers,\n  \"clipboard\": $fa-var-clipboard,\n  \"house-circle-exclamation\": $fa-var-house-circle-exclamation,\n  \"file-arrow-up\": $fa-var-file-arrow-up,\n  \"file-upload\": $fa-var-file-upload,\n  \"wifi\": $fa-var-wifi,\n  \"wifi-3\": $fa-var-wifi-3,\n  \"wifi-strong\": $fa-var-wifi-strong,\n  \"bath\": $fa-var-bath,\n  \"bathtub\": $fa-var-bathtub,\n  \"underline\": $fa-var-underline,\n  \"user-pen\": $fa-var-user-pen,\n  \"user-edit\": $fa-var-user-edit,\n  \"signature\": $fa-var-signature,\n  \"stroopwafel\": $fa-var-stroopwafel,\n  \"bold\": $fa-var-bold,\n  \"anchor-lock\": $fa-var-anchor-lock,\n  \"building-ngo\": $fa-var-building-ngo,\n  \"manat-sign\": $fa-var-manat-sign,\n  \"not-equal\": $fa-var-not-equal,\n  \"border-top-left\": $fa-var-border-top-left,\n  \"border-style\": $fa-var-border-style,\n  \"map-location-dot\": $fa-var-map-location-dot,\n  \"map-marked-alt\": $fa-var-map-marked-alt,\n  \"jedi\": $fa-var-jedi,\n  \"square-poll-vertical\": $fa-var-square-poll-vertical,\n  \"poll\": $fa-var-poll,\n  \"mug-hot\": $fa-var-mug-hot,\n  \"car-battery\": $fa-var-car-battery,\n  \"battery-car\": $fa-var-battery-car,\n  \"gift\": $fa-var-gift,\n  \"dice-two\": $fa-var-dice-two,\n  \"chess-queen\": $fa-var-chess-queen,\n  \"glasses\": $fa-var-glasses,\n  \"chess-board\": $fa-var-chess-board,\n  \"building-circle-check\": $fa-var-building-circle-check,\n  \"person-chalkboard\": $fa-var-person-chalkboard,\n  \"mars-stroke-right\": $fa-var-mars-stroke-right,\n  \"mars-stroke-h\": $fa-var-mars-stroke-h,\n  \"hand-back-fist\": $fa-var-hand-back-fist,\n  \"hand-rock\": $fa-var-hand-rock,\n  \"square-caret-up\": $fa-var-square-caret-up,\n  \"caret-square-up\": $fa-var-caret-square-up,\n  \"cloud-showers-water\": $fa-var-cloud-showers-water,\n  \"chart-bar\": $fa-var-chart-bar,\n  \"bar-chart\": $fa-var-bar-chart,\n  \"hands-bubbles\": $fa-var-hands-bubbles,\n  \"hands-wash\": $fa-var-hands-wash,\n  \"less-than-equal\": $fa-var-less-than-equal,\n  \"train\": $fa-var-train,\n  \"eye-low-vision\": $fa-var-eye-low-vision,\n  \"low-vision\": $fa-var-low-vision,\n  \"crow\": $fa-var-crow,\n  \"sailboat\": $fa-var-sailboat,\n  \"window-restore\": $fa-var-window-restore,\n  \"square-plus\": $fa-var-square-plus,\n  \"plus-square\": $fa-var-plus-square,\n  \"torii-gate\": $fa-var-torii-gate,\n  \"frog\": $fa-var-frog,\n  \"bucket\": $fa-var-bucket,\n  \"image\": $fa-var-image,\n  \"microphone\": $fa-var-microphone,\n  \"cow\": $fa-var-cow,\n  \"caret-up\": $fa-var-caret-up,\n  \"screwdriver\": $fa-var-screwdriver,\n  \"folder-closed\": $fa-var-folder-closed,\n  \"house-tsunami\": $fa-var-house-tsunami,\n  \"square-nfi\": $fa-var-square-nfi,\n  \"arrow-up-from-ground-water\": $fa-var-arrow-up-from-ground-water,\n  \"martini-glass\": $fa-var-martini-glass,\n  \"glass-martini-alt\": $fa-var-glass-martini-alt,\n  \"rotate-left\": $fa-var-rotate-left,\n  \"rotate-back\": $fa-var-rotate-back,\n  \"rotate-backward\": $fa-var-rotate-backward,\n  \"undo-alt\": $fa-var-undo-alt,\n  \"table-columns\": $fa-var-table-columns,\n  \"columns\": $fa-var-columns,\n  \"lemon\": $fa-var-lemon,\n  \"head-side-mask\": $fa-var-head-side-mask,\n  \"handshake\": $fa-var-handshake,\n  \"gem\": $fa-var-gem,\n  \"dolly\": $fa-var-dolly,\n  \"dolly-box\": $fa-var-dolly-box,\n  \"smoking\": $fa-var-smoking,\n  \"minimize\": $fa-var-minimize,\n  \"compress-arrows-alt\": $fa-var-compress-arrows-alt,\n  \"monument\": $fa-var-monument,\n  \"snowplow\": $fa-var-snowplow,\n  \"angles-right\": $fa-var-angles-right,\n  \"angle-double-right\": $fa-var-angle-double-right,\n  \"cannabis\": $fa-var-cannabis,\n  \"circle-play\": $fa-var-circle-play,\n  \"play-circle\": $fa-var-play-circle,\n  \"tablets\": $fa-var-tablets,\n  \"ethernet\": $fa-var-ethernet,\n  \"euro-sign\": $fa-var-euro-sign,\n  \"eur\": $fa-var-eur,\n  \"euro\": $fa-var-euro,\n  \"chair\": $fa-var-chair,\n  \"circle-check\": $fa-var-circle-check,\n  \"check-circle\": $fa-var-check-circle,\n  \"circle-stop\": $fa-var-circle-stop,\n  \"stop-circle\": $fa-var-stop-circle,\n  \"compass-drafting\": $fa-var-compass-drafting,\n  \"drafting-compass\": $fa-var-drafting-compass,\n  \"plate-wheat\": $fa-var-plate-wheat,\n  \"icicles\": $fa-var-icicles,\n  \"person-shelter\": $fa-var-person-shelter,\n  \"neuter\": $fa-var-neuter,\n  \"id-badge\": $fa-var-id-badge,\n  \"marker\": $fa-var-marker,\n  \"face-laugh-beam\": $fa-var-face-laugh-beam,\n  \"laugh-beam\": $fa-var-laugh-beam,\n  \"helicopter-symbol\": $fa-var-helicopter-symbol,\n  \"universal-access\": $fa-var-universal-access,\n  \"circle-chevron-up\": $fa-var-circle-chevron-up,\n  \"chevron-circle-up\": $fa-var-chevron-circle-up,\n  \"lari-sign\": $fa-var-lari-sign,\n  \"volcano\": $fa-var-volcano,\n  \"person-walking-dashed-line-arrow-right\": $fa-var-person-walking-dashed-line-arrow-right,\n  \"sterling-sign\": $fa-var-sterling-sign,\n  \"gbp\": $fa-var-gbp,\n  \"pound-sign\": $fa-var-pound-sign,\n  \"viruses\": $fa-var-viruses,\n  \"square-person-confined\": $fa-var-square-person-confined,\n  \"user-tie\": $fa-var-user-tie,\n  \"arrow-down-long\": $fa-var-arrow-down-long,\n  \"long-arrow-down\": $fa-var-long-arrow-down,\n  \"tent-arrow-down-to-line\": $fa-var-tent-arrow-down-to-line,\n  \"certificate\": $fa-var-certificate,\n  \"reply-all\": $fa-var-reply-all,\n  \"mail-reply-all\": $fa-var-mail-reply-all,\n  \"suitcase\": $fa-var-suitcase,\n  \"person-skating\": $fa-var-person-skating,\n  \"skating\": $fa-var-skating,\n  \"filter-circle-dollar\": $fa-var-filter-circle-dollar,\n  \"funnel-dollar\": $fa-var-funnel-dollar,\n  \"camera-retro\": $fa-var-camera-retro,\n  \"circle-arrow-down\": $fa-var-circle-arrow-down,\n  \"arrow-circle-down\": $fa-var-arrow-circle-down,\n  \"file-import\": $fa-var-file-import,\n  \"arrow-right-to-file\": $fa-var-arrow-right-to-file,\n  \"square-arrow-up-right\": $fa-var-square-arrow-up-right,\n  \"external-link-square\": $fa-var-external-link-square,\n  \"box-open\": $fa-var-box-open,\n  \"scroll\": $fa-var-scroll,\n  \"spa\": $fa-var-spa,\n  \"location-pin-lock\": $fa-var-location-pin-lock,\n  \"pause\": $fa-var-pause,\n  \"hill-avalanche\": $fa-var-hill-avalanche,\n  \"temperature-empty\": $fa-var-temperature-empty,\n  \"temperature-0\": $fa-var-temperature-0,\n  \"thermometer-0\": $fa-var-thermometer-0,\n  \"thermometer-empty\": $fa-var-thermometer-empty,\n  \"bomb\": $fa-var-bomb,\n  \"registered\": $fa-var-registered,\n  \"address-card\": $fa-var-address-card,\n  \"contact-card\": $fa-var-contact-card,\n  \"vcard\": $fa-var-vcard,\n  \"scale-unbalanced-flip\": $fa-var-scale-unbalanced-flip,\n  \"balance-scale-right\": $fa-var-balance-scale-right,\n  \"subscript\": $fa-var-subscript,\n  \"diamond-turn-right\": $fa-var-diamond-turn-right,\n  \"directions\": $fa-var-directions,\n  \"burst\": $fa-var-burst,\n  \"house-laptop\": $fa-var-house-laptop,\n  \"laptop-house\": $fa-var-laptop-house,\n  \"face-tired\": $fa-var-face-tired,\n  \"tired\": $fa-var-tired,\n  \"money-bills\": $fa-var-money-bills,\n  \"smog\": $fa-var-smog,\n  \"crutch\": $fa-var-crutch,\n  \"cloud-arrow-up\": $fa-var-cloud-arrow-up,\n  \"cloud-upload\": $fa-var-cloud-upload,\n  \"cloud-upload-alt\": $fa-var-cloud-upload-alt,\n  \"palette\": $fa-var-palette,\n  \"arrows-turn-right\": $fa-var-arrows-turn-right,\n  \"vest\": $fa-var-vest,\n  \"ferry\": $fa-var-ferry,\n  \"arrows-down-to-people\": $fa-var-arrows-down-to-people,\n  \"seedling\": $fa-var-seedling,\n  \"sprout\": $fa-var-sprout,\n  \"left-right\": $fa-var-left-right,\n  \"arrows-alt-h\": $fa-var-arrows-alt-h,\n  \"boxes-packing\": $fa-var-boxes-packing,\n  \"circle-arrow-left\": $fa-var-circle-arrow-left,\n  \"arrow-circle-left\": $fa-var-arrow-circle-left,\n  \"group-arrows-rotate\": $fa-var-group-arrows-rotate,\n  \"bowl-food\": $fa-var-bowl-food,\n  \"candy-cane\": $fa-var-candy-cane,\n  \"arrow-down-wide-short\": $fa-var-arrow-down-wide-short,\n  \"sort-amount-asc\": $fa-var-sort-amount-asc,\n  \"sort-amount-down\": $fa-var-sort-amount-down,\n  \"cloud-bolt\": $fa-var-cloud-bolt,\n  \"thunderstorm\": $fa-var-thunderstorm,\n  \"text-slash\": $fa-var-text-slash,\n  \"remove-format\": $fa-var-remove-format,\n  \"face-smile-wink\": $fa-var-face-smile-wink,\n  \"smile-wink\": $fa-var-smile-wink,\n  \"file-word\": $fa-var-file-word,\n  \"file-powerpoint\": $fa-var-file-powerpoint,\n  \"arrows-left-right\": $fa-var-arrows-left-right,\n  \"arrows-h\": $fa-var-arrows-h,\n  \"house-lock\": $fa-var-house-lock,\n  \"cloud-arrow-down\": $fa-var-cloud-arrow-down,\n  \"cloud-download\": $fa-var-cloud-download,\n  \"cloud-download-alt\": $fa-var-cloud-download-alt,\n  \"children\": $fa-var-children,\n  \"chalkboard\": $fa-var-chalkboard,\n  \"blackboard\": $fa-var-blackboard,\n  \"user-large-slash\": $fa-var-user-large-slash,\n  \"user-alt-slash\": $fa-var-user-alt-slash,\n  \"envelope-open\": $fa-var-envelope-open,\n  \"handshake-simple-slash\": $fa-var-handshake-simple-slash,\n  \"handshake-alt-slash\": $fa-var-handshake-alt-slash,\n  \"mattress-pillow\": $fa-var-mattress-pillow,\n  \"guarani-sign\": $fa-var-guarani-sign,\n  \"arrows-rotate\": $fa-var-arrows-rotate,\n  \"refresh\": $fa-var-refresh,\n  \"sync\": $fa-var-sync,\n  \"fire-extinguisher\": $fa-var-fire-extinguisher,\n  \"cruzeiro-sign\": $fa-var-cruzeiro-sign,\n  \"greater-than-equal\": $fa-var-greater-than-equal,\n  \"shield-halved\": $fa-var-shield-halved,\n  \"shield-alt\": $fa-var-shield-alt,\n  \"book-atlas\": $fa-var-book-atlas,\n  \"atlas\": $fa-var-atlas,\n  \"virus\": $fa-var-virus,\n  \"envelope-circle-check\": $fa-var-envelope-circle-check,\n  \"layer-group\": $fa-var-layer-group,\n  \"arrows-to-dot\": $fa-var-arrows-to-dot,\n  \"archway\": $fa-var-archway,\n  \"heart-circle-check\": $fa-var-heart-circle-check,\n  \"house-chimney-crack\": $fa-var-house-chimney-crack,\n  \"house-damage\": $fa-var-house-damage,\n  \"file-zipper\": $fa-var-file-zipper,\n  \"file-archive\": $fa-var-file-archive,\n  \"square\": $fa-var-square,\n  \"martini-glass-empty\": $fa-var-martini-glass-empty,\n  \"glass-martini\": $fa-var-glass-martini,\n  \"couch\": $fa-var-couch,\n  \"cedi-sign\": $fa-var-cedi-sign,\n  \"italic\": $fa-var-italic,\n  \"table-cells-column-lock\": $fa-var-table-cells-column-lock,\n  \"church\": $fa-var-church,\n  \"comments-dollar\": $fa-var-comments-dollar,\n  \"democrat\": $fa-var-democrat,\n  \"z\": $fa-var-z,\n  \"person-skiing\": $fa-var-person-skiing,\n  \"skiing\": $fa-var-skiing,\n  \"road-lock\": $fa-var-road-lock,\n  \"a\": $fa-var-a,\n  \"temperature-arrow-down\": $fa-var-temperature-arrow-down,\n  \"temperature-down\": $fa-var-temperature-down,\n  \"feather-pointed\": $fa-var-feather-pointed,\n  \"feather-alt\": $fa-var-feather-alt,\n  \"p\": $fa-var-p,\n  \"snowflake\": $fa-var-snowflake,\n  \"newspaper\": $fa-var-newspaper,\n  \"rectangle-ad\": $fa-var-rectangle-ad,\n  \"ad\": $fa-var-ad,\n  \"circle-arrow-right\": $fa-var-circle-arrow-right,\n  \"arrow-circle-right\": $fa-var-arrow-circle-right,\n  \"filter-circle-xmark\": $fa-var-filter-circle-xmark,\n  \"locust\": $fa-var-locust,\n  \"sort\": $fa-var-sort,\n  \"unsorted\": $fa-var-unsorted,\n  \"list-ol\": $fa-var-list-ol,\n  \"list-1-2\": $fa-var-list-1-2,\n  \"list-numeric\": $fa-var-list-numeric,\n  \"person-dress-burst\": $fa-var-person-dress-burst,\n  \"money-check-dollar\": $fa-var-money-check-dollar,\n  \"money-check-alt\": $fa-var-money-check-alt,\n  \"vector-square\": $fa-var-vector-square,\n  \"bread-slice\": $fa-var-bread-slice,\n  \"language\": $fa-var-language,\n  \"face-kiss-wink-heart\": $fa-var-face-kiss-wink-heart,\n  \"kiss-wink-heart\": $fa-var-kiss-wink-heart,\n  \"filter\": $fa-var-filter,\n  \"question\": $fa-var-question,\n  \"file-signature\": $fa-var-file-signature,\n  \"up-down-left-right\": $fa-var-up-down-left-right,\n  \"arrows-alt\": $fa-var-arrows-alt,\n  \"house-chimney-user\": $fa-var-house-chimney-user,\n  \"hand-holding-heart\": $fa-var-hand-holding-heart,\n  \"puzzle-piece\": $fa-var-puzzle-piece,\n  \"money-check\": $fa-var-money-check,\n  \"star-half-stroke\": $fa-var-star-half-stroke,\n  \"star-half-alt\": $fa-var-star-half-alt,\n  \"code\": $fa-var-code,\n  \"whiskey-glass\": $fa-var-whiskey-glass,\n  \"glass-whiskey\": $fa-var-glass-whiskey,\n  \"building-circle-exclamation\": $fa-var-building-circle-exclamation,\n  \"magnifying-glass-chart\": $fa-var-magnifying-glass-chart,\n  \"arrow-up-right-from-square\": $fa-var-arrow-up-right-from-square,\n  \"external-link\": $fa-var-external-link,\n  \"cubes-stacked\": $fa-var-cubes-stacked,\n  \"won-sign\": $fa-var-won-sign,\n  \"krw\": $fa-var-krw,\n  \"won\": $fa-var-won,\n  \"virus-covid\": $fa-var-virus-covid,\n  \"austral-sign\": $fa-var-austral-sign,\n  \"f\": $fa-var-f,\n  \"leaf\": $fa-var-leaf,\n  \"road\": $fa-var-road,\n  \"taxi\": $fa-var-taxi,\n  \"cab\": $fa-var-cab,\n  \"person-circle-plus\": $fa-var-person-circle-plus,\n  \"chart-pie\": $fa-var-chart-pie,\n  \"pie-chart\": $fa-var-pie-chart,\n  \"bolt-lightning\": $fa-var-bolt-lightning,\n  \"sack-xmark\": $fa-var-sack-xmark,\n  \"file-excel\": $fa-var-file-excel,\n  \"file-contract\": $fa-var-file-contract,\n  \"fish-fins\": $fa-var-fish-fins,\n  \"building-flag\": $fa-var-building-flag,\n  \"face-grin-beam\": $fa-var-face-grin-beam,\n  \"grin-beam\": $fa-var-grin-beam,\n  \"object-ungroup\": $fa-var-object-ungroup,\n  \"poop\": $fa-var-poop,\n  \"location-pin\": $fa-var-location-pin,\n  \"map-marker\": $fa-var-map-marker,\n  \"kaaba\": $fa-var-kaaba,\n  \"toilet-paper\": $fa-var-toilet-paper,\n  \"helmet-safety\": $fa-var-helmet-safety,\n  \"hard-hat\": $fa-var-hard-hat,\n  \"hat-hard\": $fa-var-hat-hard,\n  \"eject\": $fa-var-eject,\n  \"circle-right\": $fa-var-circle-right,\n  \"arrow-alt-circle-right\": $fa-var-arrow-alt-circle-right,\n  \"plane-circle-check\": $fa-var-plane-circle-check,\n  \"face-rolling-eyes\": $fa-var-face-rolling-eyes,\n  \"meh-rolling-eyes\": $fa-var-meh-rolling-eyes,\n  \"object-group\": $fa-var-object-group,\n  \"chart-line\": $fa-var-chart-line,\n  \"line-chart\": $fa-var-line-chart,\n  \"mask-ventilator\": $fa-var-mask-ventilator,\n  \"arrow-right\": $fa-var-arrow-right,\n  \"signs-post\": $fa-var-signs-post,\n  \"map-signs\": $fa-var-map-signs,\n  \"cash-register\": $fa-var-cash-register,\n  \"person-circle-question\": $fa-var-person-circle-question,\n  \"h\": $fa-var-h,\n  \"tarp\": $fa-var-tarp,\n  \"screwdriver-wrench\": $fa-var-screwdriver-wrench,\n  \"tools\": $fa-var-tools,\n  \"arrows-to-eye\": $fa-var-arrows-to-eye,\n  \"plug-circle-bolt\": $fa-var-plug-circle-bolt,\n  \"heart\": $fa-var-heart,\n  \"mars-and-venus\": $fa-var-mars-and-venus,\n  \"house-user\": $fa-var-house-user,\n  \"home-user\": $fa-var-home-user,\n  \"dumpster-fire\": $fa-var-dumpster-fire,\n  \"house-crack\": $fa-var-house-crack,\n  \"martini-glass-citrus\": $fa-var-martini-glass-citrus,\n  \"cocktail\": $fa-var-cocktail,\n  \"face-surprise\": $fa-var-face-surprise,\n  \"surprise\": $fa-var-surprise,\n  \"bottle-water\": $fa-var-bottle-water,\n  \"circle-pause\": $fa-var-circle-pause,\n  \"pause-circle\": $fa-var-pause-circle,\n  \"toilet-paper-slash\": $fa-var-toilet-paper-slash,\n  \"apple-whole\": $fa-var-apple-whole,\n  \"apple-alt\": $fa-var-apple-alt,\n  \"kitchen-set\": $fa-var-kitchen-set,\n  \"r\": $fa-var-r,\n  \"temperature-quarter\": $fa-var-temperature-quarter,\n  \"temperature-1\": $fa-var-temperature-1,\n  \"thermometer-1\": $fa-var-thermometer-1,\n  \"thermometer-quarter\": $fa-var-thermometer-quarter,\n  \"cube\": $fa-var-cube,\n  \"bitcoin-sign\": $fa-var-bitcoin-sign,\n  \"shield-dog\": $fa-var-shield-dog,\n  \"solar-panel\": $fa-var-solar-panel,\n  \"lock-open\": $fa-var-lock-open,\n  \"elevator\": $fa-var-elevator,\n  \"money-bill-transfer\": $fa-var-money-bill-transfer,\n  \"money-bill-trend-up\": $fa-var-money-bill-trend-up,\n  \"house-flood-water-circle-arrow-right\": $fa-var-house-flood-water-circle-arrow-right,\n  \"square-poll-horizontal\": $fa-var-square-poll-horizontal,\n  \"poll-h\": $fa-var-poll-h,\n  \"circle\": $fa-var-circle,\n  \"backward-fast\": $fa-var-backward-fast,\n  \"fast-backward\": $fa-var-fast-backward,\n  \"recycle\": $fa-var-recycle,\n  \"user-astronaut\": $fa-var-user-astronaut,\n  \"plane-slash\": $fa-var-plane-slash,\n  \"trademark\": $fa-var-trademark,\n  \"basketball\": $fa-var-basketball,\n  \"basketball-ball\": $fa-var-basketball-ball,\n  \"satellite-dish\": $fa-var-satellite-dish,\n  \"circle-up\": $fa-var-circle-up,\n  \"arrow-alt-circle-up\": $fa-var-arrow-alt-circle-up,\n  \"mobile-screen-button\": $fa-var-mobile-screen-button,\n  \"mobile-alt\": $fa-var-mobile-alt,\n  \"volume-high\": $fa-var-volume-high,\n  \"volume-up\": $fa-var-volume-up,\n  \"users-rays\": $fa-var-users-rays,\n  \"wallet\": $fa-var-wallet,\n  \"clipboard-check\": $fa-var-clipboard-check,\n  \"file-audio\": $fa-var-file-audio,\n  \"burger\": $fa-var-burger,\n  \"hamburger\": $fa-var-hamburger,\n  \"wrench\": $fa-var-wrench,\n  \"bugs\": $fa-var-bugs,\n  \"rupee-sign\": $fa-var-rupee-sign,\n  \"rupee\": $fa-var-rupee,\n  \"file-image\": $fa-var-file-image,\n  \"circle-question\": $fa-var-circle-question,\n  \"question-circle\": $fa-var-question-circle,\n  \"plane-departure\": $fa-var-plane-departure,\n  \"handshake-slash\": $fa-var-handshake-slash,\n  \"book-bookmark\": $fa-var-book-bookmark,\n  \"code-branch\": $fa-var-code-branch,\n  \"hat-cowboy\": $fa-var-hat-cowboy,\n  \"bridge\": $fa-var-bridge,\n  \"phone-flip\": $fa-var-phone-flip,\n  \"phone-alt\": $fa-var-phone-alt,\n  \"truck-front\": $fa-var-truck-front,\n  \"cat\": $fa-var-cat,\n  \"anchor-circle-exclamation\": $fa-var-anchor-circle-exclamation,\n  \"truck-field\": $fa-var-truck-field,\n  \"route\": $fa-var-route,\n  \"clipboard-question\": $fa-var-clipboard-question,\n  \"panorama\": $fa-var-panorama,\n  \"comment-medical\": $fa-var-comment-medical,\n  \"teeth-open\": $fa-var-teeth-open,\n  \"file-circle-minus\": $fa-var-file-circle-minus,\n  \"tags\": $fa-var-tags,\n  \"wine-glass\": $fa-var-wine-glass,\n  \"forward-fast\": $fa-var-forward-fast,\n  \"fast-forward\": $fa-var-fast-forward,\n  \"face-meh-blank\": $fa-var-face-meh-blank,\n  \"meh-blank\": $fa-var-meh-blank,\n  \"square-parking\": $fa-var-square-parking,\n  \"parking\": $fa-var-parking,\n  \"house-signal\": $fa-var-house-signal,\n  \"bars-progress\": $fa-var-bars-progress,\n  \"tasks-alt\": $fa-var-tasks-alt,\n  \"faucet-drip\": $fa-var-faucet-drip,\n  \"cart-flatbed\": $fa-var-cart-flatbed,\n  \"dolly-flatbed\": $fa-var-dolly-flatbed,\n  \"ban-smoking\": $fa-var-ban-smoking,\n  \"smoking-ban\": $fa-var-smoking-ban,\n  \"terminal\": $fa-var-terminal,\n  \"mobile-button\": $fa-var-mobile-button,\n  \"house-medical-flag\": $fa-var-house-medical-flag,\n  \"basket-shopping\": $fa-var-basket-shopping,\n  \"shopping-basket\": $fa-var-shopping-basket,\n  \"tape\": $fa-var-tape,\n  \"bus-simple\": $fa-var-bus-simple,\n  \"bus-alt\": $fa-var-bus-alt,\n  \"eye\": $fa-var-eye,\n  \"face-sad-cry\": $fa-var-face-sad-cry,\n  \"sad-cry\": $fa-var-sad-cry,\n  \"audio-description\": $fa-var-audio-description,\n  \"person-military-to-person\": $fa-var-person-military-to-person,\n  \"file-shield\": $fa-var-file-shield,\n  \"user-slash\": $fa-var-user-slash,\n  \"pen\": $fa-var-pen,\n  \"tower-observation\": $fa-var-tower-observation,\n  \"file-code\": $fa-var-file-code,\n  \"signal\": $fa-var-signal,\n  \"signal-5\": $fa-var-signal-5,\n  \"signal-perfect\": $fa-var-signal-perfect,\n  \"bus\": $fa-var-bus,\n  \"heart-circle-xmark\": $fa-var-heart-circle-xmark,\n  \"house-chimney\": $fa-var-house-chimney,\n  \"home-lg\": $fa-var-home-lg,\n  \"window-maximize\": $fa-var-window-maximize,\n  \"face-frown\": $fa-var-face-frown,\n  \"frown\": $fa-var-frown,\n  \"prescription\": $fa-var-prescription,\n  \"shop\": $fa-var-shop,\n  \"store-alt\": $fa-var-store-alt,\n  \"floppy-disk\": $fa-var-floppy-disk,\n  \"save\": $fa-var-save,\n  \"vihara\": $fa-var-vihara,\n  \"scale-unbalanced\": $fa-var-scale-unbalanced,\n  \"balance-scale-left\": $fa-var-balance-scale-left,\n  \"sort-up\": $fa-var-sort-up,\n  \"sort-asc\": $fa-var-sort-asc,\n  \"comment-dots\": $fa-var-comment-dots,\n  \"commenting\": $fa-var-commenting,\n  \"plant-wilt\": $fa-var-plant-wilt,\n  \"diamond\": $fa-var-diamond,\n  \"face-grin-squint\": $fa-var-face-grin-squint,\n  \"grin-squint\": $fa-var-grin-squint,\n  \"hand-holding-dollar\": $fa-var-hand-holding-dollar,\n  \"hand-holding-usd\": $fa-var-hand-holding-usd,\n  \"bacterium\": $fa-var-bacterium,\n  \"hand-pointer\": $fa-var-hand-pointer,\n  \"drum-steelpan\": $fa-var-drum-steelpan,\n  \"hand-scissors\": $fa-var-hand-scissors,\n  \"hands-praying\": $fa-var-hands-praying,\n  \"praying-hands\": $fa-var-praying-hands,\n  \"arrow-rotate-right\": $fa-var-arrow-rotate-right,\n  \"arrow-right-rotate\": $fa-var-arrow-right-rotate,\n  \"arrow-rotate-forward\": $fa-var-arrow-rotate-forward,\n  \"redo\": $fa-var-redo,\n  \"biohazard\": $fa-var-biohazard,\n  \"location-crosshairs\": $fa-var-location-crosshairs,\n  \"location\": $fa-var-location,\n  \"mars-double\": $fa-var-mars-double,\n  \"child-dress\": $fa-var-child-dress,\n  \"users-between-lines\": $fa-var-users-between-lines,\n  \"lungs-virus\": $fa-var-lungs-virus,\n  \"face-grin-tears\": $fa-var-face-grin-tears,\n  \"grin-tears\": $fa-var-grin-tears,\n  \"phone\": $fa-var-phone,\n  \"calendar-xmark\": $fa-var-calendar-xmark,\n  \"calendar-times\": $fa-var-calendar-times,\n  \"child-reaching\": $fa-var-child-reaching,\n  \"head-side-virus\": $fa-var-head-side-virus,\n  \"user-gear\": $fa-var-user-gear,\n  \"user-cog\": $fa-var-user-cog,\n  \"arrow-up-1-9\": $fa-var-arrow-up-1-9,\n  \"sort-numeric-up\": $fa-var-sort-numeric-up,\n  \"door-closed\": $fa-var-door-closed,\n  \"shield-virus\": $fa-var-shield-virus,\n  \"dice-six\": $fa-var-dice-six,\n  \"mosquito-net\": $fa-var-mosquito-net,\n  \"bridge-water\": $fa-var-bridge-water,\n  \"person-booth\": $fa-var-person-booth,\n  \"text-width\": $fa-var-text-width,\n  \"hat-wizard\": $fa-var-hat-wizard,\n  \"pen-fancy\": $fa-var-pen-fancy,\n  \"person-digging\": $fa-var-person-digging,\n  \"digging\": $fa-var-digging,\n  \"trash\": $fa-var-trash,\n  \"gauge-simple\": $fa-var-gauge-simple,\n  \"gauge-simple-med\": $fa-var-gauge-simple-med,\n  \"tachometer-average\": $fa-var-tachometer-average,\n  \"book-medical\": $fa-var-book-medical,\n  \"poo\": $fa-var-poo,\n  \"quote-right\": $fa-var-quote-right,\n  \"quote-right-alt\": $fa-var-quote-right-alt,\n  \"shirt\": $fa-var-shirt,\n  \"t-shirt\": $fa-var-t-shirt,\n  \"tshirt\": $fa-var-tshirt,\n  \"cubes\": $fa-var-cubes,\n  \"divide\": $fa-var-divide,\n  \"tenge-sign\": $fa-var-tenge-sign,\n  \"tenge\": $fa-var-tenge,\n  \"headphones\": $fa-var-headphones,\n  \"hands-holding\": $fa-var-hands-holding,\n  \"hands-clapping\": $fa-var-hands-clapping,\n  \"republican\": $fa-var-republican,\n  \"arrow-left\": $fa-var-arrow-left,\n  \"person-circle-xmark\": $fa-var-person-circle-xmark,\n  \"ruler\": $fa-var-ruler,\n  \"align-left\": $fa-var-align-left,\n  \"dice-d6\": $fa-var-dice-d6,\n  \"restroom\": $fa-var-restroom,\n  \"j\": $fa-var-j,\n  \"users-viewfinder\": $fa-var-users-viewfinder,\n  \"file-video\": $fa-var-file-video,\n  \"up-right-from-square\": $fa-var-up-right-from-square,\n  \"external-link-alt\": $fa-var-external-link-alt,\n  \"table-cells\": $fa-var-table-cells,\n  \"th\": $fa-var-th,\n  \"file-pdf\": $fa-var-file-pdf,\n  \"book-bible\": $fa-var-book-bible,\n  \"bible\": $fa-var-bible,\n  \"o\": $fa-var-o,\n  \"suitcase-medical\": $fa-var-suitcase-medical,\n  \"medkit\": $fa-var-medkit,\n  \"user-secret\": $fa-var-user-secret,\n  \"otter\": $fa-var-otter,\n  \"person-dress\": $fa-var-person-dress,\n  \"female\": $fa-var-female,\n  \"comment-dollar\": $fa-var-comment-dollar,\n  \"business-time\": $fa-var-business-time,\n  \"briefcase-clock\": $fa-var-briefcase-clock,\n  \"table-cells-large\": $fa-var-table-cells-large,\n  \"th-large\": $fa-var-th-large,\n  \"book-tanakh\": $fa-var-book-tanakh,\n  \"tanakh\": $fa-var-tanakh,\n  \"phone-volume\": $fa-var-phone-volume,\n  \"volume-control-phone\": $fa-var-volume-control-phone,\n  \"hat-cowboy-side\": $fa-var-hat-cowboy-side,\n  \"clipboard-user\": $fa-var-clipboard-user,\n  \"child\": $fa-var-child,\n  \"lira-sign\": $fa-var-lira-sign,\n  \"satellite\": $fa-var-satellite,\n  \"plane-lock\": $fa-var-plane-lock,\n  \"tag\": $fa-var-tag,\n  \"comment\": $fa-var-comment,\n  \"cake-candles\": $fa-var-cake-candles,\n  \"birthday-cake\": $fa-var-birthday-cake,\n  \"cake\": $fa-var-cake,\n  \"envelope\": $fa-var-envelope,\n  \"angles-up\": $fa-var-angles-up,\n  \"angle-double-up\": $fa-var-angle-double-up,\n  \"paperclip\": $fa-var-paperclip,\n  \"arrow-right-to-city\": $fa-var-arrow-right-to-city,\n  \"ribbon\": $fa-var-ribbon,\n  \"lungs\": $fa-var-lungs,\n  \"arrow-up-9-1\": $fa-var-arrow-up-9-1,\n  \"sort-numeric-up-alt\": $fa-var-sort-numeric-up-alt,\n  \"litecoin-sign\": $fa-var-litecoin-sign,\n  \"border-none\": $fa-var-border-none,\n  \"circle-nodes\": $fa-var-circle-nodes,\n  \"parachute-box\": $fa-var-parachute-box,\n  \"indent\": $fa-var-indent,\n  \"truck-field-un\": $fa-var-truck-field-un,\n  \"hourglass\": $fa-var-hourglass,\n  \"hourglass-empty\": $fa-var-hourglass-empty,\n  \"mountain\": $fa-var-mountain,\n  \"user-doctor\": $fa-var-user-doctor,\n  \"user-md\": $fa-var-user-md,\n  \"circle-info\": $fa-var-circle-info,\n  \"info-circle\": $fa-var-info-circle,\n  \"cloud-meatball\": $fa-var-cloud-meatball,\n  \"camera\": $fa-var-camera,\n  \"camera-alt\": $fa-var-camera-alt,\n  \"square-virus\": $fa-var-square-virus,\n  \"meteor\": $fa-var-meteor,\n  \"car-on\": $fa-var-car-on,\n  \"sleigh\": $fa-var-sleigh,\n  \"arrow-down-1-9\": $fa-var-arrow-down-1-9,\n  \"sort-numeric-asc\": $fa-var-sort-numeric-asc,\n  \"sort-numeric-down\": $fa-var-sort-numeric-down,\n  \"hand-holding-droplet\": $fa-var-hand-holding-droplet,\n  \"hand-holding-water\": $fa-var-hand-holding-water,\n  \"water\": $fa-var-water,\n  \"calendar-check\": $fa-var-calendar-check,\n  \"braille\": $fa-var-braille,\n  \"prescription-bottle-medical\": $fa-var-prescription-bottle-medical,\n  \"prescription-bottle-alt\": $fa-var-prescription-bottle-alt,\n  \"landmark\": $fa-var-landmark,\n  \"truck\": $fa-var-truck,\n  \"crosshairs\": $fa-var-crosshairs,\n  \"person-cane\": $fa-var-person-cane,\n  \"tent\": $fa-var-tent,\n  \"vest-patches\": $fa-var-vest-patches,\n  \"check-double\": $fa-var-check-double,\n  \"arrow-down-a-z\": $fa-var-arrow-down-a-z,\n  \"sort-alpha-asc\": $fa-var-sort-alpha-asc,\n  \"sort-alpha-down\": $fa-var-sort-alpha-down,\n  \"money-bill-wheat\": $fa-var-money-bill-wheat,\n  \"cookie\": $fa-var-cookie,\n  \"arrow-rotate-left\": $fa-var-arrow-rotate-left,\n  \"arrow-left-rotate\": $fa-var-arrow-left-rotate,\n  \"arrow-rotate-back\": $fa-var-arrow-rotate-back,\n  \"arrow-rotate-backward\": $fa-var-arrow-rotate-backward,\n  \"undo\": $fa-var-undo,\n  \"hard-drive\": $fa-var-hard-drive,\n  \"hdd\": $fa-var-hdd,\n  \"face-grin-squint-tears\": $fa-var-face-grin-squint-tears,\n  \"grin-squint-tears\": $fa-var-grin-squint-tears,\n  \"dumbbell\": $fa-var-dumbbell,\n  \"rectangle-list\": $fa-var-rectangle-list,\n  \"list-alt\": $fa-var-list-alt,\n  \"tarp-droplet\": $fa-var-tarp-droplet,\n  \"house-medical-circle-check\": $fa-var-house-medical-circle-check,\n  \"person-skiing-nordic\": $fa-var-person-skiing-nordic,\n  \"skiing-nordic\": $fa-var-skiing-nordic,\n  \"calendar-plus\": $fa-var-calendar-plus,\n  \"plane-arrival\": $fa-var-plane-arrival,\n  \"circle-left\": $fa-var-circle-left,\n  \"arrow-alt-circle-left\": $fa-var-arrow-alt-circle-left,\n  \"train-subway\": $fa-var-train-subway,\n  \"subway\": $fa-var-subway,\n  \"chart-gantt\": $fa-var-chart-gantt,\n  \"indian-rupee-sign\": $fa-var-indian-rupee-sign,\n  \"indian-rupee\": $fa-var-indian-rupee,\n  \"inr\": $fa-var-inr,\n  \"crop-simple\": $fa-var-crop-simple,\n  \"crop-alt\": $fa-var-crop-alt,\n  \"money-bill-1\": $fa-var-money-bill-1,\n  \"money-bill-alt\": $fa-var-money-bill-alt,\n  \"left-long\": $fa-var-left-long,\n  \"long-arrow-alt-left\": $fa-var-long-arrow-alt-left,\n  \"dna\": $fa-var-dna,\n  \"virus-slash\": $fa-var-virus-slash,\n  \"minus\": $fa-var-minus,\n  \"subtract\": $fa-var-subtract,\n  \"chess\": $fa-var-chess,\n  \"arrow-left-long\": $fa-var-arrow-left-long,\n  \"long-arrow-left\": $fa-var-long-arrow-left,\n  \"plug-circle-check\": $fa-var-plug-circle-check,\n  \"street-view\": $fa-var-street-view,\n  \"franc-sign\": $fa-var-franc-sign,\n  \"volume-off\": $fa-var-volume-off,\n  \"hands-asl-interpreting\": $fa-var-hands-asl-interpreting,\n  \"american-sign-language-interpreting\": $fa-var-american-sign-language-interpreting,\n  \"asl-interpreting\": $fa-var-asl-interpreting,\n  \"hands-american-sign-language-interpreting\": $fa-var-hands-american-sign-language-interpreting,\n  \"gear\": $fa-var-gear,\n  \"cog\": $fa-var-cog,\n  \"droplet-slash\": $fa-var-droplet-slash,\n  \"tint-slash\": $fa-var-tint-slash,\n  \"mosque\": $fa-var-mosque,\n  \"mosquito\": $fa-var-mosquito,\n  \"star-of-david\": $fa-var-star-of-david,\n  \"person-military-rifle\": $fa-var-person-military-rifle,\n  \"cart-shopping\": $fa-var-cart-shopping,\n  \"shopping-cart\": $fa-var-shopping-cart,\n  \"vials\": $fa-var-vials,\n  \"plug-circle-plus\": $fa-var-plug-circle-plus,\n  \"place-of-worship\": $fa-var-place-of-worship,\n  \"grip-vertical\": $fa-var-grip-vertical,\n  \"arrow-turn-up\": $fa-var-arrow-turn-up,\n  \"level-up\": $fa-var-level-up,\n  \"u\": $fa-var-u,\n  \"square-root-variable\": $fa-var-square-root-variable,\n  \"square-root-alt\": $fa-var-square-root-alt,\n  \"clock\": $fa-var-clock,\n  \"clock-four\": $fa-var-clock-four,\n  \"backward-step\": $fa-var-backward-step,\n  \"step-backward\": $fa-var-step-backward,\n  \"pallet\": $fa-var-pallet,\n  \"faucet\": $fa-var-faucet,\n  \"baseball-bat-ball\": $fa-var-baseball-bat-ball,\n  \"s\": $fa-var-s,\n  \"timeline\": $fa-var-timeline,\n  \"keyboard\": $fa-var-keyboard,\n  \"caret-down\": $fa-var-caret-down,\n  \"house-chimney-medical\": $fa-var-house-chimney-medical,\n  \"clinic-medical\": $fa-var-clinic-medical,\n  \"temperature-three-quarters\": $fa-var-temperature-three-quarters,\n  \"temperature-3\": $fa-var-temperature-3,\n  \"thermometer-3\": $fa-var-thermometer-3,\n  \"thermometer-three-quarters\": $fa-var-thermometer-three-quarters,\n  \"mobile-screen\": $fa-var-mobile-screen,\n  \"mobile-android-alt\": $fa-var-mobile-android-alt,\n  \"plane-up\": $fa-var-plane-up,\n  \"piggy-bank\": $fa-var-piggy-bank,\n  \"battery-half\": $fa-var-battery-half,\n  \"battery-3\": $fa-var-battery-3,\n  \"mountain-city\": $fa-var-mountain-city,\n  \"coins\": $fa-var-coins,\n  \"khanda\": $fa-var-khanda,\n  \"sliders\": $fa-var-sliders,\n  \"sliders-h\": $fa-var-sliders-h,\n  \"folder-tree\": $fa-var-folder-tree,\n  \"network-wired\": $fa-var-network-wired,\n  \"map-pin\": $fa-var-map-pin,\n  \"hamsa\": $fa-var-hamsa,\n  \"cent-sign\": $fa-var-cent-sign,\n  \"flask\": $fa-var-flask,\n  \"person-pregnant\": $fa-var-person-pregnant,\n  \"wand-sparkles\": $fa-var-wand-sparkles,\n  \"ellipsis-vertical\": $fa-var-ellipsis-vertical,\n  \"ellipsis-v\": $fa-var-ellipsis-v,\n  \"ticket\": $fa-var-ticket,\n  \"power-off\": $fa-var-power-off,\n  \"right-long\": $fa-var-right-long,\n  \"long-arrow-alt-right\": $fa-var-long-arrow-alt-right,\n  \"flag-usa\": $fa-var-flag-usa,\n  \"laptop-file\": $fa-var-laptop-file,\n  \"tty\": $fa-var-tty,\n  \"teletype\": $fa-var-teletype,\n  \"diagram-next\": $fa-var-diagram-next,\n  \"person-rifle\": $fa-var-person-rifle,\n  \"house-medical-circle-exclamation\": $fa-var-house-medical-circle-exclamation,\n  \"closed-captioning\": $fa-var-closed-captioning,\n  \"person-hiking\": $fa-var-person-hiking,\n  \"hiking\": $fa-var-hiking,\n  \"venus-double\": $fa-var-venus-double,\n  \"images\": $fa-var-images,\n  \"calculator\": $fa-var-calculator,\n  \"people-pulling\": $fa-var-people-pulling,\n  \"n\": $fa-var-n,\n  \"cable-car\": $fa-var-cable-car,\n  \"tram\": $fa-var-tram,\n  \"cloud-rain\": $fa-var-cloud-rain,\n  \"building-circle-xmark\": $fa-var-building-circle-xmark,\n  \"ship\": $fa-var-ship,\n  \"arrows-down-to-line\": $fa-var-arrows-down-to-line,\n  \"download\": $fa-var-download,\n  \"face-grin\": $fa-var-face-grin,\n  \"grin\": $fa-var-grin,\n  \"delete-left\": $fa-var-delete-left,\n  \"backspace\": $fa-var-backspace,\n  \"eye-dropper\": $fa-var-eye-dropper,\n  \"eye-dropper-empty\": $fa-var-eye-dropper-empty,\n  \"eyedropper\": $fa-var-eyedropper,\n  \"file-circle-check\": $fa-var-file-circle-check,\n  \"forward\": $fa-var-forward,\n  \"mobile\": $fa-var-mobile,\n  \"mobile-android\": $fa-var-mobile-android,\n  \"mobile-phone\": $fa-var-mobile-phone,\n  \"face-meh\": $fa-var-face-meh,\n  \"meh\": $fa-var-meh,\n  \"align-center\": $fa-var-align-center,\n  \"book-skull\": $fa-var-book-skull,\n  \"book-dead\": $fa-var-book-dead,\n  \"id-card\": $fa-var-id-card,\n  \"drivers-license\": $fa-var-drivers-license,\n  \"outdent\": $fa-var-outdent,\n  \"dedent\": $fa-var-dedent,\n  \"heart-circle-exclamation\": $fa-var-heart-circle-exclamation,\n  \"house\": $fa-var-house,\n  \"home\": $fa-var-home,\n  \"home-alt\": $fa-var-home-alt,\n  \"home-lg-alt\": $fa-var-home-lg-alt,\n  \"calendar-week\": $fa-var-calendar-week,\n  \"laptop-medical\": $fa-var-laptop-medical,\n  \"b\": $fa-var-b,\n  \"file-medical\": $fa-var-file-medical,\n  \"dice-one\": $fa-var-dice-one,\n  \"kiwi-bird\": $fa-var-kiwi-bird,\n  \"arrow-right-arrow-left\": $fa-var-arrow-right-arrow-left,\n  \"exchange\": $fa-var-exchange,\n  \"rotate-right\": $fa-var-rotate-right,\n  \"redo-alt\": $fa-var-redo-alt,\n  \"rotate-forward\": $fa-var-rotate-forward,\n  \"utensils\": $fa-var-utensils,\n  \"cutlery\": $fa-var-cutlery,\n  \"arrow-up-wide-short\": $fa-var-arrow-up-wide-short,\n  \"sort-amount-up\": $fa-var-sort-amount-up,\n  \"mill-sign\": $fa-var-mill-sign,\n  \"bowl-rice\": $fa-var-bowl-rice,\n  \"skull\": $fa-var-skull,\n  \"tower-broadcast\": $fa-var-tower-broadcast,\n  \"broadcast-tower\": $fa-var-broadcast-tower,\n  \"truck-pickup\": $fa-var-truck-pickup,\n  \"up-long\": $fa-var-up-long,\n  \"long-arrow-alt-up\": $fa-var-long-arrow-alt-up,\n  \"stop\": $fa-var-stop,\n  \"code-merge\": $fa-var-code-merge,\n  \"upload\": $fa-var-upload,\n  \"hurricane\": $fa-var-hurricane,\n  \"mound\": $fa-var-mound,\n  \"toilet-portable\": $fa-var-toilet-portable,\n  \"compact-disc\": $fa-var-compact-disc,\n  \"file-arrow-down\": $fa-var-file-arrow-down,\n  \"file-download\": $fa-var-file-download,\n  \"caravan\": $fa-var-caravan,\n  \"shield-cat\": $fa-var-shield-cat,\n  \"bolt\": $fa-var-bolt,\n  \"zap\": $fa-var-zap,\n  \"glass-water\": $fa-var-glass-water,\n  \"oil-well\": $fa-var-oil-well,\n  \"vault\": $fa-var-vault,\n  \"mars\": $fa-var-mars,\n  \"toilet\": $fa-var-toilet,\n  \"plane-circle-xmark\": $fa-var-plane-circle-xmark,\n  \"yen-sign\": $fa-var-yen-sign,\n  \"cny\": $fa-var-cny,\n  \"jpy\": $fa-var-jpy,\n  \"rmb\": $fa-var-rmb,\n  \"yen\": $fa-var-yen,\n  \"ruble-sign\": $fa-var-ruble-sign,\n  \"rouble\": $fa-var-rouble,\n  \"rub\": $fa-var-rub,\n  \"ruble\": $fa-var-ruble,\n  \"sun\": $fa-var-sun,\n  \"guitar\": $fa-var-guitar,\n  \"face-laugh-wink\": $fa-var-face-laugh-wink,\n  \"laugh-wink\": $fa-var-laugh-wink,\n  \"horse-head\": $fa-var-horse-head,\n  \"bore-hole\": $fa-var-bore-hole,\n  \"industry\": $fa-var-industry,\n  \"circle-down\": $fa-var-circle-down,\n  \"arrow-alt-circle-down\": $fa-var-arrow-alt-circle-down,\n  \"arrows-turn-to-dots\": $fa-var-arrows-turn-to-dots,\n  \"florin-sign\": $fa-var-florin-sign,\n  \"arrow-down-short-wide\": $fa-var-arrow-down-short-wide,\n  \"sort-amount-desc\": $fa-var-sort-amount-desc,\n  \"sort-amount-down-alt\": $fa-var-sort-amount-down-alt,\n  \"less-than\": $fa-var-less-than,\n  \"angle-down\": $fa-var-angle-down,\n  \"car-tunnel\": $fa-var-car-tunnel,\n  \"head-side-cough\": $fa-var-head-side-cough,\n  \"grip-lines\": $fa-var-grip-lines,\n  \"thumbs-down\": $fa-var-thumbs-down,\n  \"user-lock\": $fa-var-user-lock,\n  \"arrow-right-long\": $fa-var-arrow-right-long,\n  \"long-arrow-right\": $fa-var-long-arrow-right,\n  \"anchor-circle-xmark\": $fa-var-anchor-circle-xmark,\n  \"ellipsis\": $fa-var-ellipsis,\n  \"ellipsis-h\": $fa-var-ellipsis-h,\n  \"chess-pawn\": $fa-var-chess-pawn,\n  \"kit-medical\": $fa-var-kit-medical,\n  \"first-aid\": $fa-var-first-aid,\n  \"person-through-window\": $fa-var-person-through-window,\n  \"toolbox\": $fa-var-toolbox,\n  \"hands-holding-circle\": $fa-var-hands-holding-circle,\n  \"bug\": $fa-var-bug,\n  \"credit-card\": $fa-var-credit-card,\n  \"credit-card-alt\": $fa-var-credit-card-alt,\n  \"car\": $fa-var-car,\n  \"automobile\": $fa-var-automobile,\n  \"hand-holding-hand\": $fa-var-hand-holding-hand,\n  \"book-open-reader\": $fa-var-book-open-reader,\n  \"book-reader\": $fa-var-book-reader,\n  \"mountain-sun\": $fa-var-mountain-sun,\n  \"arrows-left-right-to-line\": $fa-var-arrows-left-right-to-line,\n  \"dice-d20\": $fa-var-dice-d20,\n  \"truck-droplet\": $fa-var-truck-droplet,\n  \"file-circle-xmark\": $fa-var-file-circle-xmark,\n  \"temperature-arrow-up\": $fa-var-temperature-arrow-up,\n  \"temperature-up\": $fa-var-temperature-up,\n  \"medal\": $fa-var-medal,\n  \"bed\": $fa-var-bed,\n  \"square-h\": $fa-var-square-h,\n  \"h-square\": $fa-var-h-square,\n  \"podcast\": $fa-var-podcast,\n  \"temperature-full\": $fa-var-temperature-full,\n  \"temperature-4\": $fa-var-temperature-4,\n  \"thermometer-4\": $fa-var-thermometer-4,\n  \"thermometer-full\": $fa-var-thermometer-full,\n  \"bell\": $fa-var-bell,\n  \"superscript\": $fa-var-superscript,\n  \"plug-circle-xmark\": $fa-var-plug-circle-xmark,\n  \"star-of-life\": $fa-var-star-of-life,\n  \"phone-slash\": $fa-var-phone-slash,\n  \"paint-roller\": $fa-var-paint-roller,\n  \"handshake-angle\": $fa-var-handshake-angle,\n  \"hands-helping\": $fa-var-hands-helping,\n  \"location-dot\": $fa-var-location-dot,\n  \"map-marker-alt\": $fa-var-map-marker-alt,\n  \"file\": $fa-var-file,\n  \"greater-than\": $fa-var-greater-than,\n  \"person-swimming\": $fa-var-person-swimming,\n  \"swimmer\": $fa-var-swimmer,\n  \"arrow-down\": $fa-var-arrow-down,\n  \"droplet\": $fa-var-droplet,\n  \"tint\": $fa-var-tint,\n  \"eraser\": $fa-var-eraser,\n  \"earth-americas\": $fa-var-earth-americas,\n  \"earth\": $fa-var-earth,\n  \"earth-america\": $fa-var-earth-america,\n  \"globe-americas\": $fa-var-globe-americas,\n  \"person-burst\": $fa-var-person-burst,\n  \"dove\": $fa-var-dove,\n  \"battery-empty\": $fa-var-battery-empty,\n  \"battery-0\": $fa-var-battery-0,\n  \"socks\": $fa-var-socks,\n  \"inbox\": $fa-var-inbox,\n  \"section\": $fa-var-section,\n  \"gauge-high\": $fa-var-gauge-high,\n  \"tachometer-alt\": $fa-var-tachometer-alt,\n  \"tachometer-alt-fast\": $fa-var-tachometer-alt-fast,\n  \"envelope-open-text\": $fa-var-envelope-open-text,\n  \"hospital\": $fa-var-hospital,\n  \"hospital-alt\": $fa-var-hospital-alt,\n  \"hospital-wide\": $fa-var-hospital-wide,\n  \"wine-bottle\": $fa-var-wine-bottle,\n  \"chess-rook\": $fa-var-chess-rook,\n  \"bars-staggered\": $fa-var-bars-staggered,\n  \"reorder\": $fa-var-reorder,\n  \"stream\": $fa-var-stream,\n  \"dharmachakra\": $fa-var-dharmachakra,\n  \"hotdog\": $fa-var-hotdog,\n  \"person-walking-with-cane\": $fa-var-person-walking-with-cane,\n  \"blind\": $fa-var-blind,\n  \"drum\": $fa-var-drum,\n  \"ice-cream\": $fa-var-ice-cream,\n  \"heart-circle-bolt\": $fa-var-heart-circle-bolt,\n  \"fax\": $fa-var-fax,\n  \"paragraph\": $fa-var-paragraph,\n  \"check-to-slot\": $fa-var-check-to-slot,\n  \"vote-yea\": $fa-var-vote-yea,\n  \"star-half\": $fa-var-star-half,\n  \"boxes-stacked\": $fa-var-boxes-stacked,\n  \"boxes\": $fa-var-boxes,\n  \"boxes-alt\": $fa-var-boxes-alt,\n  \"link\": $fa-var-link,\n  \"chain\": $fa-var-chain,\n  \"ear-listen\": $fa-var-ear-listen,\n  \"assistive-listening-systems\": $fa-var-assistive-listening-systems,\n  \"tree-city\": $fa-var-tree-city,\n  \"play\": $fa-var-play,\n  \"font\": $fa-var-font,\n  \"table-cells-row-lock\": $fa-var-table-cells-row-lock,\n  \"rupiah-sign\": $fa-var-rupiah-sign,\n  \"magnifying-glass\": $fa-var-magnifying-glass,\n  \"search\": $fa-var-search,\n  \"table-tennis-paddle-ball\": $fa-var-table-tennis-paddle-ball,\n  \"ping-pong-paddle-ball\": $fa-var-ping-pong-paddle-ball,\n  \"table-tennis\": $fa-var-table-tennis,\n  \"person-dots-from-line\": $fa-var-person-dots-from-line,\n  \"diagnoses\": $fa-var-diagnoses,\n  \"trash-can-arrow-up\": $fa-var-trash-can-arrow-up,\n  \"trash-restore-alt\": $fa-var-trash-restore-alt,\n  \"naira-sign\": $fa-var-naira-sign,\n  \"cart-arrow-down\": $fa-var-cart-arrow-down,\n  \"walkie-talkie\": $fa-var-walkie-talkie,\n  \"file-pen\": $fa-var-file-pen,\n  \"file-edit\": $fa-var-file-edit,\n  \"receipt\": $fa-var-receipt,\n  \"square-pen\": $fa-var-square-pen,\n  \"pen-square\": $fa-var-pen-square,\n  \"pencil-square\": $fa-var-pencil-square,\n  \"suitcase-rolling\": $fa-var-suitcase-rolling,\n  \"person-circle-exclamation\": $fa-var-person-circle-exclamation,\n  \"chevron-down\": $fa-var-chevron-down,\n  \"battery-full\": $fa-var-battery-full,\n  \"battery\": $fa-var-battery,\n  \"battery-5\": $fa-var-battery-5,\n  \"skull-crossbones\": $fa-var-skull-crossbones,\n  \"code-compare\": $fa-var-code-compare,\n  \"list-ul\": $fa-var-list-ul,\n  \"list-dots\": $fa-var-list-dots,\n  \"school-lock\": $fa-var-school-lock,\n  \"tower-cell\": $fa-var-tower-cell,\n  \"down-long\": $fa-var-down-long,\n  \"long-arrow-alt-down\": $fa-var-long-arrow-alt-down,\n  \"ranking-star\": $fa-var-ranking-star,\n  \"chess-king\": $fa-var-chess-king,\n  \"person-harassing\": $fa-var-person-harassing,\n  \"brazilian-real-sign\": $fa-var-brazilian-real-sign,\n  \"landmark-dome\": $fa-var-landmark-dome,\n  \"landmark-alt\": $fa-var-landmark-alt,\n  \"arrow-up\": $fa-var-arrow-up,\n  \"tv\": $fa-var-tv,\n  \"television\": $fa-var-television,\n  \"tv-alt\": $fa-var-tv-alt,\n  \"shrimp\": $fa-var-shrimp,\n  \"list-check\": $fa-var-list-check,\n  \"tasks\": $fa-var-tasks,\n  \"jug-detergent\": $fa-var-jug-detergent,\n  \"circle-user\": $fa-var-circle-user,\n  \"user-circle\": $fa-var-user-circle,\n  \"user-shield\": $fa-var-user-shield,\n  \"wind\": $fa-var-wind,\n  \"car-burst\": $fa-var-car-burst,\n  \"car-crash\": $fa-var-car-crash,\n  \"y\": $fa-var-y,\n  \"person-snowboarding\": $fa-var-person-snowboarding,\n  \"snowboarding\": $fa-var-snowboarding,\n  \"truck-fast\": $fa-var-truck-fast,\n  \"shipping-fast\": $fa-var-shipping-fast,\n  \"fish\": $fa-var-fish,\n  \"user-graduate\": $fa-var-user-graduate,\n  \"circle-half-stroke\": $fa-var-circle-half-stroke,\n  \"adjust\": $fa-var-adjust,\n  \"clapperboard\": $fa-var-clapperboard,\n  \"circle-radiation\": $fa-var-circle-radiation,\n  \"radiation-alt\": $fa-var-radiation-alt,\n  \"baseball\": $fa-var-baseball,\n  \"baseball-ball\": $fa-var-baseball-ball,\n  \"jet-fighter-up\": $fa-var-jet-fighter-up,\n  \"diagram-project\": $fa-var-diagram-project,\n  \"project-diagram\": $fa-var-project-diagram,\n  \"copy\": $fa-var-copy,\n  \"volume-xmark\": $fa-var-volume-xmark,\n  \"volume-mute\": $fa-var-volume-mute,\n  \"volume-times\": $fa-var-volume-times,\n  \"hand-sparkles\": $fa-var-hand-sparkles,\n  \"grip\": $fa-var-grip,\n  \"grip-horizontal\": $fa-var-grip-horizontal,\n  \"share-from-square\": $fa-var-share-from-square,\n  \"share-square\": $fa-var-share-square,\n  \"child-combatant\": $fa-var-child-combatant,\n  \"child-rifle\": $fa-var-child-rifle,\n  \"gun\": $fa-var-gun,\n  \"square-phone\": $fa-var-square-phone,\n  \"phone-square\": $fa-var-phone-square,\n  \"plus\": $fa-var-plus,\n  \"add\": $fa-var-add,\n  \"expand\": $fa-var-expand,\n  \"computer\": $fa-var-computer,\n  \"xmark\": $fa-var-xmark,\n  \"close\": $fa-var-close,\n  \"multiply\": $fa-var-multiply,\n  \"remove\": $fa-var-remove,\n  \"times\": $fa-var-times,\n  \"arrows-up-down-left-right\": $fa-var-arrows-up-down-left-right,\n  \"arrows\": $fa-var-arrows,\n  \"chalkboard-user\": $fa-var-chalkboard-user,\n  \"chalkboard-teacher\": $fa-var-chalkboard-teacher,\n  \"peso-sign\": $fa-var-peso-sign,\n  \"building-shield\": $fa-var-building-shield,\n  \"baby\": $fa-var-baby,\n  \"users-line\": $fa-var-users-line,\n  \"quote-left\": $fa-var-quote-left,\n  \"quote-left-alt\": $fa-var-quote-left-alt,\n  \"tractor\": $fa-var-tractor,\n  \"trash-arrow-up\": $fa-var-trash-arrow-up,\n  \"trash-restore\": $fa-var-trash-restore,\n  \"arrow-down-up-lock\": $fa-var-arrow-down-up-lock,\n  \"lines-leaning\": $fa-var-lines-leaning,\n  \"ruler-combined\": $fa-var-ruler-combined,\n  \"copyright\": $fa-var-copyright,\n  \"equals\": $fa-var-equals,\n  \"blender\": $fa-var-blender,\n  \"teeth\": $fa-var-teeth,\n  \"shekel-sign\": $fa-var-shekel-sign,\n  \"ils\": $fa-var-ils,\n  \"shekel\": $fa-var-shekel,\n  \"sheqel\": $fa-var-sheqel,\n  \"sheqel-sign\": $fa-var-sheqel-sign,\n  \"map\": $fa-var-map,\n  \"rocket\": $fa-var-rocket,\n  \"photo-film\": $fa-var-photo-film,\n  \"photo-video\": $fa-var-photo-video,\n  \"folder-minus\": $fa-var-folder-minus,\n  \"store\": $fa-var-store,\n  \"arrow-trend-up\": $fa-var-arrow-trend-up,\n  \"plug-circle-minus\": $fa-var-plug-circle-minus,\n  \"sign-hanging\": $fa-var-sign-hanging,\n  \"sign\": $fa-var-sign,\n  \"bezier-curve\": $fa-var-bezier-curve,\n  \"bell-slash\": $fa-var-bell-slash,\n  \"tablet\": $fa-var-tablet,\n  \"tablet-android\": $fa-var-tablet-android,\n  \"school-flag\": $fa-var-school-flag,\n  \"fill\": $fa-var-fill,\n  \"angle-up\": $fa-var-angle-up,\n  \"drumstick-bite\": $fa-var-drumstick-bite,\n  \"holly-berry\": $fa-var-holly-berry,\n  \"chevron-left\": $fa-var-chevron-left,\n  \"bacteria\": $fa-var-bacteria,\n  \"hand-lizard\": $fa-var-hand-lizard,\n  \"notdef\": $fa-var-notdef,\n  \"disease\": $fa-var-disease,\n  \"briefcase-medical\": $fa-var-briefcase-medical,\n  \"genderless\": $fa-var-genderless,\n  \"chevron-right\": $fa-var-chevron-right,\n  \"retweet\": $fa-var-retweet,\n  \"car-rear\": $fa-var-car-rear,\n  \"car-alt\": $fa-var-car-alt,\n  \"pump-soap\": $fa-var-pump-soap,\n  \"video-slash\": $fa-var-video-slash,\n  \"battery-quarter\": $fa-var-battery-quarter,\n  \"battery-2\": $fa-var-battery-2,\n  \"radio\": $fa-var-radio,\n  \"baby-carriage\": $fa-var-baby-carriage,\n  \"carriage-baby\": $fa-var-carriage-baby,\n  \"traffic-light\": $fa-var-traffic-light,\n  \"thermometer\": $fa-var-thermometer,\n  \"vr-cardboard\": $fa-var-vr-cardboard,\n  \"hand-middle-finger\": $fa-var-hand-middle-finger,\n  \"percent\": $fa-var-percent,\n  \"percentage\": $fa-var-percentage,\n  \"truck-moving\": $fa-var-truck-moving,\n  \"glass-water-droplet\": $fa-var-glass-water-droplet,\n  \"display\": $fa-var-display,\n  \"face-smile\": $fa-var-face-smile,\n  \"smile\": $fa-var-smile,\n  \"thumbtack\": $fa-var-thumbtack,\n  \"thumb-tack\": $fa-var-thumb-tack,\n  \"trophy\": $fa-var-trophy,\n  \"person-praying\": $fa-var-person-praying,\n  \"pray\": $fa-var-pray,\n  \"hammer\": $fa-var-hammer,\n  \"hand-peace\": $fa-var-hand-peace,\n  \"rotate\": $fa-var-rotate,\n  \"sync-alt\": $fa-var-sync-alt,\n  \"spinner\": $fa-var-spinner,\n  \"robot\": $fa-var-robot,\n  \"peace\": $fa-var-peace,\n  \"gears\": $fa-var-gears,\n  \"cogs\": $fa-var-cogs,\n  \"warehouse\": $fa-var-warehouse,\n  \"arrow-up-right-dots\": $fa-var-arrow-up-right-dots,\n  \"splotch\": $fa-var-splotch,\n  \"face-grin-hearts\": $fa-var-face-grin-hearts,\n  \"grin-hearts\": $fa-var-grin-hearts,\n  \"dice-four\": $fa-var-dice-four,\n  \"sim-card\": $fa-var-sim-card,\n  \"transgender\": $fa-var-transgender,\n  \"transgender-alt\": $fa-var-transgender-alt,\n  \"mercury\": $fa-var-mercury,\n  \"arrow-turn-down\": $fa-var-arrow-turn-down,\n  \"level-down\": $fa-var-level-down,\n  \"person-falling-burst\": $fa-var-person-falling-burst,\n  \"award\": $fa-var-award,\n  \"ticket-simple\": $fa-var-ticket-simple,\n  \"ticket-alt\": $fa-var-ticket-alt,\n  \"building\": $fa-var-building,\n  \"angles-left\": $fa-var-angles-left,\n  \"angle-double-left\": $fa-var-angle-double-left,\n  \"qrcode\": $fa-var-qrcode,\n  \"clock-rotate-left\": $fa-var-clock-rotate-left,\n  \"history\": $fa-var-history,\n  \"face-grin-beam-sweat\": $fa-var-face-grin-beam-sweat,\n  \"grin-beam-sweat\": $fa-var-grin-beam-sweat,\n  \"file-export\": $fa-var-file-export,\n  \"arrow-right-from-file\": $fa-var-arrow-right-from-file,\n  \"shield\": $fa-var-shield,\n  \"shield-blank\": $fa-var-shield-blank,\n  \"arrow-up-short-wide\": $fa-var-arrow-up-short-wide,\n  \"sort-amount-up-alt\": $fa-var-sort-amount-up-alt,\n  \"house-medical\": $fa-var-house-medical,\n  \"golf-ball-tee\": $fa-var-golf-ball-tee,\n  \"golf-ball\": $fa-var-golf-ball,\n  \"circle-chevron-left\": $fa-var-circle-chevron-left,\n  \"chevron-circle-left\": $fa-var-chevron-circle-left,\n  \"house-chimney-window\": $fa-var-house-chimney-window,\n  \"pen-nib\": $fa-var-pen-nib,\n  \"tent-arrow-turn-left\": $fa-var-tent-arrow-turn-left,\n  \"tents\": $fa-var-tents,\n  \"wand-magic\": $fa-var-wand-magic,\n  \"magic\": $fa-var-magic,\n  \"dog\": $fa-var-dog,\n  \"carrot\": $fa-var-carrot,\n  \"moon\": $fa-var-moon,\n  \"wine-glass-empty\": $fa-var-wine-glass-empty,\n  \"wine-glass-alt\": $fa-var-wine-glass-alt,\n  \"cheese\": $fa-var-cheese,\n  \"yin-yang\": $fa-var-yin-yang,\n  \"music\": $fa-var-music,\n  \"code-commit\": $fa-var-code-commit,\n  \"temperature-low\": $fa-var-temperature-low,\n  \"person-biking\": $fa-var-person-biking,\n  \"biking\": $fa-var-biking,\n  \"broom\": $fa-var-broom,\n  \"shield-heart\": $fa-var-shield-heart,\n  \"gopuram\": $fa-var-gopuram,\n  \"earth-oceania\": $fa-var-earth-oceania,\n  \"globe-oceania\": $fa-var-globe-oceania,\n  \"square-xmark\": $fa-var-square-xmark,\n  \"times-square\": $fa-var-times-square,\n  \"xmark-square\": $fa-var-xmark-square,\n  \"hashtag\": $fa-var-hashtag,\n  \"up-right-and-down-left-from-center\": $fa-var-up-right-and-down-left-from-center,\n  \"expand-alt\": $fa-var-expand-alt,\n  \"oil-can\": $fa-var-oil-can,\n  \"t\": $fa-var-t,\n  \"hippo\": $fa-var-hippo,\n  \"chart-column\": $fa-var-chart-column,\n  \"infinity\": $fa-var-infinity,\n  \"vial-circle-check\": $fa-var-vial-circle-check,\n  \"person-arrow-down-to-line\": $fa-var-person-arrow-down-to-line,\n  \"voicemail\": $fa-var-voicemail,\n  \"fan\": $fa-var-fan,\n  \"person-walking-luggage\": $fa-var-person-walking-luggage,\n  \"up-down\": $fa-var-up-down,\n  \"arrows-alt-v\": $fa-var-arrows-alt-v,\n  \"cloud-moon-rain\": $fa-var-cloud-moon-rain,\n  \"calendar\": $fa-var-calendar,\n  \"trailer\": $fa-var-trailer,\n  \"bahai\": $fa-var-bahai,\n  \"haykal\": $fa-var-haykal,\n  \"sd-card\": $fa-var-sd-card,\n  \"dragon\": $fa-var-dragon,\n  \"shoe-prints\": $fa-var-shoe-prints,\n  \"circle-plus\": $fa-var-circle-plus,\n  \"plus-circle\": $fa-var-plus-circle,\n  \"face-grin-tongue-wink\": $fa-var-face-grin-tongue-wink,\n  \"grin-tongue-wink\": $fa-var-grin-tongue-wink,\n  \"hand-holding\": $fa-var-hand-holding,\n  \"plug-circle-exclamation\": $fa-var-plug-circle-exclamation,\n  \"link-slash\": $fa-var-link-slash,\n  \"chain-broken\": $fa-var-chain-broken,\n  \"chain-slash\": $fa-var-chain-slash,\n  \"unlink\": $fa-var-unlink,\n  \"clone\": $fa-var-clone,\n  \"person-walking-arrow-loop-left\": $fa-var-person-walking-arrow-loop-left,\n  \"arrow-up-z-a\": $fa-var-arrow-up-z-a,\n  \"sort-alpha-up-alt\": $fa-var-sort-alpha-up-alt,\n  \"fire-flame-curved\": $fa-var-fire-flame-curved,\n  \"fire-alt\": $fa-var-fire-alt,\n  \"tornado\": $fa-var-tornado,\n  \"file-circle-plus\": $fa-var-file-circle-plus,\n  \"book-quran\": $fa-var-book-quran,\n  \"quran\": $fa-var-quran,\n  \"anchor\": $fa-var-anchor,\n  \"border-all\": $fa-var-border-all,\n  \"face-angry\": $fa-var-face-angry,\n  \"angry\": $fa-var-angry,\n  \"cookie-bite\": $fa-var-cookie-bite,\n  \"arrow-trend-down\": $fa-var-arrow-trend-down,\n  \"rss\": $fa-var-rss,\n  \"feed\": $fa-var-feed,\n  \"draw-polygon\": $fa-var-draw-polygon,\n  \"scale-balanced\": $fa-var-scale-balanced,\n  \"balance-scale\": $fa-var-balance-scale,\n  \"gauge-simple-high\": $fa-var-gauge-simple-high,\n  \"tachometer\": $fa-var-tachometer,\n  \"tachometer-fast\": $fa-var-tachometer-fast,\n  \"shower\": $fa-var-shower,\n  \"desktop\": $fa-var-desktop,\n  \"desktop-alt\": $fa-var-desktop-alt,\n  \"m\": $fa-var-m,\n  \"table-list\": $fa-var-table-list,\n  \"th-list\": $fa-var-th-list,\n  \"comment-sms\": $fa-var-comment-sms,\n  \"sms\": $fa-var-sms,\n  \"book\": $fa-var-book,\n  \"user-plus\": $fa-var-user-plus,\n  \"check\": $fa-var-check,\n  \"battery-three-quarters\": $fa-var-battery-three-quarters,\n  \"battery-4\": $fa-var-battery-4,\n  \"house-circle-check\": $fa-var-house-circle-check,\n  \"angle-left\": $fa-var-angle-left,\n  \"diagram-successor\": $fa-var-diagram-successor,\n  \"truck-arrow-right\": $fa-var-truck-arrow-right,\n  \"arrows-split-up-and-left\": $fa-var-arrows-split-up-and-left,\n  \"hand-fist\": $fa-var-hand-fist,\n  \"fist-raised\": $fa-var-fist-raised,\n  \"cloud-moon\": $fa-var-cloud-moon,\n  \"briefcase\": $fa-var-briefcase,\n  \"person-falling\": $fa-var-person-falling,\n  \"image-portrait\": $fa-var-image-portrait,\n  \"portrait\": $fa-var-portrait,\n  \"user-tag\": $fa-var-user-tag,\n  \"rug\": $fa-var-rug,\n  \"earth-europe\": $fa-var-earth-europe,\n  \"globe-europe\": $fa-var-globe-europe,\n  \"cart-flatbed-suitcase\": $fa-var-cart-flatbed-suitcase,\n  \"luggage-cart\": $fa-var-luggage-cart,\n  \"rectangle-xmark\": $fa-var-rectangle-xmark,\n  \"rectangle-times\": $fa-var-rectangle-times,\n  \"times-rectangle\": $fa-var-times-rectangle,\n  \"window-close\": $fa-var-window-close,\n  \"baht-sign\": $fa-var-baht-sign,\n  \"book-open\": $fa-var-book-open,\n  \"book-journal-whills\": $fa-var-book-journal-whills,\n  \"journal-whills\": $fa-var-journal-whills,\n  \"handcuffs\": $fa-var-handcuffs,\n  \"triangle-exclamation\": $fa-var-triangle-exclamation,\n  \"exclamation-triangle\": $fa-var-exclamation-triangle,\n  \"warning\": $fa-var-warning,\n  \"database\": $fa-var-database,\n  \"share\": $fa-var-share,\n  \"mail-forward\": $fa-var-mail-forward,\n  \"bottle-droplet\": $fa-var-bottle-droplet,\n  \"mask-face\": $fa-var-mask-face,\n  \"hill-rockslide\": $fa-var-hill-rockslide,\n  \"right-left\": $fa-var-right-left,\n  \"exchange-alt\": $fa-var-exchange-alt,\n  \"paper-plane\": $fa-var-paper-plane,\n  \"road-circle-exclamation\": $fa-var-road-circle-exclamation,\n  \"dungeon\": $fa-var-dungeon,\n  \"align-right\": $fa-var-align-right,\n  \"money-bill-1-wave\": $fa-var-money-bill-1-wave,\n  \"money-bill-wave-alt\": $fa-var-money-bill-wave-alt,\n  \"life-ring\": $fa-var-life-ring,\n  \"hands\": $fa-var-hands,\n  \"sign-language\": $fa-var-sign-language,\n  \"signing\": $fa-var-signing,\n  \"calendar-day\": $fa-var-calendar-day,\n  \"water-ladder\": $fa-var-water-ladder,\n  \"ladder-water\": $fa-var-ladder-water,\n  \"swimming-pool\": $fa-var-swimming-pool,\n  \"arrows-up-down\": $fa-var-arrows-up-down,\n  \"arrows-v\": $fa-var-arrows-v,\n  \"face-grimace\": $fa-var-face-grimace,\n  \"grimace\": $fa-var-grimace,\n  \"wheelchair-move\": $fa-var-wheelchair-move,\n  \"wheelchair-alt\": $fa-var-wheelchair-alt,\n  \"turn-down\": $fa-var-turn-down,\n  \"level-down-alt\": $fa-var-level-down-alt,\n  \"person-walking-arrow-right\": $fa-var-person-walking-arrow-right,\n  \"square-envelope\": $fa-var-square-envelope,\n  \"envelope-square\": $fa-var-envelope-square,\n  \"dice\": $fa-var-dice,\n  \"bowling-ball\": $fa-var-bowling-ball,\n  \"brain\": $fa-var-brain,\n  \"bandage\": $fa-var-bandage,\n  \"band-aid\": $fa-var-band-aid,\n  \"calendar-minus\": $fa-var-calendar-minus,\n  \"circle-xmark\": $fa-var-circle-xmark,\n  \"times-circle\": $fa-var-times-circle,\n  \"xmark-circle\": $fa-var-xmark-circle,\n  \"gifts\": $fa-var-gifts,\n  \"hotel\": $fa-var-hotel,\n  \"earth-asia\": $fa-var-earth-asia,\n  \"globe-asia\": $fa-var-globe-asia,\n  \"id-card-clip\": $fa-var-id-card-clip,\n  \"id-card-alt\": $fa-var-id-card-alt,\n  \"magnifying-glass-plus\": $fa-var-magnifying-glass-plus,\n  \"search-plus\": $fa-var-search-plus,\n  \"thumbs-up\": $fa-var-thumbs-up,\n  \"user-clock\": $fa-var-user-clock,\n  \"hand-dots\": $fa-var-hand-dots,\n  \"allergies\": $fa-var-allergies,\n  \"file-invoice\": $fa-var-file-invoice,\n  \"window-minimize\": $fa-var-window-minimize,\n  \"mug-saucer\": $fa-var-mug-saucer,\n  \"coffee\": $fa-var-coffee,\n  \"brush\": $fa-var-brush,\n  \"mask\": $fa-var-mask,\n  \"magnifying-glass-minus\": $fa-var-magnifying-glass-minus,\n  \"search-minus\": $fa-var-search-minus,\n  \"ruler-vertical\": $fa-var-ruler-vertical,\n  \"user-large\": $fa-var-user-large,\n  \"user-alt\": $fa-var-user-alt,\n  \"train-tram\": $fa-var-train-tram,\n  \"user-nurse\": $fa-var-user-nurse,\n  \"syringe\": $fa-var-syringe,\n  \"cloud-sun\": $fa-var-cloud-sun,\n  \"stopwatch-20\": $fa-var-stopwatch-20,\n  \"square-full\": $fa-var-square-full,\n  \"magnet\": $fa-var-magnet,\n  \"jar\": $fa-var-jar,\n  \"note-sticky\": $fa-var-note-sticky,\n  \"sticky-note\": $fa-var-sticky-note,\n  \"bug-slash\": $fa-var-bug-slash,\n  \"arrow-up-from-water-pump\": $fa-var-arrow-up-from-water-pump,\n  \"bone\": $fa-var-bone,\n  \"user-injured\": $fa-var-user-injured,\n  \"face-sad-tear\": $fa-var-face-sad-tear,\n  \"sad-tear\": $fa-var-sad-tear,\n  \"plane\": $fa-var-plane,\n  \"tent-arrows-down\": $fa-var-tent-arrows-down,\n  \"exclamation\": $fa-var-exclamation,\n  \"arrows-spin\": $fa-var-arrows-spin,\n  \"print\": $fa-var-print,\n  \"turkish-lira-sign\": $fa-var-turkish-lira-sign,\n  \"try\": $fa-var-try,\n  \"turkish-lira\": $fa-var-turkish-lira,\n  \"dollar-sign\": $fa-var-dollar-sign,\n  \"dollar\": $fa-var-dollar,\n  \"usd\": $fa-var-usd,\n  \"x\": $fa-var-x,\n  \"magnifying-glass-dollar\": $fa-var-magnifying-glass-dollar,\n  \"search-dollar\": $fa-var-search-dollar,\n  \"users-gear\": $fa-var-users-gear,\n  \"users-cog\": $fa-var-users-cog,\n  \"person-military-pointing\": $fa-var-person-military-pointing,\n  \"building-columns\": $fa-var-building-columns,\n  \"bank\": $fa-var-bank,\n  \"institution\": $fa-var-institution,\n  \"museum\": $fa-var-museum,\n  \"university\": $fa-var-university,\n  \"umbrella\": $fa-var-umbrella,\n  \"trowel\": $fa-var-trowel,\n  \"d\": $fa-var-d,\n  \"stapler\": $fa-var-stapler,\n  \"masks-theater\": $fa-var-masks-theater,\n  \"theater-masks\": $fa-var-theater-masks,\n  \"kip-sign\": $fa-var-kip-sign,\n  \"hand-point-left\": $fa-var-hand-point-left,\n  \"handshake-simple\": $fa-var-handshake-simple,\n  \"handshake-alt\": $fa-var-handshake-alt,\n  \"jet-fighter\": $fa-var-jet-fighter,\n  \"fighter-jet\": $fa-var-fighter-jet,\n  \"square-share-nodes\": $fa-var-square-share-nodes,\n  \"share-alt-square\": $fa-var-share-alt-square,\n  \"barcode\": $fa-var-barcode,\n  \"plus-minus\": $fa-var-plus-minus,\n  \"video\": $fa-var-video,\n  \"video-camera\": $fa-var-video-camera,\n  \"graduation-cap\": $fa-var-graduation-cap,\n  \"mortar-board\": $fa-var-mortar-board,\n  \"hand-holding-medical\": $fa-var-hand-holding-medical,\n  \"person-circle-check\": $fa-var-person-circle-check,\n  \"turn-up\": $fa-var-turn-up,\n  \"level-up-alt\": $fa-var-level-up-alt,\n);\n\n$fa-brand-icons: (\n  \"monero\": $fa-var-monero,\n  \"hooli\": $fa-var-hooli,\n  \"yelp\": $fa-var-yelp,\n  \"cc-visa\": $fa-var-cc-visa,\n  \"lastfm\": $fa-var-lastfm,\n  \"shopware\": $fa-var-shopware,\n  \"creative-commons-nc\": $fa-var-creative-commons-nc,\n  \"aws\": $fa-var-aws,\n  \"redhat\": $fa-var-redhat,\n  \"yoast\": $fa-var-yoast,\n  \"cloudflare\": $fa-var-cloudflare,\n  \"ups\": $fa-var-ups,\n  \"pixiv\": $fa-var-pixiv,\n  \"wpexplorer\": $fa-var-wpexplorer,\n  \"dyalog\": $fa-var-dyalog,\n  \"bity\": $fa-var-bity,\n  \"stackpath\": $fa-var-stackpath,\n  \"buysellads\": $fa-var-buysellads,\n  \"first-order\": $fa-var-first-order,\n  \"modx\": $fa-var-modx,\n  \"guilded\": $fa-var-guilded,\n  \"vnv\": $fa-var-vnv,\n  \"square-js\": $fa-var-square-js,\n  \"js-square\": $fa-var-js-square,\n  \"microsoft\": $fa-var-microsoft,\n  \"qq\": $fa-var-qq,\n  \"orcid\": $fa-var-orcid,\n  \"java\": $fa-var-java,\n  \"invision\": $fa-var-invision,\n  \"creative-commons-pd-alt\": $fa-var-creative-commons-pd-alt,\n  \"centercode\": $fa-var-centercode,\n  \"glide-g\": $fa-var-glide-g,\n  \"drupal\": $fa-var-drupal,\n  \"jxl\": $fa-var-jxl,\n  \"hire-a-helper\": $fa-var-hire-a-helper,\n  \"creative-commons-by\": $fa-var-creative-commons-by,\n  \"unity\": $fa-var-unity,\n  \"whmcs\": $fa-var-whmcs,\n  \"rocketchat\": $fa-var-rocketchat,\n  \"vk\": $fa-var-vk,\n  \"untappd\": $fa-var-untappd,\n  \"mailchimp\": $fa-var-mailchimp,\n  \"css3-alt\": $fa-var-css3-alt,\n  \"square-reddit\": $fa-var-square-reddit,\n  \"reddit-square\": $fa-var-reddit-square,\n  \"vimeo-v\": $fa-var-vimeo-v,\n  \"contao\": $fa-var-contao,\n  \"square-font-awesome\": $fa-var-square-font-awesome,\n  \"deskpro\": $fa-var-deskpro,\n  \"brave\": $fa-var-brave,\n  \"sistrix\": $fa-var-sistrix,\n  \"square-instagram\": $fa-var-square-instagram,\n  \"instagram-square\": $fa-var-instagram-square,\n  \"battle-net\": $fa-var-battle-net,\n  \"the-red-yeti\": $fa-var-the-red-yeti,\n  \"square-hacker-news\": $fa-var-square-hacker-news,\n  \"hacker-news-square\": $fa-var-hacker-news-square,\n  \"edge\": $fa-var-edge,\n  \"threads\": $fa-var-threads,\n  \"napster\": $fa-var-napster,\n  \"square-snapchat\": $fa-var-square-snapchat,\n  \"snapchat-square\": $fa-var-snapchat-square,\n  \"google-plus-g\": $fa-var-google-plus-g,\n  \"artstation\": $fa-var-artstation,\n  \"markdown\": $fa-var-markdown,\n  \"sourcetree\": $fa-var-sourcetree,\n  \"google-plus\": $fa-var-google-plus,\n  \"diaspora\": $fa-var-diaspora,\n  \"foursquare\": $fa-var-foursquare,\n  \"stack-overflow\": $fa-var-stack-overflow,\n  \"github-alt\": $fa-var-github-alt,\n  \"phoenix-squadron\": $fa-var-phoenix-squadron,\n  \"pagelines\": $fa-var-pagelines,\n  \"algolia\": $fa-var-algolia,\n  \"red-river\": $fa-var-red-river,\n  \"creative-commons-sa\": $fa-var-creative-commons-sa,\n  \"safari\": $fa-var-safari,\n  \"google\": $fa-var-google,\n  \"square-font-awesome-stroke\": $fa-var-square-font-awesome-stroke,\n  \"font-awesome-alt\": $fa-var-font-awesome-alt,\n  \"atlassian\": $fa-var-atlassian,\n  \"linkedin-in\": $fa-var-linkedin-in,\n  \"digital-ocean\": $fa-var-digital-ocean,\n  \"nimblr\": $fa-var-nimblr,\n  \"chromecast\": $fa-var-chromecast,\n  \"evernote\": $fa-var-evernote,\n  \"hacker-news\": $fa-var-hacker-news,\n  \"creative-commons-sampling\": $fa-var-creative-commons-sampling,\n  \"adversal\": $fa-var-adversal,\n  \"creative-commons\": $fa-var-creative-commons,\n  \"watchman-monitoring\": $fa-var-watchman-monitoring,\n  \"fonticons\": $fa-var-fonticons,\n  \"weixin\": $fa-var-weixin,\n  \"shirtsinbulk\": $fa-var-shirtsinbulk,\n  \"codepen\": $fa-var-codepen,\n  \"git-alt\": $fa-var-git-alt,\n  \"lyft\": $fa-var-lyft,\n  \"rev\": $fa-var-rev,\n  \"windows\": $fa-var-windows,\n  \"wizards-of-the-coast\": $fa-var-wizards-of-the-coast,\n  \"square-viadeo\": $fa-var-square-viadeo,\n  \"viadeo-square\": $fa-var-viadeo-square,\n  \"meetup\": $fa-var-meetup,\n  \"centos\": $fa-var-centos,\n  \"adn\": $fa-var-adn,\n  \"cloudsmith\": $fa-var-cloudsmith,\n  \"opensuse\": $fa-var-opensuse,\n  \"pied-piper-alt\": $fa-var-pied-piper-alt,\n  \"square-dribbble\": $fa-var-square-dribbble,\n  \"dribbble-square\": $fa-var-dribbble-square,\n  \"codiepie\": $fa-var-codiepie,\n  \"node\": $fa-var-node,\n  \"mix\": $fa-var-mix,\n  \"steam\": $fa-var-steam,\n  \"cc-apple-pay\": $fa-var-cc-apple-pay,\n  \"scribd\": $fa-var-scribd,\n  \"debian\": $fa-var-debian,\n  \"openid\": $fa-var-openid,\n  \"instalod\": $fa-var-instalod,\n  \"expeditedssl\": $fa-var-expeditedssl,\n  \"sellcast\": $fa-var-sellcast,\n  \"square-twitter\": $fa-var-square-twitter,\n  \"twitter-square\": $fa-var-twitter-square,\n  \"r-project\": $fa-var-r-project,\n  \"delicious\": $fa-var-delicious,\n  \"freebsd\": $fa-var-freebsd,\n  \"vuejs\": $fa-var-vuejs,\n  \"accusoft\": $fa-var-accusoft,\n  \"ioxhost\": $fa-var-ioxhost,\n  \"fonticons-fi\": $fa-var-fonticons-fi,\n  \"app-store\": $fa-var-app-store,\n  \"cc-mastercard\": $fa-var-cc-mastercard,\n  \"itunes-note\": $fa-var-itunes-note,\n  \"golang\": $fa-var-golang,\n  \"kickstarter\": $fa-var-kickstarter,\n  \"square-kickstarter\": $fa-var-square-kickstarter,\n  \"grav\": $fa-var-grav,\n  \"weibo\": $fa-var-weibo,\n  \"uncharted\": $fa-var-uncharted,\n  \"firstdraft\": $fa-var-firstdraft,\n  \"square-youtube\": $fa-var-square-youtube,\n  \"youtube-square\": $fa-var-youtube-square,\n  \"wikipedia-w\": $fa-var-wikipedia-w,\n  \"wpressr\": $fa-var-wpressr,\n  \"rendact\": $fa-var-rendact,\n  \"angellist\": $fa-var-angellist,\n  \"galactic-republic\": $fa-var-galactic-republic,\n  \"nfc-directional\": $fa-var-nfc-directional,\n  \"skype\": $fa-var-skype,\n  \"joget\": $fa-var-joget,\n  \"fedora\": $fa-var-fedora,\n  \"stripe-s\": $fa-var-stripe-s,\n  \"meta\": $fa-var-meta,\n  \"laravel\": $fa-var-laravel,\n  \"hotjar\": $fa-var-hotjar,\n  \"bluetooth-b\": $fa-var-bluetooth-b,\n  \"square-letterboxd\": $fa-var-square-letterboxd,\n  \"sticker-mule\": $fa-var-sticker-mule,\n  \"creative-commons-zero\": $fa-var-creative-commons-zero,\n  \"hips\": $fa-var-hips,\n  \"behance\": $fa-var-behance,\n  \"reddit\": $fa-var-reddit,\n  \"discord\": $fa-var-discord,\n  \"chrome\": $fa-var-chrome,\n  \"app-store-ios\": $fa-var-app-store-ios,\n  \"cc-discover\": $fa-var-cc-discover,\n  \"wpbeginner\": $fa-var-wpbeginner,\n  \"confluence\": $fa-var-confluence,\n  \"shoelace\": $fa-var-shoelace,\n  \"mdb\": $fa-var-mdb,\n  \"dochub\": $fa-var-dochub,\n  \"accessible-icon\": $fa-var-accessible-icon,\n  \"ebay\": $fa-var-ebay,\n  \"amazon\": $fa-var-amazon,\n  \"unsplash\": $fa-var-unsplash,\n  \"yarn\": $fa-var-yarn,\n  \"square-steam\": $fa-var-square-steam,\n  \"steam-square\": $fa-var-steam-square,\n  \"500px\": $fa-var-500px,\n  \"square-vimeo\": $fa-var-square-vimeo,\n  \"vimeo-square\": $fa-var-vimeo-square,\n  \"asymmetrik\": $fa-var-asymmetrik,\n  \"font-awesome\": $fa-var-font-awesome,\n  \"font-awesome-flag\": $fa-var-font-awesome-flag,\n  \"font-awesome-logo-full\": $fa-var-font-awesome-logo-full,\n  \"gratipay\": $fa-var-gratipay,\n  \"apple\": $fa-var-apple,\n  \"hive\": $fa-var-hive,\n  \"gitkraken\": $fa-var-gitkraken,\n  \"keybase\": $fa-var-keybase,\n  \"apple-pay\": $fa-var-apple-pay,\n  \"padlet\": $fa-var-padlet,\n  \"amazon-pay\": $fa-var-amazon-pay,\n  \"square-github\": $fa-var-square-github,\n  \"github-square\": $fa-var-github-square,\n  \"stumbleupon\": $fa-var-stumbleupon,\n  \"fedex\": $fa-var-fedex,\n  \"phoenix-framework\": $fa-var-phoenix-framework,\n  \"shopify\": $fa-var-shopify,\n  \"neos\": $fa-var-neos,\n  \"square-threads\": $fa-var-square-threads,\n  \"hackerrank\": $fa-var-hackerrank,\n  \"researchgate\": $fa-var-researchgate,\n  \"swift\": $fa-var-swift,\n  \"angular\": $fa-var-angular,\n  \"speakap\": $fa-var-speakap,\n  \"angrycreative\": $fa-var-angrycreative,\n  \"y-combinator\": $fa-var-y-combinator,\n  \"empire\": $fa-var-empire,\n  \"envira\": $fa-var-envira,\n  \"google-scholar\": $fa-var-google-scholar,\n  \"square-gitlab\": $fa-var-square-gitlab,\n  \"gitlab-square\": $fa-var-gitlab-square,\n  \"studiovinari\": $fa-var-studiovinari,\n  \"pied-piper\": $fa-var-pied-piper,\n  \"wordpress\": $fa-var-wordpress,\n  \"product-hunt\": $fa-var-product-hunt,\n  \"firefox\": $fa-var-firefox,\n  \"linode\": $fa-var-linode,\n  \"goodreads\": $fa-var-goodreads,\n  \"square-odnoklassniki\": $fa-var-square-odnoklassniki,\n  \"odnoklassniki-square\": $fa-var-odnoklassniki-square,\n  \"jsfiddle\": $fa-var-jsfiddle,\n  \"sith\": $fa-var-sith,\n  \"themeisle\": $fa-var-themeisle,\n  \"page4\": $fa-var-page4,\n  \"hashnode\": $fa-var-hashnode,\n  \"react\": $fa-var-react,\n  \"cc-paypal\": $fa-var-cc-paypal,\n  \"squarespace\": $fa-var-squarespace,\n  \"cc-stripe\": $fa-var-cc-stripe,\n  \"creative-commons-share\": $fa-var-creative-commons-share,\n  \"bitcoin\": $fa-var-bitcoin,\n  \"keycdn\": $fa-var-keycdn,\n  \"opera\": $fa-var-opera,\n  \"itch-io\": $fa-var-itch-io,\n  \"umbraco\": $fa-var-umbraco,\n  \"galactic-senate\": $fa-var-galactic-senate,\n  \"ubuntu\": $fa-var-ubuntu,\n  \"draft2digital\": $fa-var-draft2digital,\n  \"stripe\": $fa-var-stripe,\n  \"houzz\": $fa-var-houzz,\n  \"gg\": $fa-var-gg,\n  \"dhl\": $fa-var-dhl,\n  \"square-pinterest\": $fa-var-square-pinterest,\n  \"pinterest-square\": $fa-var-pinterest-square,\n  \"xing\": $fa-var-xing,\n  \"blackberry\": $fa-var-blackberry,\n  \"creative-commons-pd\": $fa-var-creative-commons-pd,\n  \"playstation\": $fa-var-playstation,\n  \"quinscape\": $fa-var-quinscape,\n  \"less\": $fa-var-less,\n  \"blogger-b\": $fa-var-blogger-b,\n  \"opencart\": $fa-var-opencart,\n  \"vine\": $fa-var-vine,\n  \"signal-messenger\": $fa-var-signal-messenger,\n  \"paypal\": $fa-var-paypal,\n  \"gitlab\": $fa-var-gitlab,\n  \"typo3\": $fa-var-typo3,\n  \"reddit-alien\": $fa-var-reddit-alien,\n  \"yahoo\": $fa-var-yahoo,\n  \"dailymotion\": $fa-var-dailymotion,\n  \"affiliatetheme\": $fa-var-affiliatetheme,\n  \"pied-piper-pp\": $fa-var-pied-piper-pp,\n  \"bootstrap\": $fa-var-bootstrap,\n  \"odnoklassniki\": $fa-var-odnoklassniki,\n  \"nfc-symbol\": $fa-var-nfc-symbol,\n  \"mintbit\": $fa-var-mintbit,\n  \"ethereum\": $fa-var-ethereum,\n  \"speaker-deck\": $fa-var-speaker-deck,\n  \"creative-commons-nc-eu\": $fa-var-creative-commons-nc-eu,\n  \"patreon\": $fa-var-patreon,\n  \"avianex\": $fa-var-avianex,\n  \"ello\": $fa-var-ello,\n  \"gofore\": $fa-var-gofore,\n  \"bimobject\": $fa-var-bimobject,\n  \"brave-reverse\": $fa-var-brave-reverse,\n  \"facebook-f\": $fa-var-facebook-f,\n  \"square-google-plus\": $fa-var-square-google-plus,\n  \"google-plus-square\": $fa-var-google-plus-square,\n  \"web-awesome\": $fa-var-web-awesome,\n  \"mandalorian\": $fa-var-mandalorian,\n  \"first-order-alt\": $fa-var-first-order-alt,\n  \"osi\": $fa-var-osi,\n  \"google-wallet\": $fa-var-google-wallet,\n  \"d-and-d-beyond\": $fa-var-d-and-d-beyond,\n  \"periscope\": $fa-var-periscope,\n  \"fulcrum\": $fa-var-fulcrum,\n  \"cloudscale\": $fa-var-cloudscale,\n  \"forumbee\": $fa-var-forumbee,\n  \"mizuni\": $fa-var-mizuni,\n  \"schlix\": $fa-var-schlix,\n  \"square-xing\": $fa-var-square-xing,\n  \"xing-square\": $fa-var-xing-square,\n  \"bandcamp\": $fa-var-bandcamp,\n  \"wpforms\": $fa-var-wpforms,\n  \"cloudversify\": $fa-var-cloudversify,\n  \"usps\": $fa-var-usps,\n  \"megaport\": $fa-var-megaport,\n  \"magento\": $fa-var-magento,\n  \"spotify\": $fa-var-spotify,\n  \"optin-monster\": $fa-var-optin-monster,\n  \"fly\": $fa-var-fly,\n  \"aviato\": $fa-var-aviato,\n  \"itunes\": $fa-var-itunes,\n  \"cuttlefish\": $fa-var-cuttlefish,\n  \"blogger\": $fa-var-blogger,\n  \"flickr\": $fa-var-flickr,\n  \"viber\": $fa-var-viber,\n  \"soundcloud\": $fa-var-soundcloud,\n  \"digg\": $fa-var-digg,\n  \"tencent-weibo\": $fa-var-tencent-weibo,\n  \"letterboxd\": $fa-var-letterboxd,\n  \"symfony\": $fa-var-symfony,\n  \"maxcdn\": $fa-var-maxcdn,\n  \"etsy\": $fa-var-etsy,\n  \"facebook-messenger\": $fa-var-facebook-messenger,\n  \"audible\": $fa-var-audible,\n  \"think-peaks\": $fa-var-think-peaks,\n  \"bilibili\": $fa-var-bilibili,\n  \"erlang\": $fa-var-erlang,\n  \"x-twitter\": $fa-var-x-twitter,\n  \"cotton-bureau\": $fa-var-cotton-bureau,\n  \"dashcube\": $fa-var-dashcube,\n  \"42-group\": $fa-var-42-group,\n  \"innosoft\": $fa-var-innosoft,\n  \"stack-exchange\": $fa-var-stack-exchange,\n  \"elementor\": $fa-var-elementor,\n  \"square-pied-piper\": $fa-var-square-pied-piper,\n  \"pied-piper-square\": $fa-var-pied-piper-square,\n  \"creative-commons-nd\": $fa-var-creative-commons-nd,\n  \"palfed\": $fa-var-palfed,\n  \"superpowers\": $fa-var-superpowers,\n  \"resolving\": $fa-var-resolving,\n  \"xbox\": $fa-var-xbox,\n  \"square-web-awesome-stroke\": $fa-var-square-web-awesome-stroke,\n  \"searchengin\": $fa-var-searchengin,\n  \"tiktok\": $fa-var-tiktok,\n  \"square-facebook\": $fa-var-square-facebook,\n  \"facebook-square\": $fa-var-facebook-square,\n  \"renren\": $fa-var-renren,\n  \"linux\": $fa-var-linux,\n  \"glide\": $fa-var-glide,\n  \"linkedin\": $fa-var-linkedin,\n  \"hubspot\": $fa-var-hubspot,\n  \"deploydog\": $fa-var-deploydog,\n  \"twitch\": $fa-var-twitch,\n  \"ravelry\": $fa-var-ravelry,\n  \"mixer\": $fa-var-mixer,\n  \"square-lastfm\": $fa-var-square-lastfm,\n  \"lastfm-square\": $fa-var-lastfm-square,\n  \"vimeo\": $fa-var-vimeo,\n  \"mendeley\": $fa-var-mendeley,\n  \"uniregistry\": $fa-var-uniregistry,\n  \"figma\": $fa-var-figma,\n  \"creative-commons-remix\": $fa-var-creative-commons-remix,\n  \"cc-amazon-pay\": $fa-var-cc-amazon-pay,\n  \"dropbox\": $fa-var-dropbox,\n  \"instagram\": $fa-var-instagram,\n  \"cmplid\": $fa-var-cmplid,\n  \"upwork\": $fa-var-upwork,\n  \"facebook\": $fa-var-facebook,\n  \"gripfire\": $fa-var-gripfire,\n  \"jedi-order\": $fa-var-jedi-order,\n  \"uikit\": $fa-var-uikit,\n  \"fort-awesome-alt\": $fa-var-fort-awesome-alt,\n  \"phabricator\": $fa-var-phabricator,\n  \"ussunnah\": $fa-var-ussunnah,\n  \"earlybirds\": $fa-var-earlybirds,\n  \"trade-federation\": $fa-var-trade-federation,\n  \"autoprefixer\": $fa-var-autoprefixer,\n  \"whatsapp\": $fa-var-whatsapp,\n  \"square-upwork\": $fa-var-square-upwork,\n  \"slideshare\": $fa-var-slideshare,\n  \"google-play\": $fa-var-google-play,\n  \"viadeo\": $fa-var-viadeo,\n  \"line\": $fa-var-line,\n  \"google-drive\": $fa-var-google-drive,\n  \"servicestack\": $fa-var-servicestack,\n  \"simplybuilt\": $fa-var-simplybuilt,\n  \"bitbucket\": $fa-var-bitbucket,\n  \"imdb\": $fa-var-imdb,\n  \"deezer\": $fa-var-deezer,\n  \"raspberry-pi\": $fa-var-raspberry-pi,\n  \"jira\": $fa-var-jira,\n  \"docker\": $fa-var-docker,\n  \"screenpal\": $fa-var-screenpal,\n  \"bluetooth\": $fa-var-bluetooth,\n  \"gitter\": $fa-var-gitter,\n  \"d-and-d\": $fa-var-d-and-d,\n  \"microblog\": $fa-var-microblog,\n  \"cc-diners-club\": $fa-var-cc-diners-club,\n  \"gg-circle\": $fa-var-gg-circle,\n  \"pied-piper-hat\": $fa-var-pied-piper-hat,\n  \"kickstarter-k\": $fa-var-kickstarter-k,\n  \"yandex\": $fa-var-yandex,\n  \"readme\": $fa-var-readme,\n  \"html5\": $fa-var-html5,\n  \"sellsy\": $fa-var-sellsy,\n  \"square-web-awesome\": $fa-var-square-web-awesome,\n  \"sass\": $fa-var-sass,\n  \"wirsindhandwerk\": $fa-var-wirsindhandwerk,\n  \"wsh\": $fa-var-wsh,\n  \"buromobelexperte\": $fa-var-buromobelexperte,\n  \"salesforce\": $fa-var-salesforce,\n  \"octopus-deploy\": $fa-var-octopus-deploy,\n  \"medapps\": $fa-var-medapps,\n  \"ns8\": $fa-var-ns8,\n  \"pinterest-p\": $fa-var-pinterest-p,\n  \"apper\": $fa-var-apper,\n  \"fort-awesome\": $fa-var-fort-awesome,\n  \"waze\": $fa-var-waze,\n  \"bluesky\": $fa-var-bluesky,\n  \"cc-jcb\": $fa-var-cc-jcb,\n  \"snapchat\": $fa-var-snapchat,\n  \"snapchat-ghost\": $fa-var-snapchat-ghost,\n  \"fantasy-flight-games\": $fa-var-fantasy-flight-games,\n  \"rust\": $fa-var-rust,\n  \"wix\": $fa-var-wix,\n  \"square-behance\": $fa-var-square-behance,\n  \"behance-square\": $fa-var-behance-square,\n  \"supple\": $fa-var-supple,\n  \"webflow\": $fa-var-webflow,\n  \"rebel\": $fa-var-rebel,\n  \"css3\": $fa-var-css3,\n  \"staylinked\": $fa-var-staylinked,\n  \"kaggle\": $fa-var-kaggle,\n  \"space-awesome\": $fa-var-space-awesome,\n  \"deviantart\": $fa-var-deviantart,\n  \"cpanel\": $fa-var-cpanel,\n  \"goodreads-g\": $fa-var-goodreads-g,\n  \"square-git\": $fa-var-square-git,\n  \"git-square\": $fa-var-git-square,\n  \"square-tumblr\": $fa-var-square-tumblr,\n  \"tumblr-square\": $fa-var-tumblr-square,\n  \"trello\": $fa-var-trello,\n  \"creative-commons-nc-jp\": $fa-var-creative-commons-nc-jp,\n  \"get-pocket\": $fa-var-get-pocket,\n  \"perbyte\": $fa-var-perbyte,\n  \"grunt\": $fa-var-grunt,\n  \"weebly\": $fa-var-weebly,\n  \"connectdevelop\": $fa-var-connectdevelop,\n  \"leanpub\": $fa-var-leanpub,\n  \"black-tie\": $fa-var-black-tie,\n  \"themeco\": $fa-var-themeco,\n  \"python\": $fa-var-python,\n  \"android\": $fa-var-android,\n  \"bots\": $fa-var-bots,\n  \"free-code-camp\": $fa-var-free-code-camp,\n  \"hornbill\": $fa-var-hornbill,\n  \"js\": $fa-var-js,\n  \"ideal\": $fa-var-ideal,\n  \"git\": $fa-var-git,\n  \"dev\": $fa-var-dev,\n  \"sketch\": $fa-var-sketch,\n  \"yandex-international\": $fa-var-yandex-international,\n  \"cc-amex\": $fa-var-cc-amex,\n  \"uber\": $fa-var-uber,\n  \"github\": $fa-var-github,\n  \"php\": $fa-var-php,\n  \"alipay\": $fa-var-alipay,\n  \"youtube\": $fa-var-youtube,\n  \"skyatlas\": $fa-var-skyatlas,\n  \"firefox-browser\": $fa-var-firefox-browser,\n  \"replyd\": $fa-var-replyd,\n  \"suse\": $fa-var-suse,\n  \"jenkins\": $fa-var-jenkins,\n  \"twitter\": $fa-var-twitter,\n  \"rockrms\": $fa-var-rockrms,\n  \"pinterest\": $fa-var-pinterest,\n  \"buffer\": $fa-var-buffer,\n  \"npm\": $fa-var-npm,\n  \"yammer\": $fa-var-yammer,\n  \"btc\": $fa-var-btc,\n  \"dribbble\": $fa-var-dribbble,\n  \"stumbleupon-circle\": $fa-var-stumbleupon-circle,\n  \"internet-explorer\": $fa-var-internet-explorer,\n  \"stubber\": $fa-var-stubber,\n  \"telegram\": $fa-var-telegram,\n  \"telegram-plane\": $fa-var-telegram-plane,\n  \"old-republic\": $fa-var-old-republic,\n  \"odysee\": $fa-var-odysee,\n  \"square-whatsapp\": $fa-var-square-whatsapp,\n  \"whatsapp-square\": $fa-var-whatsapp-square,\n  \"node-js\": $fa-var-node-js,\n  \"edge-legacy\": $fa-var-edge-legacy,\n  \"slack\": $fa-var-slack,\n  \"slack-hash\": $fa-var-slack-hash,\n  \"medrt\": $fa-var-medrt,\n  \"usb\": $fa-var-usb,\n  \"tumblr\": $fa-var-tumblr,\n  \"vaadin\": $fa-var-vaadin,\n  \"quora\": $fa-var-quora,\n  \"square-x-twitter\": $fa-var-square-x-twitter,\n  \"reacteurope\": $fa-var-reacteurope,\n  \"medium\": $fa-var-medium,\n  \"medium-m\": $fa-var-medium-m,\n  \"amilia\": $fa-var-amilia,\n  \"mixcloud\": $fa-var-mixcloud,\n  \"flipboard\": $fa-var-flipboard,\n  \"viacoin\": $fa-var-viacoin,\n  \"critical-role\": $fa-var-critical-role,\n  \"sitrox\": $fa-var-sitrox,\n  \"discourse\": $fa-var-discourse,\n  \"joomla\": $fa-var-joomla,\n  \"mastodon\": $fa-var-mastodon,\n  \"airbnb\": $fa-var-airbnb,\n  \"wolf-pack-battalion\": $fa-var-wolf-pack-battalion,\n  \"buy-n-large\": $fa-var-buy-n-large,\n  \"gulp\": $fa-var-gulp,\n  \"creative-commons-sampling-plus\": $fa-var-creative-commons-sampling-plus,\n  \"strava\": $fa-var-strava,\n  \"ember\": $fa-var-ember,\n  \"canadian-maple-leaf\": $fa-var-canadian-maple-leaf,\n  \"teamspeak\": $fa-var-teamspeak,\n  \"pushed\": $fa-var-pushed,\n  \"wordpress-simple\": $fa-var-wordpress-simple,\n  \"nutritionix\": $fa-var-nutritionix,\n  \"wodu\": $fa-var-wodu,\n  \"google-pay\": $fa-var-google-pay,\n  \"intercom\": $fa-var-intercom,\n  \"zhihu\": $fa-var-zhihu,\n  \"korvue\": $fa-var-korvue,\n  \"pix\": $fa-var-pix,\n  \"steam-symbol\": $fa-var-steam-symbol,\n);\n"
  },
  {
    "path": "_sass/vendor/font-awesome/brands.scss",
    "content": "/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n  --#{$fa-css-prefix}-style-family-brands: 'Font Awesome 6 Brands';\n  --#{$fa-css-prefix}-font-brands: normal 400 1em/1 'Font Awesome 6 Brands';\n}\n\n@font-face {\n  font-family: 'Font Awesome 6 Brands';\n  font-style: normal;\n  font-weight: 400;\n  font-display: $fa-font-display;\n  src: url('#{$fa-font-path}/fa-brands-400.woff2') format('woff2'),\n    url('#{$fa-font-path}/fa-brands-400.ttf') format('truetype');\n}\n\n.fab,\n.#{$fa-css-prefix}-brands {\n  font-weight: 400;\n}\n\n@each $name, $icon in $fa-brand-icons {\n  .#{$fa-css-prefix}-#{$name}:before { content: unquote(\"\\\"#{ $icon }\\\"\"); }\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/fontawesome.scss",
    "content": "/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// Font Awesome core compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'mixins';\n@import 'core';\n@import 'sizing';\n@import 'fixed-width';\n@import 'list';\n@import 'bordered-pulled';\n@import 'animated';\n@import 'rotated-flipped';\n@import 'stacked';\n@import 'icons';\n@import 'screen-reader';\n"
  },
  {
    "path": "_sass/vendor/font-awesome/regular.scss",
    "content": "/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n  --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n  --#{$fa-css-prefix}-font-regular: normal 400 1em/1 '#{ $fa-style-family }';\n}\n\n@font-face {\n  font-family: 'Font Awesome 6 Free';\n  font-style: normal;\n  font-weight: 400;\n  font-display: $fa-font-display;\n  src: url('#{$fa-font-path}/fa-regular-400.woff2') format('woff2'),\n    url('#{$fa-font-path}/fa-regular-400.ttf') format('truetype');\n}\n\n.far,\n.#{$fa-css-prefix}-regular {\n  font-weight: 400;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/solid.scss",
    "content": "/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n@import 'functions';\n@import 'variables';\n\n:root, :host {\n  --#{$fa-css-prefix}-style-family-classic: '#{ $fa-style-family }';\n  --#{$fa-css-prefix}-font-solid: normal 900 1em/1 '#{ $fa-style-family }';\n}\n\n@font-face {\n  font-family: 'Font Awesome 6 Free';\n  font-style: normal;\n  font-weight: 900;\n  font-display: $fa-font-display;\n  src: url('#{$fa-font-path}/fa-solid-900.woff2') format('woff2'),\n    url('#{$fa-font-path}/fa-solid-900.ttf') format('truetype');\n}\n\n.fas,\n.#{$fa-css-prefix}-solid {\n  font-weight: 900;\n}\n"
  },
  {
    "path": "_sass/vendor/font-awesome/v4-shims.scss",
    "content": "/*!\n * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\n// V4 shims compile (Web Fonts-based)\n// -------------------------\n\n@import 'functions';\n@import 'variables';\n@import 'shims';\n"
  },
  {
    "path": "_sass/vendor/susy/_su.scss",
    "content": "// Su\n// ==\n\n@import 'susy/su';\n"
  },
  {
    "path": "_sass/vendor/susy/_susy.scss",
    "content": "// Susy\n// ====\n\n@import 'susy/language/susy';\n"
  },
  {
    "path": "_sass/vendor/susy/_susyone.scss",
    "content": "// Susy\n// ====\n\n@import 'susy/language/susyone';\n"
  },
  {
    "path": "_sass/vendor/susy/susy/_su.scss",
    "content": "// Su\n// ==\n\n@import \"su/utilities\";\n@import \"su/settings\";\n@import \"su/validation\";\n@import \"su/grid\";\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/_susy.scss",
    "content": "// Susy Next Syntax\n// ================\n\n$susy-version: 2.1;\n\n@import \"../su\";\n@import \"../output/float\";\n\n@import \"susy/settings\";\n@import \"susy/validation\";\n@import \"susy/grids\";\n@import \"susy/box-sizing\";\n@import \"susy/context\";\n@import \"susy/background\";\n@import \"susy/container\";\n@import \"susy/span\";\n@import \"susy/gutters\";\n@import \"susy/isolate\";\n@import \"susy/gallery\";\n@import \"susy/rows\";\n@import \"susy/margins\";\n@import \"susy/padding\";\n@import \"susy/bleed\";\n@import \"susy/breakpoint-plugin\";\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/_susyone.scss",
    "content": "// ---------------------------------------------------------------------------\n// Partials\n\n$susy-version: 1.5;\n\n@import \"susyone/settings\";\n@import \"susyone/functions\";\n@import \"susyone/grid\";\n@import \"susyone/isolation\";\n@import \"susyone/padding\";\n@import \"susyone/margin\";\n@import \"susyone/media\";\n@import \"susyone/background\";\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_background.scss",
    "content": "// Background Grid Syntax\n// ======================\n\n$susy-overlay-grid-head-exists: false;\n\n\n// Show Grid/s\n// -----------\n// Show grid on any element using either background or overlay.\n// - [$grid]  : <settings>\n@mixin show-grid(\n  $grid: $susy\n) {\n  $inspect: $grid;\n  $_output: debug-get(output, $grid);\n\n  @include susy-inspect(show-grid, $inspect);\n  @if $_output == overlay and susy-get(debug image, $grid) != hide {\n    @include overlay-grid($grid);\n  } @else {\n    @include background-grid($grid);\n  }\n}\n\n@mixin show-grids(\n  $grid: $susy\n) {\n  @include show-grid($grid);\n}\n\n// Background Grid\n// ---------------\n// Show a grid background on any element.\n// - [$grid]  : <settings>\n@mixin background-grid(\n  $grid: $susy\n) {\n  $inspect  : $grid;\n  $_output  : get-background($grid);\n\n  @if length($_output) > 0 {\n    $_flow: susy-get(flow, $grid);\n\n    $_image: ();\n    @each $name, $layer in map-get($_output, image) {\n      $_direction: if($name == baseline, to bottom, to to($_flow));\n      $_image: append($_image, linear-gradient($_direction, $layer), comma);\n    }\n    $_output: map-merge($_output, (image: $_image));\n\n    @include background-grid-output($_output...);\n    @include susy-inspect(background-grid, $inspect);\n  }\n}\n\n\n// Overlay Grid\n// ------------\n// Generate an icon to trigger grid-overlays on any given elements.\n// $grids...  : <selector> [<settings>] [, <selector>]*\n@mixin overlay-grid (\n  $grid: $susy\n) {\n  @if not($susy-overlay-grid-head-exists) {\n    @at-root head { @include overlay-head($grid); }\n    @at-root head:before { @include overlay-trigger; }\n    @at-root head:hover { @include overlay-trigger-hover; }\n    $susy-overlay-grid-head-exists: true !global;\n  }\n\n  head:hover ~ &,\n  head:hover ~ body & {\n    position: relative;\n    &:before {\n      @include grid-overlay-base;\n      @include background-grid($grid);\n    }\n  }\n}\n\n\n// [Private] Overlay Trigger\n// -------------------------\n@mixin overlay-trigger {\n  content: \"|||\";\n  display: block;\n  padding: 5px 10px;\n  font: {\n    family: sans-serif;\n    size: 16px;\n    weight: bold;\n  }\n}\n\n\n// [Private] Overlay Trigger Hover\n// -------------------------------\n@mixin overlay-trigger-hover {\n  background: rgba(white, .5);\n  color: red;\n}\n\n\n// [Private] Overlay Head\n// ----------------------\n// <head> styles to create grid overlay toggle\n@mixin overlay-head (\n  $grid: $susy\n) {\n  $_toggle: debug-get(toggle, $grid);\n  $_horz: null;\n  $_vert: null;\n\n  @each $side in $_toggle {\n    $_horz: if($side == left or $side == right, $side, $_horz);\n    $_vert: if($side == top or $side == bottom, $side, $_vert);\n  }\n\n  display: block;\n  position: fixed;\n  #{$_horz}: 10px;\n  #{$_vert}: 10px;\n  z-index: 999;\n  color: #333;\n  background: rgba(white, .25);\n}\n\n\n// [Private] Grid Overlay Base\n// ---------------------------\n// Base styles for generating a grid overlay\n@mixin grid-overlay-base() {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  content: \" \";\n  z-index: 998;\n}\n\n\n// Get Symmetrical Background\n// --------------------------\n// - $grid: <map>\n@function get-background-sym(\n  $grid\n) {\n  $grid           : parse-grid($grid);\n  $_gutters       : susy-get(gutters, $grid);\n  $_column-width  : susy-get(column-width, $grid);\n  $_math          : susy-get(math, $grid);\n\n  $_color         : debug-get(color);\n  $_trans         : transparent;\n  $_light         : lighten($_color, 15%);\n\n  $_end           : 1 + $_gutters;\n  $_after         : percentage(1/$_end);\n  $_stops         : ();\n  $_size          : span(1 $grid wide);\n\n  @if is-inside($grid) {\n    $_stops: $_color, $_light;\n  } @else if is-split($grid) {\n    $_split: $_gutters/2;\n    $_before: percentage($_split/$_end);\n    $_after: percentage((1 + $_split)/$_end);\n    $_stops: $_trans $_before, $_color $_before, $_light $_after, $_trans $_after;\n  } @else {\n    $_stops: $_color, $_light $_after, $_trans $_after;\n  }\n\n  @if $_math == static {\n    $_size: valid-column-math($_math, $_column-width) * $_end;\n  }\n\n  $_output: (\n    image: (columns: $_stops),\n    size: $_size,\n  );\n\n  @return $_output;\n}\n\n\n// Get Asymmetrical Inside\n// -----------------------\n// - $grid: <settings>\n@function get-asym-inside(\n  $grid\n) {\n  $grid     : parse-grid($grid);\n  $_columns : susy-get(columns, $grid);\n\n  $_color   : debug-get(color);\n  $_light   : lighten($_color, 15%);\n  $_stops   : ();\n\n  @for $location from 1 through susy-count($_columns) {\n    $this-stop: ();\n\n    @if $location == 1 {\n      $this-stop: append($this-stop, $_color, comma);\n    } @else {\n      $start: parse-span(1 at $location $grid);\n      $start: get-isolation($start);\n      $this-stop: append($this-stop, $_color $start, comma);\n    }\n\n    @if $location == susy-count($_columns) {\n      $this-stop: append($this-stop, $_light, comma);\n    } @else {\n      $_end: parse-span(1 at ($location + 1) $grid);\n      $_end: get-isolation($_end);\n      $this-stop: append($this-stop, $_light $_end, comma);\n    }\n\n    $_stops: join($_stops, $this-stop, comma);\n  }\n\n  @return $_stops;\n}\n\n\n// Get Asymmetrical Split\n// ----------------------\n// - $grid: <settings>\n@function get-asym-split(\n  $grid\n) {\n  $grid     : parse-grid($grid);\n  $_columns : susy-get(columns, $grid);\n\n  $_color   : debug-get(color);\n  $_light   : lighten($_color, 15%);\n  $_stops   : ();\n\n  @for $location from 1 through susy-count($_columns) {\n    $this-stop: ();\n\n    $start: parse-span(1 at $location $grid);\n    $start: get-isolation($start);\n    $this-stop: append($this-stop, transparent $start, comma);\n    $this-stop: append($this-stop, $_color $start, comma);\n\n    $_end: $start + span(1 at $location $grid);\n    $this-stop: append($this-stop, $_light $_end, comma);\n    $this-stop: append($this-stop, transparent $_end, comma);\n\n    $_stops: join($_stops, $this-stop, comma);\n  }\n\n  @return $_stops;\n}\n\n\n// Get Asymmetrical Outside\n// ------------------------\n// - $grid: <settings>\n@function get-asym-outside(\n  $grid\n) {\n  $grid     : parse-grid($grid);\n  $_columns : susy-get(columns, $grid);\n\n  $_color   : debug-get(color);\n  $_light   : lighten($_color, 15%);\n  $_trans   : transparent;\n  $_stops   : ();\n\n  @for $location from 1 through susy-count($_columns) {\n    $this-stop: ();\n\n    @if $location == 1 {\n      $this-stop: append($this-stop, $_color, comma);\n    } @else {\n      $start: parse-span(1 at $location $grid);\n      $start: get-isolation($start);\n      $this-stop: append($this-stop, $_color $start, comma);\n    }\n\n    @if $location == susy-count($_columns) {\n      $this-stop: append($this-stop, $_light, comma);\n    } @else {\n      $gutter: get-span-width(first $location $grid);\n\n      $_end: parse-span(1 at ($location + 1) $grid);\n      $_end: get-isolation($_end);\n\n      $gutter: $_light $gutter, $_trans $gutter, $_trans $_end;\n      $this-stop: join($this-stop, $gutter, comma);\n    }\n\n    $_stops: join($_stops, $this-stop, comma);\n  }\n\n  @return $_stops;\n}\n\n\n// Get Asymmetrical Background\n// ---------------------------\n// - $grid: <settings>\n@function get-background-asym(\n  $grid\n) {\n  $_stops: ();\n\n  @if is-inside($grid) {\n    $_stops: get-asym-inside($grid);\n  } @else if is-split($grid) {\n    $_stops: get-asym-split($grid);\n  } @else {\n    $_stops: get-asym-outside($grid);\n  }\n\n  @return (image: (columns: $_stops));\n}\n\n\n// Get Background\n// --------------\n// - $grid: <settings>\n@function get-background(\n  $grid\n) {\n  $grid     : parse-grid($grid);\n  $_show    : susy-get(debug image, $grid);\n  $_return  : ();\n\n  @if $_show and $_show != 'hide' {\n    $_columns: susy-get(columns, $grid);\n\n    @if $_show != 'show-baseline' {\n      $_sym: is-symmetrical($_columns);\n      $_return: if($_sym, get-background-sym($grid), get-background-asym($grid));\n      $_return: map-merge($_return, (clip: content-box));\n    }\n\n    @if $_show != 'show-columns'\n      and global-variable-exists(base-line-height)\n      and type-of($base-line-height) == 'number'\n      and not unitless($base-line-height) {\n      $_color: variable-exists('grid-background-baseline-color');\n      $_color: if($_color, $grid-background-baseline-color, #000);\n\n      $_image: map-get($_return, image);\n      $_size: map-get($_return, size);\n      $_baseline: (baseline: ($_color 1px, transparent 1px));\n      $_baseline-size: 100% $base-line-height;\n\n      $_return: map-merge($_return, (\n        image: if($_image, map-merge($_image, $_baseline), $_baseline),\n        size: if($_size, ($_size, $_baseline-size), $_baseline-size),\n      ));\n\n      @if $_show == 'show' {\n        $_clip: map-get($_return, clip);\n        $_return: map-merge($_return, (clip: join($_clip, border-box, comma)));\n      }\n    } @else if $_show == 'show-baseline' {\n      @warn 'Please provide a $base-line-height with the desired height and units';\n    }\n  }\n\n  @if map-get($_return, image) {\n    $_return: map-merge($_return, (flow: susy-get(flow, $grid)));\n  }\n\n  @return $_return;\n}\n\n\n// Get Debug\n// ---------\n// Return the value of a debug setting\n// - $key: <setting>\n@function debug-get(\n  $key,\n  $grid: $susy\n) {\n  $key: join(debug, $key, space);\n  @return susy-get($key, $grid);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_bleed.scss",
    "content": "// Bleed Syntax\n// ============\n\n// Bleed\n// -----\n// Add negative margins, and equal positive padding to create bleed.\n// - $bleed  : <span>\n@mixin bleed(\n  $bleed: 0 gutter()\n) {\n  $inspect  : $bleed;\n  $output   : get-bleed($bleed);\n\n  @if susy-get(global-box-sizing) != content-box {\n    $output: map-merge((box-sizing: content-box), $output);\n  }\n\n  @include susy-inspect(bleed, $inspect);\n  @include output($output);\n}\n\n\n// Bleed-x\n// -------\n// Shortcut for horizontal bleed.\n// - $bleed  : <span>\n@mixin bleed-x(\n  $bleed: gutter()\n) {\n  $bleed  : parse-span($bleed);\n  $trbl   : susy-get(span, $bleed);\n\n  @if length($trbl) == 1 {\n    $bleed: map-merge($bleed, (span: 0 nth($trbl, 1)));\n  } @else if length($trbl) == 2 {\n    $bleed: map-merge($bleed, (span: 0 nth($trbl, 2) 0 nth($trbl, 1)));\n  } @else {\n    @warn 'bleed-x only takes 2 lengths, but #{length($trbl)} were passed.';\n  }\n\n  @include bleed($bleed);\n}\n\n\n// Bleed-y\n// -------\n// Shortcut for vertical bleed.\n// - $bleed  : <span>\n@mixin bleed-y(\n  $bleed: if(function-exists(rhythm), rhythm(1), 1em)\n) {\n  $bleed  : parse-span($bleed);\n  $trbl   : susy-get(span, $bleed);\n\n  @if length($trbl) == 1 {\n    $bleed: map-merge($bleed, (span: nth($trbl, 1) 0));\n  } @else if length($trbl) == 2 {\n    $bleed: map-merge($bleed, (span: nth($trbl, 1) 0 nth($trbl, 2) 0));\n  } @else {\n    @warn 'bleed-y only takes 2 lengths, but #{length($trbl)} were passed.';\n  }\n\n  @include bleed($bleed);\n}\n\n\n// Get Bleed\n// ---------\n// Return bleed output values\n// - $bleed: <span>\n@function get-bleed(\n  $bleed\n) {\n  $bleed    : map-merge((spread: wide), parse-span($bleed));\n  $trbl     : susy-get(span, $bleed);\n  $short    : null;\n  $output   : ();\n\n  @for $i from 1 through length($trbl) {\n    $this: nth($trbl, $i);\n    $new: ();\n    $margin: null;\n    $padding: null;\n    $padding-x: null;\n\n    @if $this > 0 {\n      $this: map-merge($bleed, (span: $this));\n      $margin: span($this);\n      $padding: $margin;\n      $padding-x: $padding;\n    }\n\n    @if $margin and $margin > 0 {\n      $margin: - $margin;\n\n      @if is-inside($this) {\n        $gutter: gutter($this);\n        $join: if($gutter and comparable($padding, $gutter), true, false);\n        $padding-x: if($join and $padding > 0, $padding + $gutter, $padding);\n      }\n    }\n\n    @if $i == 1 {\n      $new: (\n        margin-top: $margin,\n        padding-top: $padding,\n        margin-right: $margin,\n        padding-right: $padding-x,\n        margin-bottom: $margin,\n        padding-bottom: $padding,\n        margin-left: $margin,\n        padding-left: $padding-x,\n      );\n    } @else if $i == 2 {\n      $new: (\n        margin-right: $margin,\n        padding-right: $padding-x,\n        margin-left: $margin,\n        padding-left: $padding-x,\n      );\n    } @else if $i == 3 {\n      $new: (\n        margin-bottom: $margin,\n        padding-bottom: $padding,\n      );\n    } @else if $i == 4 {\n      $new: (\n        margin-left: $margin,\n        padding-left: $padding-x,\n      );\n    }\n\n    $output: map-merge($output, $new);\n  }\n\n  @each $prop, $value in $output {\n    $output: if($value == 0, map-merge($output, ($prop: null)), $output);\n  }\n\n  @return bleed-shorthand($output);\n}\n\n// Bleed Shorthand\n// ---------------\n// Convert bleed output into shorthand when possible.\n// - $bleed: <output map>\n@function bleed-shorthand(\n  $bleed\n) {\n  $margin: ();\n  $padding: ();\n  $return: ();\n\n  @each $key, $value in $bleed {\n    @if str-index($key, margin) {\n      $margin: map-merge($margin, ($key: $value));\n    } @else if str-index($key, padding) > 0 {\n      $padding: map-merge($padding, ($key: $value));\n    }\n  }\n\n  $props: (\n    margin: $margin,\n    padding: $padding,\n  );\n\n  @each $name, $map in $props {\n    $four: if(length(map-keys($map)) == 4, true, false);\n    $null: if(index(map-values($map), null), true, false);\n\n    @if $four and not($null) {\n      $top: map-get($map, '#{$name}-top');\n      $right: map-get($map, '#{$name}-right');\n      $bottom: map-get($map, '#{$name}-bottom');\n      $left: map-get($map, '#{$name}-left');\n\n      $tb: if($top == $bottom, $top, null);\n      $rl: if($right == $left, $right, null);\n      $all: if($tb == $rl, $tb, null);\n\n      $new: if($all, $all, null);\n\n      @if not($new) {\n        @if $tb and $rl {\n          $new: $tb $rl;\n        } @else if $rl {\n          $new: $top $rl $bottom;\n        } @else {\n          $new: $top $right $bottom $left;\n        }\n      }\n\n      $return: map-merge($return, ($name: $new));\n    } @else {\n      $return: map-merge($return, $map);\n    }\n  }\n\n  @return $return;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_box-sizing.scss",
    "content": "// Susy Box Sizing\n// =================\n\n// Global Box Sizing\n// -----------------\n// Set a box model globally on all elements.\n// - [$box]: border-box | content-box\n// - [$inherit]: true | false\n@mixin global-box-sizing(\n  $box: susy-get(global-box-sizing),\n  $inherit: false\n) {\n  $inspect: $box;\n\n  @if $inherit {\n    @at-root {\n       html { @include output((box-sizing: $box)); }\n       *, *:before, *:after { box-sizing: inherit; }\n     }\n  } @else {\n    *, *:before, *:after { @include output((box-sizing: $box)); }\n  }\n\n  @include susy-inspect(global-box-sizing, $inspect);\n  @include update-box-model($box);\n}\n\n// Border Box Sizing\n// -----------------\n// A legacy shortcut...\n// - [$inherit]: true | false\n@mixin border-box-sizing(\n  $inherit: false\n) {\n  @include global-box-sizing(border-box, $inherit);\n}\n\n// Update Box Model\n// ----------------\n// PRIVATE: Updates global box model setting\n@mixin update-box-model(\n  $box\n) {\n  @if $box != susy-get(global-box-sizing) {\n  @include susy-set(global-box-sizing, $box);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_breakpoint-plugin.scss",
    "content": "// Breakpoint Integration\n// ======================\n\n$susy-media: () !default;\n$susy-media-fallback: false !default;\n\n$_susy-media-context: ();\n\n\n// Susy Breakpoint\n// ---------------\n// Change grids at different media query breakpoints.\n// - $query     : <min-width> [<max-width>] | <property> <value> | <map>\n// - $layout    : <settings>\n// - $no-query  : <boolean> | <selector>\n@mixin susy-breakpoint(\n  $query,\n  $layout: false,\n  $no-query: $susy-media-fallback\n) {\n  @include susy-media-router($query, $no-query) {\n    @if $layout {\n      @include with-layout($layout) {\n        @content;\n      }\n    } @else {\n      @content;\n    }\n  }\n}\n\n\n// Susy Media\n// ----------\n// - $query: <min-width> [<max-width>] | <property> <value>\n// - $no-query: <boolean> | <selector>\n@mixin susy-media(\n  $query,\n  $no-query: $susy-media-fallback\n) {\n  $old-context: $_susy-media-context;\n  $name: if(map-has-key($susy-media, $query), $query, null);\n  $query: susy-get-media($query);\n  $query: susy-parse-media($query);\n\n  @include susy-media-context($query, $name);\n\n  @if $no-query and type-of($no-query) != string {\n    @content;\n  } @else {\n    @media #{susy-render-media($query)} {\n      @content;\n    }\n\n    @if type-of($no-query) == string {\n      #{$no-query} & {\n        @content;\n      }\n    }\n  }\n\n  @include susy-media-context($old-context, $clean: true);\n}\n\n\n// Media Router\n// ------------\n// Rout media arguments to the correct mixin.\n@mixin susy-media-router(\n  $query,\n  $no-query: $susy-media-fallback\n) {\n  @if susy-support(breakpoint, (mixin: breakpoint), $warn: false) {\n    @include breakpoint($query, $no-query) {\n      @content;\n    }\n  } @else {\n    @include susy-media($query, $no-query) {\n      @content;\n    }\n  }\n}\n\n\n// Update Context\n// -------------\n// Set the new media context\n@mixin susy-media-context(\n  $query,\n  $name: null,\n  $clean: false\n) {\n  $query: map-merge((name: $name), $query);\n\n  @if $clean {\n    $_susy-media-context: $query !global;\n  } @else {\n    $_susy-media-context: map-merge($_susy-media-context, $query) !global;\n  }\n}\n\n\n// Media Context\n// -------------\n// Return the full media context, or a single media property (e.g. min-width)\n@function susy-media-context(\n  $property: false\n) {\n  @if $property {\n    @return map-get($_susy-media-context, $property);\n  } @else {\n    @return $_susy-media-context;\n  }\n}\n\n\n// Get Media\n// ---------\n// Return a named media-query from $susy-media.\n// - $name: <key>\n@function susy-get-media(\n  $name\n) {\n  @if map-has-key($susy-media, $name) {\n    $map-value: map-get($susy-media, $name);\n    @if ($name == $map-value) {\n      $name: $map-value;\n    } @else {\n      $name: susy-get-media($map-value);\n    }\n  }\n\n  @return $name;\n}\n\n\n// Render Media\n// ------------\n// Build a media-query string from various media settings\n@function susy-render-media(\n  $query\n) {\n  $output: null;\n  @each $property, $value in $query {\n    $string: null;\n\n    @if $property == media {\n      $string: $value;\n    } @else {\n      $string: '(#{$property}: #{$value})';\n    }\n\n    $output: if($output, '#{$output} and #{$string}', $string);\n  }\n\n  @return $output;\n}\n\n\n// Parse Media\n// -----------\n// Return parsed media-query settings based on shorthand\n@function susy-parse-media(\n  $query\n) {\n  $mq: null;\n  @if type-of($query) == map {\n    $mq: $query;\n  } @else if type-of($query) == number {\n    $mq: (min-width: $query);\n  } @else if type-of($query) == list and length($query) == 2 {\n    @if type-of(nth($query, 1)) == number {\n      $mq: (\n        min-width: min($query...),\n        max-width: max($query...),\n      );\n    } @else {\n      $mq: (nth($query, 1): nth($query, 2));\n    }\n  } @else {\n    $mq: (media: '#{$query}');\n  }\n\n  @return $mq;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_container.scss",
    "content": "// Container Syntax\n// ================\n\n// Container [mixin]\n// -----------------\n// Set a container element\n// - [$layout]  : <settings>\n@mixin container(\n  $layout: $susy\n) {\n  $inspect    : $layout;\n  $layout     : parse-grid($layout);\n\n  $_width     : get-container-width($layout);\n  $_justify   : parse-container-position(susy-get(container-position, $layout));\n  $_property  : if(susy-get(math, $layout) == static, width, max-width);\n\n  $_box       : susy-get(box-sizing, $layout);\n\n  @if $_box {\n    @include output((box-sizing: $_box));\n  }\n\n  @include susy-inspect(container, $inspect);\n  @include float-container($_width, $_justify, $_property);\n  @include show-grid($layout);\n}\n\n// Container [function]\n// --------------------\n// Return container width\n// - [$layout]  : <settings>\n@function container(\n  $layout: $susy\n) {\n  $layout: parse-grid($layout);\n  @return get-container-width($layout);\n}\n\n// Get Container Width\n// -------------------\n// Calculate the container width\n// - [$layout]: <settings>\n@function get-container-width(\n  $layout: $susy\n) {\n  $layout         : parse-grid($layout);\n  $_width         : susy-get(container, $layout);\n  $_column-width  : susy-get(column-width, $layout);\n  $_math          : susy-get(math, $layout);\n\n  @if not($_width) or $_width == auto {\n    @if valid-column-math($_math, $_column-width) {\n      $_columns   : susy-get(columns, $layout);\n      $_gutters   : susy-get(gutters, $layout);\n      $_spread    : if(is-split($layout), wide, narrow);\n      $_width     : susy-sum($_columns, $_gutters, $_spread) * $_column-width;\n    } @else {\n      $_width: 100%;\n    }\n  }\n\n  @return $_width;\n}\n\n// Parse Container Position\n// ------------------------\n// Parse the $container-position into margin values.\n// - [$justify]   : left | center | right | <length> [<length>]\n@function parse-container-position(\n  $justify: map-get($susy-defaults, container-position)\n) {\n  $_return: if($justify == left, 0, auto) if($justify == right, 0, auto);\n\n  @if not(index(left right center, $justify)) {\n    $_return: nth($justify, 1);\n    $_return: $_return if(length($justify) > 1, nth($justify, 2), $_return);\n  }\n\n  @return $_return;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_context.scss",
    "content": "// Context Syntax\n// ==============\n\n// Nested [function]\n// -----------------\n// Return a subset grid for nested context.\n// - $context   : <span>\n@function nested(\n  $context\n) {\n  $context    : parse-span($context);\n  $span       : susy-get(span, $context);\n  $location   : get-location($context);\n  $columns    : susy-get(columns, $context);\n\n  @return susy-slice($span, $location, $columns);\n}\n\n// Nested [mixin]\n// --------------\n// Use a subset grid for a nested context\n// - $context   : <span>\n// - @content   : <content>\n@mixin nested(\n  $context\n) {\n  $inspect  : $context;\n  $context  : parse-span($context);\n  $old      : susy-get(columns);\n  $susy     : map-merge($susy, (columns: nested($context))) !global;\n\n  @include susy-inspect(nested, $inspect);\n  @content;\n\n  $susy     : map-merge($susy, (columns: $old)) !global;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_gallery.scss",
    "content": "// Gallery Syntax\n// ==============\n\n// Gallery\n// -------\n// Create an isolated gallery\n// - $span        : <span>\n// - [$selector]  : child | of-type\n@mixin gallery(\n  $span,\n  $selector: child\n) {\n  $inspect    : $span;\n  $span       : parse-span($span);\n  $span       : map-merge($span, (location: 1));\n\n  $n            : susy-get(span, $span);\n  $columns      : susy-get(columns, $span);\n  $context      : susy-count($columns);\n  $flow         : susy-get(flow, $span);\n\n  $inside       : is-inside($span);\n  $from         : from($flow);\n  $line         : floor($context / $n);\n  $symmetrical  : is-symmetrical($columns);\n\n  $output: (\n    width             : null,\n    float             : from,\n    margin-before     : null,\n    margin-after      : null,\n    padding-before    : null,\n    padding-after     : null,\n    flow              : $flow,\n  );\n\n  @if $inside {\n    $gutters: get-gutters($span);\n    $output: map-merge($output, (\n      padding-before: map-get($gutters, before),\n      padding-after: map-get($gutters, after),\n    ));\n  }\n\n  @if $symmetrical {\n    $output: map-merge($output, (width: get-span-width($span)));\n  }\n\n  $box          : susy-get(box-sizing, $span);\n  $global-box   : if(susy-get(global-box-sizing) == 'border-box', true, false);\n\n  @include susy-inspect(gallery, $inspect);\n\n  // Collective Output\n  @if $box == border-box or ($inside and not($box) and not($global-box)) {\n    @include output((box-sizing: border-box));\n  } @else if $box == content-box {\n    @include output((box-sizing: content-box));\n  }\n\n  @include float-span-output($output...);\n\n  // Individual Loop\n  @for $item from 1 through $line {\n    $nth: '#{$line}n + #{$item}';\n    &:nth-#{$selector}(#{$nth}) {\n      // Individual Prep\n      $output: (\n        width             : if($symmetrical, null, get-span-width($span)),\n        float             : null,\n        margin-before     : get-isolation($span),\n        margin-after      : -100%,\n        padding-before    : null,\n        padding-after     : null,\n        flow              : $flow,\n      );\n\n      // Individual Output\n      @include float-span-output($output...);\n\n      @if get-edge($span) == first {\n        @include break;\n        @include first($span);\n      } @else {\n        @include nobreak;\n      }\n\n      // Individual Location Increment\n      $location: get-location($span) + $n;\n      $location: if($location > $context, 1, $location);\n      $span: map-merge($span, (location: $location));\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_grids.scss",
    "content": "// Grid Syntax\n// ===========\n\n\n// Layout\n// ------\n// Set a new layout using a shorthand\n// - $layout: <settings>\n// - $clean: boolean\n@mixin layout(\n  $layout,\n  $clean: false\n) {\n  $inspect  : $layout;\n  $susy     : _get-layout($layout, $clean) !global;\n\n  @include susy-inspect(layout, $inspect);\n}\n\n\n// Use Grid\n// --------\n// Use an arbitrary layout for a section of code\n// - $layout: <settings>\n// - $clean: boolean\n@mixin with-layout(\n  $layout,\n  $clean: false\n) {\n  $inspect  : $layout;\n  $old      : $susy;\n  $susy     : _get-layout($layout, $clean) !global;\n\n  @include susy-inspect(with-layout, $inspect);\n\n  @content;\n\n  $susy: $old !global;\n}\n\n\n// Layout\n// ------\n// Return a parsed layout map based on shorthand syntax\n// - $layout: <settings>\n@function layout(\n  $layout: $susy\n) {\n  @return parse-grid($layout);\n}\n\n\n// Get Layout\n// ----------\n// Return a new layout based on current and given settings\n// - $layout: <settings>\n// - $clean: boolean\n@function _get-layout(\n  $layout,\n  $clean: false\n) {\n  $layout: layout($layout);\n  @return if($clean, $layout, _susy-deep-merge($susy, $layout));\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_gutters.scss",
    "content": "// Gutter Syntax\n// =============\n\n\n// Gutters\n// -------\n// Set gutters on an element.\n// - [$span]   : <settings>\n@mixin gutters(\n  $span: $susy\n) {\n  $inspect  : $span;\n  $span     : parse-gutters($span);\n  $_gutters : get-gutters($span);\n\n  $_output: (\n    before: map-get($_gutters, before),\n    after: map-get($_gutters, after),\n    flow: susy-get(flow, $span),\n  );\n\n  @include susy-inspect(gutters, $inspect);\n\n  @if is-inside($span) {\n    @include padding-output($_output...);\n  } @else {\n    @include margin-output($_output...);\n  }\n}\n\n@mixin gutter(\n  $span: $susy\n) {\n  @include gutters($span);\n}\n\n\n// Gutter\n// ------\n// Return the width of a gutter.\n// - [$span]   : <settings>\n@function gutter(\n  $span: $susy\n) {\n  $span: parse-gutters($span);\n\n  $_gutters: get-gutters($span);\n  $_gutters: map-get($_gutters, before) or map-get($_gutters, after);\n\n  @return $_gutters;\n}\n\n@function gutters(\n  $span: $susy\n) {\n  @return gutter($span);\n}\n\n\n// Get Gutter Width\n// ----------------\n// Return gutter width.\n// - [$context]: <context>\n@function get-gutter-width(\n  $context: $susy\n) {\n  $context  : parse-gutters($context);\n\n  $_gutters : susy-get(gutters, $context);\n  $_gutter  : susy-get(gutter-override, $context);\n\n  @if $_gutters and ($_gutters > 0) and not($_gutter) {\n    $_column-width: susy-get(column-width, $context);\n    $_math: gutter-math($context);\n    @if $_math == static {\n      $_gutter: $_gutters * valid-column-math($_math, $_column-width);\n    } @else {\n      $_columns : susy-get(columns, $context);\n      $_spread  : if(is-split($context), wide, susy-get(spread, $context));\n      $_gutter  : percentage($_gutters / susy-sum($_columns, $_gutters, $_spread));\n    }\n  }\n\n  $_gutter: if($_gutter == 'no-gutters' or $_gutter == 'no-gutter', null, $_gutter);\n\n  @return $_gutter;\n}\n\n\n// Get Gutters\n// -----------\n// Return before and after gutter values.\n// - [$context]: <context>\n@function get-gutters(\n  $context: $susy\n) {\n  $context            : parse-gutters($context);\n\n  $_gutter-position   : susy-get(gutter-position, $context);\n  $_gutter            : get-gutter-width($context);\n\n  $_return            : (before: null, after: null);\n\n  @if is-split($context) and $_gutter {\n    $_gutter: $_gutter / 2;\n    $_return: map-merge($_return, (before: $_gutter, after: $_gutter));\n  } @else {\n    $_return: map-merge($_return, ($_gutter-position: $_gutter));\n  }\n\n  @return $_return;\n}\n\n\n// Is Inside\n// ---------\n// Returns true if gutters are inside.\n// $context: <context>\n@function is-inside(\n  $context\n) {\n  $_inside: inside inside-static;\n  $_gutter-position: susy-get(gutter-position, $context);\n\n  @return if(index($_inside, $_gutter-position), true, false);\n}\n\n\n// Is Split\n// --------\n// Returns true if gutters are split.\n// $context: <context>\n@function is-split(\n  $context\n) {\n  $_split: split inside inside-static;\n  $_gutter-position: susy-get(gutter-position, $context);\n\n  @return if(index($_split, $_gutter-position), true, false);\n}\n\n\n// Gutter Math\n// -----------\n// Return the math to use for gutter calculations\n// $context: <context>\n@function gutter-math(\n  $context: $susy\n) {\n  $_return  : susy-get(math, $context);\n  $_return  : if(susy-get(gutter-position, $context) == inside-static, static, $_return);\n\n  @return $_return;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_isolate.scss",
    "content": "// Isolation Syntax\n// ================\n\n\n// Isolate [Mixin]\n// ---------------\n// Set isolation as an override.\n// - $location: <span>\n@mixin isolate(\n  $isolate: 1\n) {\n  $inspect: $isolate;\n\n  $output: (\n    push: isolate($isolate),\n    flow: susy-get(flow, $isolate),\n  );\n\n  @include susy-inspect(isolate, $inspect);\n  @include isolate-output($output...);\n}\n\n\n// Isolate [function]\n// ------------------\n// Return an isolation offset width.\n// - $location: <span>\n@function isolate(\n  $isolate: 1\n) {\n  $isolate: parse-span($isolate);\n  $isolation: susy-get(span, $isolate);\n\n  @if $isolation and not(get-location($isolate)) {\n    $new: (\n      span: null,\n      location: $isolation,\n    );\n    $isolate: map-merge($isolate, $new);\n  }\n\n  @return get-isolation($isolate);\n}\n\n\n// Get Isolation\n// -------------\n// Return the isolation offset width\n// - $input: <map>\n@function get-isolation(\n  $input\n) {\n  $location   : get-location($input);\n  $columns    : susy-get(columns, $input);\n  $width      : null;\n\n  @if type-of($location) == number and not(unitless($location)) {\n    $width: $location;\n  } @else if $location {\n    $push: $location - 1;\n    @if $push > 0 {\n      $push: map-merge($input, (\n        span: $push,\n        location: 1,\n        spread: wide,\n      ));\n      $width: get-span-width($push);\n    }\n  }\n\n  @if susy-get(gutter-position, $input) == split\n      and susy-get(gutters, $input) > 0 {\n    $width: if($width == null, gutters($input), $width + gutters($input));\n  }\n\n  @return $width or 0;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_margins.scss",
    "content": "// Margin Syntax\n// =============\n\n// Pre\n// ---\n// Add spanning-margins before an element.\n// - $span  : <span>\n@mixin pre(\n  $span\n) {\n  $inspect: $span;\n  $span   : map-merge((spread: wide), parse-span($span));\n  $flow   : susy-get(flow, $span);\n  $split  : if(susy-get(gutter-position, $span) == split, true, false);\n  $gutter : gutter($span);\n  $span   : span($span);\n  $width  : if($split and $gutter, $span + $gutter, $span);\n\n  @include susy-inspect(pre, $inspect);\n  @include margin-output($width, null, $flow);\n}\n\n// Post\n// ----\n// Add spanning-margins after an element.\n// - $span  : <span>\n@mixin post(\n  $span\n) {\n  $inspect  : $span;\n  $span     : map-merge((spread: wide), parse-span($span));\n  $flow     : susy-get(flow, $span);\n  $split    : if(susy-get(gutter-position, $span) == split, true, false);\n  $width    : if($split, span($span) + gutter($span), span($span));\n\n  @include susy-inspect(post, $inspect);\n  @include margin-output(null, $width, $flow);\n}\n\n// Push\n// ----\n// Simple synonymn for pre.\n// - $span  : <span>\n@mixin push(\n  $span\n) {\n  @include pre($span);\n}\n\n// Pull\n// ----\n// Add negative spanning-margins before an element.\n// - $span  : <span>\n@mixin pull(\n  $span\n) {\n  $inspect  : $span;\n  $span     : map-merge((spread: wide), parse-span($span));\n  $flow     : susy-get(flow, $span);\n  $split    : if(susy-get(gutter-position, $span) == split, true, false);\n  $width    : if($split, 0 - span($span) + gutter($span), 0 - span($span));\n\n  @include susy-inspect(pull, $inspect);\n  @include margin-output($width, null, $flow);\n}\n\n// Squish\n// ------\n// Add spanning-margins before and after an element.\n// - $pre     : <span>\n// - [$post]  : <span>\n@mixin squish(\n  $pre,\n  $post: false\n) {\n  $inspect      : ($pre, $post);\n  $pre          : map-merge((spread: wide), parse-span($pre));\n\n  @if $post {\n    $post: map-merge((spread: wide), parse-span($post));\n  } @else {\n    $span: susy-get(span, $pre);\n    @if length($span) > 1 {\n      $pre: map-merge($pre, (span: nth($span, 1)));\n      $post: map-merge($pre, (span: nth($span, 2)));\n    } @else {\n      $post: $pre;\n    }\n  }\n\n  @include susy-inspect(squish, $inspect);\n  @include pre($pre);\n  @include post($post);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_padding.scss",
    "content": "// Padding Syntax\n// ==============\n\n// Prefix\n// ------\n// Add spanning-padding before an element.\n// - $span  : <span>\n@mixin prefix(\n  $span\n) {\n  $inspect  : $span;\n  $span     : map-merge((spread: wide), parse-span($span));\n  $flow     : susy-get(flow, $span);\n  $width    : span($span);\n\n  @if is-inside($span) {\n    $gutter: gutter($span);\n    $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width);\n  }\n\n  @include susy-inspect(prefix, $inspect);\n  @include padding-output($width, null, $flow);\n}\n\n// Suffix\n// ------\n// Add spanning-padding after an element.\n// - $span  : <span>\n@mixin suffix(\n  $span\n) {\n  $inspect  : $span;\n  $span     : map-merge((spread: wide), parse-span($span));\n  $flow     : susy-get(flow, $span);\n  $width    : span($span);\n\n  @if is-inside($span) {\n    $gutter: gutter($span);\n    $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width);\n  }\n\n  @include susy-inspect(suffix, $inspect);\n  @include padding-output(null, $width, $flow);\n}\n\n// Pad\n// ---\n// Add spanning-padding before and after an element.\n// - $pre     : <span>\n// - [$post]  : <span>\n@mixin pad(\n  $pre,\n  $post: false\n) {\n  $inspect  : ($pre, $post);\n  $pre      : map-merge((spread: wide), parse-span($pre));\n\n  @if $post {\n    $post: map-merge((spread: wide), parse-span($post));\n  } @else {\n    $span: susy-get(span, $pre);\n    @if length($span) > 1 {\n      $pre: map-merge($pre, (span: nth($span, 1)));\n      $post: map-merge($pre, (span: nth($span, 2)));\n    } @else {\n      $post: $pre;\n    }\n  }\n\n  @include susy-inspect(pad, $inspect);\n  @include prefix($pre);\n  @include suffix($post);\n\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_rows.scss",
    "content": "// Row Start & End\n// ===============\n\n// Break\n// -----\n// Apply to any element that should force a line break.\n@mixin break {\n  @include output((clear: both));\n}\n\n\n// NoBreak\n// -------\n// Cancel the break() effect, e.g. when using media queries.\n@mixin nobreak {\n  @include output((clear: none));\n}\n\n\n// Full\n// ----\n// - [$context]: <layout shorthand>\n@mixin full(\n  $context: $susy\n) {\n  $inspect : $context;\n  @include susy-inspect(full, $inspect);\n  @include span(full of parse-grid($context) break);\n}\n\n\n// First\n// -----\n// - [$context]: <settings>\n@mixin first(\n  $context: $susy\n) {\n  $inspect  : $context;\n  $context  : parse-grid($context);\n  $flow     : susy-get(flow, $context);\n\n  @include susy-inspect(first, $inspect);\n  @if not(is-split($context)) {\n    @include float-first($flow);\n  }\n}\n\n@mixin alpha(\n  $context: $susy\n) {\n  @include first($context);\n}\n\n\n// Last\n// ----\n// - [$context]: <settings>\n@mixin last(\n  $context: $susy\n) {\n  $inspect  : $context;\n  $context  : parse-grid($context);\n\n  @include susy-inspect(last, $inspect);\n\n  $output: (\n    flow: susy-get(flow, $context),\n    last-flow: susy-get(last-flow, $context),\n    margin: if(is-split($context), null, 0),\n  );\n\n  @include float-last($output...);\n}\n\n@mixin omega(\n  $context: $susy\n) {\n  @include last($context);\n}\n\n\n// Get Edge\n// --------\n// Calculate edge value based on location, if possible\n@function get-edge(\n  $span\n) {\n  $span       : parse-span($span);\n  $edge       : susy-get(edge, $span);\n\n  @if not($edge) {\n    $count: susy-count(susy-get(columns, $span));\n    $location: susy-get(location, $span);\n    $n: susy-get(span, $span);\n\n    $number: if(type-of($location) == number, true, false);\n    $index: if($number and unitless($location), true, false);\n\n    @if $n == $count {\n      $edge: full;\n    } @else if $location and $n and $index {\n      @if $location == 1 {\n        $edge: if($n == $count, full, first);\n      } @else if $location + $n - 1 == $count {\n        $edge: last;\n      }\n    }\n  }\n\n  @if $edge == alpha or $edge == omega {\n    $edge: if($edge == alpha, first, last);\n  }\n\n  @return $edge;\n}\n\n\n// Get Location\n// ------------\n// Calculate location value based on edge, if possible\n@function get-location(\n  $span\n) {\n  $span       : parse-span($span);\n  $location   : susy-get(location, $span);\n  $edge       : get-edge($span);\n  $n          : susy-get(span, $span);\n\n  @if $edge and not($location) and type-of($n) == number and unitless($n) {\n    @if $edge == first {\n      $location: 1;\n    } @else if $edge == last {\n      $location: susy-count(susy-get(columns, $span)) - $n + 1;\n    }\n  }\n\n  @return $location\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_settings.scss",
    "content": "// Susy Settings\n// =============\n\n// Susy Language Defaults\n// ----------------------\n// - PRIVATE\n@include susy-defaults((\n  container: auto,\n  math: fluid,\n  output: float,\n  container-position: center,\n  gutter-position: after,\n  global-box-sizing: content-box,\n  debug: (\n    image: hide,\n    color: rgba(#66f, .25),\n    output: background,\n    toggle: top right,\n  ),\n));\n\n\n// Valid Keyword Values\n// --------------------\n// - PRIVATE: DONT'T TOUCH\n$susy-keywords: (\n  container: auto,\n  math: static fluid,\n  output: isolate float,\n  container-position: left center right,\n  flow: ltr rtl,\n  gutter-position: before after split inside inside-static,\n  box-sizing: border-box content-box,\n  span: full,\n  edge: first alpha last omega full,\n  spread: narrow wide wider,\n  gutter-override: no-gutters no-gutter,\n  role: nest,\n  clear: break nobreak,\n  debug image: show hide show-columns show-baseline,\n  debug output: background overlay,\n);\n\n\n// Parse Susy Keywords and Maps\n// ----------------------------\n@function parse-settings(\n  $short: $susy\n) {\n  $_return: ();\n\n  @if type-of($short) == map {\n    $_return: $short;\n  } @else {\n    @each $item in $short {\n      // strings\n      @if type-of($item) == string {\n        @each $key, $value in $susy-keywords {\n          @if index($value, $item) {\n            $_key-value: append($key, $item);\n            $_return: _susy-deep-set($_return, $_key-value...);\n          }\n        }\n      // maps\n      } @else if type-of($item) == map {\n        $_return: map-merge($_return, $item);\n      }\n    }\n  }\n\n  @return $_return;\n}\n\n\n// Parse Columns & Gutters\n// -----------------------\n@function parse-layout(\n  $short\n) {\n  $_return: ();\n  $_columns: ();\n  $_gutters: null;\n\n  @if not(unitless(nth(nth($short, 1), 1))) {\n    $_gutters: nth($short, 1);\n  } @else {\n    $_columns: (columns: nth($short, 1));\n    $_gutters: if(length($short) > 1, nth($short, 2), $_gutters);\n  }\n\n  @if type-of($_gutters) == list and length($_gutters) > 0 {\n    $_gutters: (\n      gutters: nth($_gutters, 2) / nth($_gutters, 1),\n      column-width: nth($_gutters, 1),\n    );\n  } @else {\n    $_gutters: if($_gutters, (gutters: $_gutters), ());\n  }\n\n  $_return: map-merge($_return, $_columns);\n  $_return: map-merge($_return, $_gutters);\n\n  @return $_return;\n}\n\n\n// Parse Grid/Context\n// ------------------\n@function parse-grid(\n  $short: $susy\n) {\n  $_return: parse-settings($short);\n  $_layout: ();\n\n  @if type-of($short) == map {\n    $_return: $short;\n  } @else {\n    @each $item in $short {\n      // number or list\n      @if type-of($item) == number or type-of($item) == list {\n        @if type-of($item) == list or unitless($item) {\n          $_layout: append($_layout, $item);\n        } @else {\n          $_return: map-merge($_return, (container: $item));\n        }\n      }\n    }\n\n    $_layout: if(length($_layout) > 0, parse-layout($_layout), $_layout);\n  }\n\n  @return map-merge($_return, $_layout);\n}\n\n\n// Parse Span\n// ----------\n@function parse-span(\n  $short,\n  $key: span\n) {\n  $_return: ();\n\n  @if type-of($short) == map {\n    $_return: $short;\n  } @else {\n    $_at: index($short, at);\n\n    @if $_at {\n      $_loci: $_at + 1;\n      $_location: nth($short, $_loci);\n      $_return: map-merge($_return, (location: $_location));\n      $short: set-nth($short, $_at, null);\n      $short: set-nth($short, $_loci, null);\n    }\n\n    $_i: 1;\n    $_span: ();\n\n    @while $_i <= length($short) {\n      $_this: nth($short, $_i);\n\n      @if type-of($_this) == number {\n        $_span: append($_span, $_this);\n        $short: set-nth($short, $_i, null);\n      } @else if $_this == of {\n        $short: set-nth($short, $_i, null);\n        $_i: length($short) + 1;\n      }\n\n      $_i: $_i + 1;\n    }\n\n    @if length($_span) > 0 {\n      $_span: if(length($_span) == 1, nth($_span, 1), $_span);\n      $_return: map-merge($_return, ($key: $_span));\n    }\n\n    $_return: map-merge($_return, parse-grid($short));\n  }\n\n  @return $_return;\n}\n\n\n// Parse Gutters\n// -------------\n@function parse-gutters(\n  $short: $susy\n) {\n  $_gutters: parse-span($short, gutter-override);\n  $_span: susy-get(gutter-override, $_gutters);\n\n  @if $_span and not(map-get($_gutters, columns)) {\n    $_context: ();\n    $_new: ();\n\n    @each $item in $_span {\n      @if type-of($item) == number and unitless($item) {\n        $_context: append($_context, $item);\n      } @else {\n        $_new: append($_new, $item);\n      }\n    }\n\n    $_context: parse-grid($_context);\n    $_new: if(length($_new) == 0, null, $_new);\n    $_new: if(length($_new) == 1, nth($_new, 1), $_new);\n    $_new: (gutter-override: if($_new != $_span, $_new, $_span));\n\n    $_gutters: map-merge($_gutters, $_new);\n    $_gutters: map-merge($_gutters, $_context);\n  }\n\n  @return $_gutters;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_span.scss",
    "content": "// Span Syntax\n// ===========\n\n// Span [mixin]\n// ------------\n// Set a spanning element using shorthand syntax.\n// - $span  : <span>\n@mixin span(\n  $span\n) {\n  $inspect: $span;\n  $span: parse-span($span);\n  $output: span-math($span);\n  $nesting: susy-get(span, $span);\n  $clear: susy-get(clear, $span);\n\n  $box: susy-get(box-sizing, $span);\n  $content-box: if(susy-get(global-box-sizing) != 'border-box', true, false);\n  $box: $box or if(is-inside($span) and $content-box, border-box, null);\n\n  @if $clear == break {\n    @include break;\n  } @else if $clear == nobreak {\n    @include nobreak;\n  }\n\n  @include susy-inspect(span, $inspect);\n  @include output((box-sizing: $box));\n  @include float-span-output($output...);\n\n  @if valid-columns($nesting, silent) {\n    @include nested($span) { @content; }\n  } @else {\n    @content;\n  }\n}\n\n// Span [function]\n// ---------------\n// Return the width of a span.\n// - $span  : <span>\n@function span(\n  $span\n) {\n  @return get-span-width($span);\n}\n\n// Span Math\n// ---------\n// Get all the span results.\n// - $span: <map>\n@function span-math(\n  $span\n) {\n  $nest             : if(susy-get(role, $span) == nest, true, false);\n  $split-nest       : if(is-split($span) and $nest, true, false);\n  $edge             : get-edge($span);\n  $location         : get-location($span);\n\n  $float            : from;\n  $padding-before   : null;\n  $padding-after    : null;\n  $margin-before    : null;\n  $margin-after     : null;\n\n  // calculate widths\n  $spread: index(map-values($span), spread);\n  $span: if($split-nest and not($spread), map-merge($span, (spread: wide)), $span);\n  $width: get-span-width($span);\n  $gutters: get-gutters($span);\n\n  // apply gutters\n  @if is-inside($span) {\n    @if not(susy-get(role, $span)) {\n      $padding-before: map-get($gutters, before);\n      $padding-after: map-get($gutters, after);\n    }\n  } @else {\n    @if not($split-nest) {\n      $margin-before: map-get($gutters, before);\n      $margin-after: map-get($gutters, after);\n    }\n  }\n\n  // special margin handling\n  @if susy-get(output, $span) == isolate and $location {\n    $margin-before: get-isolation($span);\n    $margin-after: -100%;\n  } @else if $edge {\n    $is-split: is-split($span);\n    $pos: susy-get(gutter-position, $span);\n\n    @if $edge == last {\n      $float: susy-get(last-flow, $span);\n    }\n\n    @if not($is-split) {\n      @if $edge == full or ($edge == first and $pos == before) {\n        $margin-before: 0;\n      }\n      @if $edge == full or ($edge == last and $pos == after) {\n        $margin-after: 0;\n      }\n    }\n\n  }\n\n  @return (\n    width           : $width,\n    float           : $float,\n    margin-before   : $margin-before,\n    margin-after    : $margin-after,\n    padding-before  : $padding-before,\n    padding-after   : $padding-after,\n    flow            : susy-get(flow, $span),\n  );\n}\n\n// Get Span Width\n// --------------\n// Return span width.\n// - $span: <map>\n@function get-span-width(\n  $span\n) {\n  $span     : parse-span($span);\n\n  $n        : susy-get(span, $span);\n  $location : get-location($span);\n  $columns  : susy-get(columns, $span);\n  $gutters  : susy-get(gutters, $span);\n  $spread   : susy-get(spread, $span);\n\n  $context  : null;\n  $span-sum : null;\n  $width    : null;\n\n  @if $n == 'full' {\n    $pos: susy-get(gutter-position, $span);\n    $role: susy-get(role, $span);\n    $n: if($pos == split and $role != nest, susy-count($columns), 100%);\n  }\n\n  @if type-of($n) != number {\n    @warn \"(#{type-of($n)}) #{$n} is not a valid span.\";\n  } @else if unitless($n) {\n    $context: susy-sum($columns, $gutters, if(is-split($span), wide, narrow));\n    $spread: if(is-inside($span), $spread or wide, $spread);\n    $span-sum: susy($n, $location, $columns, $gutters, $spread);\n\n    $_math: susy-get(math, $span);\n    $_column-width: susy-get(column-width, $span);\n    @if $_math == static {\n      $width: $span-sum * valid-column-math($_math, $_column-width);\n    } @else {\n      $width: percentage($span-sum / $context);\n    }\n  } @else {\n    $width: $n;\n  }\n\n  @return $width;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susy/_validation.scss",
    "content": "// Validation\n// ==========\n\n\n// Validate Column Math\n// --------------------\n@function valid-column-math(\n  $math,\n  $column-width\n) {\n  @if $math == static and not($column-width) {\n    @error 'Static math requires a valid column-width setting.';\n  }\n\n  @return $column-width;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_background.scss",
    "content": "// ---------------------------------------------------------------------------\n// Imports\n\n@import \"compass/layout/grid-background\";\n@import \"compass/css3/background-origin\";\n@import \"compass/css3/background-clip\";\n\n// ---------------------------------------------------------------------------\n// Susy Grid Background\n//\n// A wrapper for the compass \"column-grid-background\" mixin\n// Uses all your settings to create a grid background for a container element.\n// Note: Sub-pixel rounding can lead to several pixels of variation between browsers.\n@mixin susy-grid-background(){\n  @include column-grid-background($total-columns, column(), gutter(), 0);\n  @include background-origin(content-box);\n  @include background-clip(content-box);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_functions.scss",
    "content": "// ---------------------------------------------------------------------------\n// Imports\n\n// We need access to some basic font settings for handling media-queries.\n@import \"compass/typography/vertical_rhythm\";\n\n// For now, we also need this...\n$browser-default-font-size-px       : 16px;\n$browser-default-font-size-percent  : 100%;\n$browser-default-font-size-pt       : 12pt;\n\n$rem-with-px-fallback               : true !default;\n\n// ---------------------------------------------------------------------------\n// Sass list Functions\n\n// Return a list with specific items removed\n//\n// filter($list, $target)\n// - $list    : The list to filter.\n// - $target  : An item to be removed from the list.\n@function filter($list, $target) {\n  $clean: compact();\n  @if index($list, $target) {\n    @each $item in $list {\n      $clean: if($item == $target, $clean, append($clean, $item));\n    }\n  } @else { $clean: $list; }\n  @return $clean;\n}\n\n// ---------------------------------------------------------------------------\n// Don't use static output when it will break things\n\n// Switch element-level output to fluid, when container-width is wrong for static\n//\n// fix-static-misalignment([$style, $width])\n// - $style: $container-style.\n// - $width: $container-width.\n@function fix-static-misalignment(\n  $style: $container-style,\n  $width: $container-width\n) {\n  @if $container-width and $container-width != container-outer-width($width: false) {\n    $style: fluid;\n  }\n  @return $style;\n}\n\n// ---------------------------------------------------------------------------\n// Grid Functions\n\n// Returns the full width of a grid based on your grid settings.\n//\n//  $columns  : The number of columns to get width for.\n@function columns-width(\n  $columns  : $total-columns\n) {\n  @if round($columns) != $columns {\n    @warn \"Susy works best with integer column-spans.\" +\n    \"For partial-columns, you may need to finesse the math by hand using functions directly.\";\n  }\n  @return ($columns * $column-width) + (if($columns >= 1, ceil($columns - 1), 0) * $gutter-width);\n}\n\n// Return the grid width after adding or subtracting grid padding\n//\n// $width     : the width of the grid without padding;\n// $operation : ( add | subtract ) if padding should be added or subtracted;\n@function handle-grid-padding(\n  $width,\n  $operation : subtract\n) {\n  $pad: $grid-padding*2;\n\n  @if comparable($width, $grid-padding) {\n    $width: if($operation == subtract, $width - $pad, $width + $pad);\n  } @else {\n    @warn \"$grid-padding must be set in units comparable to the container width.\";\n  }\n\n  @return $width;\n}\n\n// Return the full outer width of a Container element.\n//\n//  $columns  : The number of columns in the Grid Layout.\n@function container-outer-width(\n  $columns  : $total-columns,\n  $width    : $container-width\n) {\n  $outerwidth: if($width, $width, columns-width($columns));\n\n  @if $width {\n    @if not($border-box-sizing) { $outerwidth: handle-grid-padding($outerwidth, subtract); }\n  } @else {\n    @if $border-box-sizing { $outerwidth: handle-grid-padding($outerwidth, add); }\n  }\n\n  @return $outerwidth;\n}\n\n// Return the percentage width of a single column in a given 'context'.\n//\n//  $context  : The grid context in columns, if nested.\n//  $style    : The container style to use.\n@function column(\n  $context  : $total-columns,\n  $style    : fix-static-misalignment()\n) {\n  @return if($style == static, $column-width, relative-width($column-width, $context));\n}\n\n// Return the percentage width of multiple 'columns' in a given 'context'.\n//\n//  $columns  : The number of columns to get relative width for.\n//  $context  : The grid context in columns, if nested.\n//  $style    : The container style to use.\n@function columns(\n  $columns,\n  $context  : $total-columns,\n  $style    : fix-static-misalignment()\n) {\n  @return if($style == static, columns-width($columns), relative-width(columns-width($columns), $context));\n}\n\n// Return the percentage width of a single gutter in a given 'context'.\n//\n//  $context  : The grid context in columns, if nested.\n//  $style    : The container style to use.\n@function gutter(\n  $context  : $total-columns,\n  $style    : fix-static-misalignment()\n) {\n  @return if($style == static, $gutter-width, relative-width($gutter-width, $context));\n}\n\n// Return the percentage width of a given value in a given 'context'.\n//\n//  $width    : Any given width value.\n//  $context  : The grid context in columns, if nested.\n@function relative-width(\n  $width,\n  $context : $total-columns\n) {\n  @return percentage($width / columns-width($context));\n}\n\n// Return the total space occupied by multiple columns and associated gutters.\n// Useful for adding padding or margins (prefix, suffix, push, pull, etc.)\n//\n//  $columns  : The number of columns to get relative space for.\n//  $context  : The grid context in columns, if nested.\n//  $style    : The container style to use.\n@function space(\n  $columns,\n  $context  : $total-columns,\n  $style    : fix-static-misalignment()\n) {\n  @return columns($columns, $context, $style) + if($columns >= 1, gutter($context, $style), 0);\n}\n\n// Accept a list including column-count and (optional) position.\n// Return either the column count or the position alone.\n//\n//  $columns  : the list to split and interprate.\n//  $request  : The value to return, either 'columns' or 'position'.\n@function split-columns-value(\n  $columns,\n  $request : columns\n) {\n  $pos  : false;\n  $cols : false;\n\n  @each $var in $columns {\n    @if (type-of($var) == 'string') {\n      $pos: $var;\n    } @else {\n      @if (type-of($var) == 'number') and (unitless($var)) {\n        $cols: $var;\n      } @else {\n        @warn '\"#{$var}\" is not a valid part of \"$columns: #{$columns}\" in the columns() mixin.';\n      }\n    }\n  }\n\n  @if $request == 'columns' {\n    @return $cols;\n  } @else {\n    @if $request == 'position' {\n      @return $pos;\n    } @else {\n      @warn '\"#{$request}\" is not a valid value for $request';\n    }\n  }\n}\n\n// Accept nth-selector variables, and format them as a valid CSS3 selector.\n//\n// $n         : [first | only | last | <equation>]\n// $selector  : [child | last-child | of-type | last-of-type ]\n@function format-nth(\n  $n        : last,\n  $selector : child\n) {\n  @if ($n == 'last') or ($n =='first') or ($n =='only') {\n    $selector: '#{$n}-#{$selector}';\n  } @else {\n    $selector: 'nth-#{$selector}(#{$n})';\n  }\n  @return $selector;\n}\n\n// ---------------------------------------------------------------------------\n// Media Functions\n\n// Return an em value adjusted to match the browser default font size.\n// Note: This only works if actual sizes are set relative to browser defaults.\n//\n// $ems         : The initial value to be converted.\n// $font-size   : The current font-size in.\n@function base-ems(\n  $ems,\n  $font-size: $base-font-size\n){\n  $font-size  : if(unit($ems) == 'rem', $base-font-size, $font-size);\n  $unit       : unit($font-size);\n  $mult       : $ems / ($ems * 0 + 1);\n\n  @if $unit == 'px' {\n    @return $font-size / $browser-default-font-size-px * $mult * 1em;\n  }\n  @else if $unit == '%' {\n    @return $font-size / $browser-default-font-size-percent * $mult * 1em;\n  }\n  @else if $unit == 'em' {\n    @return $font-size / 1em * $mult * 1em;\n  }\n  @else if $unit == 'pt' {\n    @return $font-size / $browser-default-font-size-pt * $mult * 1em;\n  }\n  @else {\n    @warn 'Variable $base-font-size does not have a valid font unit. Valid units for fonts in CSS are px, pt, em, and %.';\n  }\n}\n\n// This name will be deprecated...\n@function absolute-ems(\n  $ems,\n  $font-size: $base-font-size\n){\n  @return base-ems( $ems, $font-size);\n  }\n\n// Return a length, after any em-values have been sent through absolute-ems().\n//\n// $length      : The length value to be checked and adjusted if necessary.\n// $font-size   : The current font-size in px.\n@function fix-ems(\n  $length,\n  $font-size: $base-font-size\n){\n  @if $length {\n    @if (unit($length) == 'em') or (unit($length) == 'rem') {\n      $length: absolute-ems($length,$font-size);\n    }\n  }\n  @return $length;\n}\n\n// Sort a list of arguments into \"$min $layout $max $ie\" order, and return the list.\n//\n// $media-layout  : a list of values [$min $layout $max $ie] including...\n//                : - one unitless number (columns in a layout)\n//                : - two optional lengths (min and max-width media-query breakpoints).\n//                : - one optional boolean or string to trigger fallback support for IE.\n// $font-size     : [optional] The base font-size of your layout, if you are using ems.\n//                : - defaults to $base-font-size\n@function medialayout(\n  $media-layout,\n  $font-size: $base-font-size\n) {\n  $media        : false;\n  $min          : false;\n  $layout       : false;\n  $max          : false;\n  $ie           : false;\n  $has-layout   : false;\n\n  @each $val in $media-layout {\n    @if (type-of($val) == \"number\") {\n      @if unitless($val) {\n        $layout     : $val;\n        $has-layout : true;\n      } @else {\n        @if ($has-layout) and not($media) {\n          $max: $val;\n        } @else {\n          @if $media {\n            $media: join($media,$val);\n          } @else {\n            $media: $val;\n          }\n        }\n      }\n    } @else {\n      $ie: $val;\n    }\n  }\n  @if (length($media) > 0) {\n    @if (length($media) == 1) {\n      $min: nth($media,1);\n    } @else {\n      $min: nth($media,1);\n      $max: nth($media,2);\n      @if comparable($min, $max) {\n        @if ($min > $max) {\n          $max: nth($media,1);\n          $min: nth($media,2);\n        }\n      } @else {\n        @warn \"Can't compare incompatible units.\" +\n         \"Using #{$min} for min-width, and #{$max} for max-width\";\n      }\n      @if (length($media) > 2) {\n        @warn \"You can only send two lengths: a min-width and an (optional) max-width.\" +\n         \"You sent #{length($media)}: #{$media}\";\n      }\n    }\n  }\n\n  // media-queries must be set in ems relative to the browser default\n  // rather than the font-size set in CSS.\n  $min: fix-ems($min,$font-size);\n  $max: fix-ems($max,$font-size);\n\n  @return $min $layout $max $ie;\n}\n\n// Return the nearest layout (column-count) above a given breakpoint.\n//\n// $min : The min-width media-query breakpoint above which to establish a new layout.\n@function get-layout(\n  $min\n) {\n  $min      : fix-ems($min);\n  $return   : false;\n\n  @if comparable($min, $column-width) {\n    $return : ceil(($min + $gutter-width) / ($column-width + $gutter-width));\n  } @else {\n    @warn \"Can't determine a layout, becuse #{$min} and #{$column-width} are not comparable.\";\n  }\n\n  @return $return;\n}\n\n// Check to see if a given $media-layout list is simply the default.\n//\n// $media-layout  : a list of values including -\n//                : One unitless number (columns in a layout)\n//                : Two optional lengths (min and max-width media-query breakpoints).\n//                : One optional boolean or string to trigger fallback support for IE.\n@function is-default-layout(\n  $media-layout\n) {\n  $media-layout : medialayout($media-layout);\n  $min          : nth($media-layout,1);\n  $layout-cols  : nth($media-layout,2);\n  $max          : nth($media-layout,3);\n\n  @if $min or $max {\n    @return false;\n  } @else {\n    @return if($layout-cols == $total-columns,true,false);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_grid.scss",
    "content": "// ---------------------------------------------------------------------------\n// Imports\n\n@import \"compass/utilities/general/clearfix\";\n@import \"compass/css3/box-sizing\";\n\n// ---------------------------------------------------------------------------\n// Border-Box Sizing\n\n// Apply the border-box sizing model to all elements\n// and adjust the grid math appropriately.\n@mixin border-box-sizing {\n  $border-box-sizing: true !global;\n  * { @include box-sizing(border-box); }\n}\n\n// ---------------------------------------------------------------------------\n// Container\n\n// Set the width of a container\n//\n//  $columns  : The number of columns in the Grid Layout.\n@mixin set-container-width(\n  $columns  : $total-columns,\n  $style    : $container-style,\n  $px-vals  : $pixel-values-only\n){\n  $width: container-outer-width($columns);\n\n  @if $style == 'static' {\n    @if $px-vals == true {\n      width: round(convert-length($width, px));\n    } @else {\n      @include rem(width, $width);\n    }\n  } @else {\n    @if $style == 'fluid' {\n      @if unit($width) == '%' {\n        @if $px-vals == true {\n          width: round(convert-length($width, px));\n        } @else {\n          @include rem(width, $width);\n        }\n      }\n    } @else {\n      @if $px-vals == true {\n        max-width: round(convert-length($width, px));\n      } @else {\n        @include rem(max-width, $width);\n      }\n\n      @include for-legacy-browser(ie,\"6\") {\n        @if unit($width) == 'rem' {\n          _width: round(convert-length($width, px));\n        } @else {\n          _width: $width;\n        }\n      }\n    }\n  }\n}\n\n// Set the outer grid-containing element(s).\n//\n//  $columns  : The number of columns in the container.\n@mixin apply-container(\n  $columns  : $total-columns,\n  $px-vals  : $pixel-values-only\n){\n  @include pie-clearfix;\n  @include set-container-width($columns);\n  @if $px-vals == true {\n    padding-left: round(convert-length($grid-padding, px));\n    padding-right: round(convert-length($grid-padding, px));\n  } @else {\n    @include rem(padding-left, $grid-padding);\n    @include rem(padding-right, $grid-padding);\n  }\n  margin: { left: auto; right: auto; }\n}\n\n// Set one or more layouts on a grid-containing element at any number of media-query breakpoints.\n//\n// $media-layout-1        : [default:$total-columns] A list of values including -\n//                        : One unitless number (representing columns in a layout)\n//                        : Two optional lengths (representing min and max-width media-query breakpoints).\n// $media-layout-2 ...-10 : [optional] Same as $media-layout-1\n@mixin container(\n  $media-layouts...\n){\n  $media-layouts: if(length($media-layouts) > 0, $media-layouts, $total-columns);\n\n  @each $ml in $media-layouts {\n    @if is-default-layout($ml) {\n      @include apply-container;\n    } @else {\n      @include at-breakpoint($ml) {\n        @include apply-container;\n      }\n    }\n  }\n}\n\n// ---------------------------------------------------------------------------\n// Columns\n\n// Create a grid element spanning any number of 'columns' in a grid 'context'.\n// $columns : The number of columns to span.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $padding : [optional] Padding applied to the inside of individual grid columns.\n//          : Padding is only output if one or two values are specified (e.g. 1em or 10px 20px)\n//          : Padding values are applied only on the horizontal axis in from-to order\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin span-columns(\n  $columns,\n  $context       : $total-columns,\n  $padding       : false,\n  $from          : $from-direction,\n  $style         : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  $to       : opposite-position($from);\n  $pos      : split-columns-value($columns,position);\n  $cols     : split-columns-value($columns,columns);\n  $pad-from : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context));\n  $pad-to   : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context));\n\n  @if $padding != false {\n    $pad-from : nth($padding, 1);\n\n    @if length($padding) > 1 {\n      $pad-to: nth($padding, 2);\n    } @else {\n      $pad-to: $pad-from;\n    }\n\n    $pad-from : if($style == static, $pad-from, relative-width($pad-from, $context));\n    $pad-to   : if($style == static, $pad-to, relative-width($pad-to, $context));\n\n    padding-#{$from}: $pad-from;\n    padding-#{$to}: $pad-to;\n  }\n\n  width: columns($cols, $context, $style) - if($border-box-sizing, 0, $pad-to + $pad-from);\n\n  @if ($pos == 'omega') {\n    @include omega($from);\n  } @else {\n    float: $from;\n    margin-#{$to}: gutter($context, $style);\n    @include for-legacy-browser(ie, \"6\") {\n      display: inline;\n    }\n  }\n}\n\n// Apply to elements spanning the last column, to account for the page edge.\n// Only needed as an override. Normally 'omega' can just be called by `columns`.\n//\n// $from    : The start-direction for your document.\n@mixin omega(\n  $from     : $from-direction\n) {\n  $from   : unquote($from);\n  $to     : opposite-position($from);\n  $hack   : opposite-position($omega-float);\n\n  float: $omega-float;\n  margin-#{$to}: 0;\n\n  @include for-legacy-browser(ie, \"6\", \"7\") {\n    *margin-#{$hack}: - $gutter-width;\n    @include for-legacy-browser(ie, \"6\") {\n      display: inline;\n    }\n  }\n}\n\n// Shortcut to apply omega to a specific subset of elements.\n//\n// $n         : [first | only | last | <equation>]\n// $selector  : [child | last-child | of-type | last-of-type ]\n// $from      : The start-direction for your document.\n@mixin nth-omega(\n  $n        : last,\n  $selector : child,\n  $from     : $from-direction\n) {\n  $from     : unquote($from);\n\n  &:#{format-nth($n,$selector)} {\n    @if $n == \"first\" {\n      @include omega($from);\n    } @else {\n      @include with-browser-ranges(css-sel3) {\n        @include omega($from);\n      }\n    }\n  }\n}\n\n\n\n// ---------------------------------------------------------------------------\n// Resets\n\n// Reset a '+columns' grid element to default block behavior\n//\n// $from  : The start direction of your layout (e.g. 'left' for ltr languages)\n@mixin reset-columns(\n  $from: $from-direction\n) {\n  $from   : unquote($from);\n  $to     : opposite-position($from);\n  $hack   : opposite-position($omega-float);\n\n  float: none;\n  width: auto;\n  margin-#{$to}: auto;\n\n  @include for-legacy-browser(ie, \"6\", \"7\") {\n    *margin-#{$hack}: auto;\n    @include for-legacy-browser(ie, \"6\") {\n      display: block;\n    }\n  }\n}\n\n// Apply to elements previously set as omega.\n// This will return floats and margins back to non-omega settigns.\n//\n// $context : [optional] The context (columns spanned by parent).\n// $from    : The start-direction for your document.\n// $style   : The container style to use.\n@mixin remove-omega(\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from   : unquote($from);\n  $to     : opposite-position($from);\n  $hack   : opposite-position($omega-float);\n\n  float: $from;\n  margin-#{$to}: gutter($context, $style);\n\n  @include for-legacy-browser(ie, \"6\", \"7\") {\n    *margin-#{$hack}: auto;\n  }\n}\n\n// Shortcut to apply remove-omega to a specific subset of elements.\n//\n// $n         : [first | only | last | <equation>]\n// $selector  : [child | last-child | of-type | last-of-type ]\n// $context   : [optional] The context (columns spanned by parent).\n// $from      : The start-direction for your document.\n// $style     : The container style to use.\n@mixin remove-nth-omega(\n  $n        : last,\n  $selector : child,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n\n  &:#{format-nth($n,$selector)} {\n    @if $n == \"first\" {\n      @include remove-omega($context, $from, $style);\n    } @else {\n      @include with-browser-ranges(css-sel3) {\n        @include remove-omega($context, $from, $style);\n      }\n    }\n  }\n}\n\n\n// ---------------------------------------------------------------------------\n// Change Settings\n\n@mixin with-grid-settings(\n  $columns: $total-columns,\n  $width: $column-width,\n  $gutter: $gutter-width,\n  $padding: $grid-padding\n) {\n  // keep the defaults around\n  $default-columns: $total-columns;\n  $default-width: $column-width;\n  $default-gutter: $gutter-width;\n  $default-padding: $grid-padding;\n\n  // use the new settings\n  $total-columns: $columns !global;\n  $column-width: $width !global;\n  $gutter-width: $gutter !global;\n  $grid-padding: $padding !global;\n\n  // apply to contents\n  @content;\n\n  // re-instate the defaults\n  $total-columns: $default-columns !global;\n  $column-width: $default-width !global;\n  $gutter-width: $default-gutter !global;\n  $grid-padding: $default-padding !global;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_isolation.scss",
    "content": "// ---------------------------------------------------------------------------\n// Isolation\n\n// Isolate the position of a grid element (use in addition to span-columns)\n//\n// $location  : The grid column to isolate in, relative to the container;\n// $context   : [optional] The context (columns spanned by parent).\n// $from      : The start direction of your layout (e.g. 'left' for ltr languages)\n@mixin isolate(\n  $location,\n  $context: $total-columns,\n  $from: $from-direction,\n  $style: fix-static-misalignment()\n) {\n  $to: opposite-position($from);\n  margin-#{$to}: -100%;\n  margin-#{$from}: space($location - 1, $context, $style);\n}\n\n// Isolate a group of elements in a grid, using nth-child selectors\n//\n// $columns       : The column-width of each item on the grid;\n// $context       : [optional] The context (columns spanned by parent).\n// $selector      : [child | of-type | last-of-type ] (default is 'child')\n// $from          : The start direction of your layout (e.g. 'left' for ltr languages)\n@mixin isolate-grid(\n  $columns,\n  $context: $total-columns,\n  $selector: 'child',\n  $from: $from-direction,\n  $style: fix-static-misalignment()\n) {\n  $to: opposite-position($from);\n  $location: 1;\n  $line: floor($context / $columns);\n\n  @include span-columns($columns, $context, $from: $from, $style: $style);\n  margin-#{$to}: -100%;\n\n  @for $item from 1 through $line {\n    $nth: '#{$line}n + #{$item}';\n    &:#{format-nth($nth,$selector)} {\n      margin-#{$from}: space($location - 1, $context, $style);\n      @if $location == 1 { clear: $from; }\n      @else { clear: none; }\n\n      $location: $location + $columns;\n      @if $location > $context { $location: 1; }\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_margin.scss",
    "content": "// ---------------------------------------------------------------------------\n// Margin Mixins\n\n// Apply 'columns' margin before an element to push it along the grid.\n//\n// $columns : The number of columns to span.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin pre(\n  $columns,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  margin-#{$from}: space($columns, $context, $style);\n}\n\n// 'push' is a synonymn for 'pre'\n@mixin push(\n  $columns,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  @include pre($columns, $context, $from, $style);\n}\n\n// Apply negative 'columns' margin before an element to pull it along the grid.\n//\n// $columns : The number of columns to span.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin pull(\n  $columns,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  margin-#{$from}: 0 - space($columns, $context, $style);\n}\n\n// Apply 'columns' margin after an element to contain it in a grid.\n//\n// $columns : The number of columns to span.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin post(\n  $columns,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  $to : opposite-position($from);\n  margin-#{$to}: space($columns, $context, $style);\n}\n\n// Apply 'columns' before and/or after an element to contain it on a grid.\n//\n// $pre     : The number of columns to add as margin before.\n// $post    : The number of columns to add as margin after.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin squish(\n  $pre      : false,\n  $post     : false,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  @if $pre {\n    @include pre($pre, $context, $from, $style)\n  }\n  @if $post {\n    @include post($post, $context, $from, $style)\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_media.scss",
    "content": "// ---------------------------------------------------------------------------\n// Media Mixins\n\n// Create a new layout context for (@content) descendants.\n//\n// $layout-cols : a (unitless) number of columns to use for this layout.\n@mixin layout(\n  $layout-cols\n) {\n  // store default $total-columns setting for later, then change it.\n  $default-layout   : $total-columns;\n  $total-columns    : $layout-cols !global;\n\n  // apply children in this new layout context.\n  @content;\n\n  // return to default $total-columns setting.\n  $total-columns    : $default-layout !global;\n}\n\n// Nest a block of code inside a new media-query and layout context.\n//\n// $media-layout  : a list of values [$min $layout $max $ie] including...\n//                : - one unitless number (columns in a layout)\n//                : - two optional lengths (min and max-width media-query breakpoints).\n//                : - one optional boolean or string to trigger fallback support for IE.\n// $font-size     : [optional] The base font-size of your layout, if you are using ems.\n//                : - defaults to $base-font-size\n@mixin at-breakpoint(\n  $media-layout,\n  $font-size: $base-font-size\n) {\n  $media-layout : medialayout($media-layout,$font-size);\n  $min          : nth($media-layout,1);\n  $layout       : nth($media-layout,2);\n  $max          : nth($media-layout,3);\n  $ie           : nth($media-layout,4);\n\n  @if not($breakpoint-media-output) and not($breakpoint-ie-output) and not($breakpoint-raw-output) {\n    @warn \"Either $breakpoint-media-output, $breakpoint-ie-output, or $breakpoint-raw-output must be true for at-breakpoint to work.\";\n  }\n\n  // We need to have either a min-width breakpoint or a layout in order to proceed.\n  @if $min or $layout or $max {\n\n    // If we don't have a layout, we create one based on the min-width.\n    @if not($layout) {\n      $layout: get-layout($min);\n    }\n\n    // If we still don't have a layout, we have a problem.\n    @if $layout {\n      // Set our new layout context.\n      @include layout($layout) {\n        @if $breakpoint-media-output {\n          @include with-browser-ranges(css-mediaqueries) {\n            @if $min and $max {\n              // Both $min and $max\n              @media (min-width: $min) and (max-width: $max) {\n                @content;\n              }\n            } @else {\n              @if not($min) and not($max) {\n                // Neither $min nor $max:\n                // We can create a breakpoint based on the number of columns in the layout.\n                $min: fix-ems(container-outer-width($width: false));\n              }\n              @if $min {\n                // Min only:\n                @media (min-width: $min) {\n                  @content;\n                }\n              } @else {\n                // Max only:\n                @media (max-width: $max) {\n                  @content;\n                }\n              }\n            }\n          }\n        }\n        // Set an IE fallback\n        @if $ie and $breakpoint-ie-output {\n          @if (type-of($ie) == 'bool') {\n            $ie: 'lt-ie9';\n          }\n          .#{$ie} & {\n            @content;\n          }\n        }\n\n        @if $breakpoint-raw-output {\n          @content;\n        }\n      }\n    } @else {\n      @warn \"We were unable to determine a layout for your breakpoint.\";\n    }\n\n  } @else {\n    @warn \"You need to provide either a valid layout (number of columns)\"\n        + \"or a valid media-query min-width breakpoint (length).\";\n  }\n\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_padding.scss",
    "content": "// ---------------------------------------------------------------------------\n// Padding Mixins\n\n// add empty colums as padding before an element.\n// $columns : The number of columns to prefix.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin prefix(\n  $columns,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from           : unquote($from);\n  padding-#{$from}: space($columns, $context, $style);\n}\n\n// add empty colums as padding after an element.\n// $columns : The number of columns to suffix.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin suffix(\n  $columns,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from         : unquote($from);\n  $to           : opposite-position($from);\n  padding-#{$to}: space($columns, $context, $style);\n}\n\n// add empty colums as padding before and after an element.\n// $columns : The number of columns to pad.\n// $context : [optional] The context (columns spanned by parent).\n//          : Context is required on any nested elements.\n//          : Context MUST NOT be declared on a root element.\n// $from    : The start direction of your layout (e.g. 'left' for ltr languages)\n// $style   : The container style to use.\n@mixin pad(\n  $prefix   : false,\n  $suffix   : false,\n  $context  : $total-columns,\n  $from     : $from-direction,\n  $style    : fix-static-misalignment()\n) {\n  $from     : unquote($from);\n  @if $prefix {\n    @include prefix($prefix, $context, $from, $style);\n  }\n  @if $suffix {\n    @include suffix($suffix, $context, $from, $style);\n  }\n}\n\n// Bleed into colums with margin/padding on any side of an element.\n// $width   : The side of the bleed.\n//          : Any unit-length will be used directly.\n//          : Any unitless number will be used as a column-count.\n//          : Use \"2 of 6\" format to represent 2 cals in a 6-col nested context.\n// $sides   : One or more sides to bleed [ top | right | bottom | left | all ].\n// $style   : The container style to use.\n@mixin bleed(\n  $width: $grid-padding,\n  $sides: left right,\n  $style: fix-static-misalignment()\n) {\n  @if $border-box-sizing { @include box-sizing(content-box) }\n\n  @if type-of($width) == 'list' {\n    $width: filter($width, of);\n    $width: space(nth($width,1), nth($width,2), $style);\n  } @else if unitless($width) {\n    $width: space($width, $style: $style);\n  }\n\n  @if $sides == 'all' {\n    margin: - $width;\n    padding: $width;\n  } @else {\n    @each $side in $sides {\n      margin-#{$side}: - $width;\n      padding-#{$side}: $width;\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/language/susyone/_settings.scss",
    "content": "// ---------------------------------------------------------------------------\n// Susy Settings\n\n// The total number of columns in the grid\n$total-columns      : 12              !default;\n\n// The width of columns and gutters.\n// These must all be set with the comparable units.\n$column-width       : 4em             !default;\n$gutter-width       : 1em             !default;\n\n// Padding on the left and right of a Grid Container.\n$grid-padding       : $gutter-width   !default;\n\n// ---------------------------------------------------------------------------\n// Advanced Settings\n\n// From Direction:\n// Controls for right-to-left or bi-directional sites.\n$from-direction     : left            !default;\n\n// Omega Float Direction:\n// The direction that +omega elements are floated by deafult.\n$omega-float        : opposite-position($from-direction)    !default;\n\n// Container Width:\n// Override the total width of your grid, using any length (50em, 75%, etc.)\n$container-width    : false           !default;\n\n// Container Style:\n// 'magic'  - Static (fixed or elastic) when there's enough space,\n//            fluid when there isn't. This is the SUSY MAGIC SAUCE(TM).\n// 'static' - Forces the grid container to remain static at all times.\n// 'fluid'  - Forces the grid to remain fluid at all times.\n//            (this will overrule any static $container-width settings)\n$container-style    : magic           !default;\n\n// Border-Box Sizing\n// Adjust the grid math appropriately for box-sizing: border-box;\n// Warning: This does not actually apply the new box model!\n// In most cases you can ignore this setting,\n// and simply apply the border-box-sizing mixin.\n$border-box-sizing  : false           !default;\n\n// Pixel Values only:\n// Make sure only pixel values are set for the container width.\n$pixel-values-only  : false           !default;\n\n// ---------------------------------------------------------------------------\n// IE Settings\n\n// When you are using a seperate IE stylesheet,\n// you can use these settings to control the output of at-breakpoint.\n// By default, at-breakpoint will output media-queries as well as\n// any defined ie-fallback classes.\n$breakpoint-media-output  : true      !default;\n$breakpoint-ie-output     : true      !default;\n\n// Danger Zone! Only set as 'true' in IE-specific style sheets.\n$breakpoint-raw-output    : false     !default;\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/_float.scss",
    "content": "// Float API\n// =========\n\n@import \"shared\";\n\n@import \"float/container\";\n@import \"float/span\";\n@import \"float/end\";\n@import \"float/isolate\";\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/_shared.scss",
    "content": "// Shared API\n// ==========\n\n@import \"support\";\n\n@import \"shared/inspect\";\n@import \"shared/output\";\n@import \"shared/direction\";\n@import \"shared/background\";\n@import \"shared/container\";\n@import \"shared/margins\";\n@import \"shared/padding\";\n\n\n\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/_support.scss",
    "content": "// Susy Browser Support\n// ====================\n\n@import \"support/support\";\n@import \"support/prefix\";\n@import \"support/background\";\n@import \"support/box-sizing\";\n@import \"support/rem\";\n@import \"support/clearfix\";\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/float/_container.scss",
    "content": "// Float Container API\n// ===================\n\n// Float Container\n// ---------------\n// - [$width]         : <length>\n// - [$justify]       : left | center | right\n// - [$math]   : fluid | static\n@mixin float-container(\n  $width,\n  $justify: auto auto,\n  $property: max-width\n) {\n  @include susy-clearfix;\n  @include container-output($width, $justify, $property);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/float/_end.scss",
    "content": "// Float Ends API\n// ==============\n\n// Susy End Defaults\n// -----------------\n// - PRIVATE\n@include susy-defaults((\n  last-flow: to,\n));\n\n// Float Last\n// ----------\n// - [$flow]  : ltr | rtl\n@mixin float-last(\n  $flow: map-get($susy-defaults, flow),\n  $last-flow: map-get($susy-defaults, last-flow),\n  $margin: 0\n) {\n  $to: to($flow);\n\n  $output: (\n    float: if($last-flow == to, $to, null),\n    margin-#{$to}: $margin,\n  );\n\n  @include output($output);\n}\n\n// Float First\n// -----------\n// - [$flow]  : ltr | rtl\n@mixin float-first(\n  $flow: map-get($susy-defaults, flow)\n) {\n  $output: (\n    margin-#{from($flow)}: 0,\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/float/_isolate.scss",
    "content": "// Float Isolation API\n// ===================\n\n// Isolate Output\n// --------------\n// - $push    : <length>\n// - [$flow]  : ltr | rtl\n@mixin isolate-output(\n  $push,\n  $flow: map-get($susy-defaults, flow)\n) {\n  $to: to($flow);\n  $from: from($flow);\n\n  $output: (\n    float: $from,\n    margin-#{$from}: $push,\n    margin-#{$to}: -100%,\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/float/_span.scss",
    "content": "// Float Span API\n// ==============\n\n// Float Span Output\n// -----------------\n// - $width             : <length>\n// - [$float]           : from | to\n// - [$margin-before]   : <length>\n// - [$margin-after]    : <length>\n// - [$padding-before]  : <length>\n// - [$padding-after]   : <length>\n// - [$flow]            : ltr | rtl\n@mixin float-span-output(\n  $width,\n  $float            : from,\n  $margin-before    : null,\n  $margin-after     : null,\n  $padding-before   : null,\n  $padding-after    : null,\n  $flow             : map-get($susy-defaults, flow)\n) {\n  $to     : to($flow);\n  $from   : from($flow);\n\n  $output: (\n    width: $width,\n    float: if($float == to, $to, null) or if($float == from, $from, null),\n    margin-#{$from}: $margin-before,\n    margin-#{$to}: $margin-after,\n    padding-#{$from}: $padding-before,\n    padding-#{$to}: $padding-after,\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_background.scss",
    "content": "// Grid Background API\n// ===================\n// - Sub-pixel rounding can lead to several pixels variation between browsers.\n\n// Grid Background Output\n// ----------------------\n// - $image: background-image\n// - $size: background-size\n// - $clip: background-clip\n// - [$flow]: ltr | rtl\n@mixin background-grid-output (\n  $image,\n  $size: null,\n  $clip: null,\n  $flow: map-get($susy-defaults, flow)\n) {\n  $output: (\n    background-image: $image,\n    background-size: $size,\n    background-origin: $clip,\n    background-clip: $clip,\n    background-position: from($flow) top,\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_container.scss",
    "content": "// Shared Container API\n// ====================\n\n// Container Output\n// ----------------\n// - [$width]         : <length>\n// - [$justify]       : left | center | right\n// - [$math]          : fluid | static\n@mixin container-output(\n  $width,\n  $justify: auto auto,\n  $property: max-width\n) {\n  $output: (\n    #{$property}: $width or 100%,\n    margin-left: nth($justify, 1),\n    margin-right: nth($justify, 2),\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_direction.scss",
    "content": "// Direction Helpers\n// =================\n\n// Susy Flow Defaults\n// ------------------\n// - PRIVATE\n@include susy-defaults((\n  flow: ltr,\n));\n\n// Get Direction\n// -------------\n// Return the 'from' or 'to' direction of a ltr or rtl flow.\n// - [$flow]  : ltr | rtl\n// - [$key]   : from | to\n@function get-direction(\n  $flow: map-get($susy-defaults, flow),\n  $key: from\n) {\n  $return: if($flow == rtl, (from: right, to: left), (from: left, to: right));\n  @return map-get($return, $key);\n}\n\n// To\n// --\n// Return the 'to' direction of a flow\n// - [$flow]  : ltr | rtl\n@function to(\n  $flow: map-get($susy-defaults, flow)\n) {\n  @return get-direction($flow, to);\n}\n\n// From\n// ----\n// Return the 'from' direction of a flow\n// - [$flow]  : ltr | rtl\n@function from(\n  $flow: map-get($susy-defaults, flow)\n) {\n  @return get-direction($flow, from);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_inspect.scss",
    "content": "// Debugging\n// =========\n\n// Susy Inspect\n// ------------\n// Output arguments passed to a inspect.\n// - $mixin  : <susy mixin>\n// - $inspec   : <mixin arguments>\n\n@mixin susy-inspect(\n  $mixin,\n  $inspect\n) {\n  $show: false;\n\n  @each $item in $inspect {\n    @if index($item, inspect) {\n      $show: true;\n    }\n  }\n\n  @if $show or susy-get(debug inspect) {\n    -susy-#{$mixin}: inspect($inspect);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_margins.scss",
    "content": "// Margins API\n// ===========\n\n// Margin Output\n// -------------\n// - $before  : <length>\n// - $after   : <length>\n// - [$flow]  : ltr | rtl\n@mixin margin-output(\n  $before,\n  $after,\n  $flow: map-get($susy-defaults, flow)\n) {\n  $to: to($flow);\n  $from: from($flow);\n\n  $output: (\n    margin-#{$from}: $before,\n    margin-#{$to}: $after,\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_output.scss",
    "content": "// Output\n// ======\n\n// Output\n// ------\n// Output CSS with proper browser support.\n// - $styles  : <map of css property-value pairs>\n@mixin output(\n  $styles\n) {\n  @each $prop, $val in $styles {\n    @include susy-support($prop, $val);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/shared/_padding.scss",
    "content": "// Padding API\n// ===========\n\n// Padding Output\n// --------------\n// - $before  : <length>\n// - $after   : <length>\n// - [$flow]  : ltr | rtl\n@mixin padding-output(\n  $before,\n  $after,\n  $flow: map-get($susy-defaults, flow)\n) {\n  $to: to($flow);\n  $from: from($flow);\n\n  $output: (\n    padding-#{$from}: $before,\n    padding-#{$to}: $after,\n  );\n\n  @include output($output);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/support/_background.scss",
    "content": "// Background Properties\n// =====================\n\n// Susy Background Image\n// ---------------------\n// Check for an existing support mixin, or provide a simple fallback.\n// - $image: <background-image>\n@mixin susy-background-image(\n  $image\n) {\n  @if susy-support(background-image, (mixin: background-image), $warn: false) {\n    @include background-image($image...);\n  } @else {\n    background-image: $image;\n  }\n}\n\n// Susy Background Size\n// ---------------------\n// Check for an existing support mixin, or provide a simple fallback.\n// - $image: <background-size>\n@mixin susy-background-size(\n  $size\n) {\n  @if susy-support(background-options, (mixin: background-size)) {\n    @include background-size($size);\n  } @else {\n    background-size: $size;\n  }\n}\n\n// Susy Background Origin\n// ----------------------\n// Check for an existing support mixin, or provide a simple fallback.\n// - $image: <background-origin>\n@mixin susy-background-origin(\n  $origin\n) {\n  @if susy-support(background-options, (mixin: background-origin)) {\n    @include background-origin($origin);\n  } @else {\n    background-origin: $origin;\n  }\n}\n\n// Susy Background Clip\n// --------------------\n// Check for an existing support mixin, or provide a simple fallback.\n// - $image: <background-clip>\n@mixin susy-background-clip(\n  $clip\n) {\n  @if susy-support(background-options, (mixin: background-clip)) {\n    @include background-clip($clip);\n  } @else {\n    background-clip: $clip;\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/support/_box-sizing.scss",
    "content": "// Box Sizing\n// ==========\n\n// Box Sizing\n// ----------\n// Check for an existing support mixin, or provide a simple fallback.\n// - $model: <box-sizing>\n@mixin susy-box-sizing(\n  $model: content-box\n) {\n  @if $model {\n    @if susy-support(box-sizing, (mixin: box-sizing), $warn: false) {\n      @include box-sizing($model);\n    } @else {\n      $prefix: (moz, webkit, official);\n      @include susy-prefix(box-sizing, $model, $prefix);\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/support/_clearfix.scss",
    "content": "// Susy Fallback Clearfix\n// ======================\n\n\n// Clearfix\n// --------\n// Check for an existing support mixin, or provide a simple fallback.\n@mixin susy-clearfix {\n  @if susy-support(clearfix, (mixin: clearfix)) {\n    @include clearfix;\n  } @else {\n    &:after {\n      content: \" \";\n      display: block;\n      clear: both;\n    }\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/support/_prefix.scss",
    "content": "// Susy Prefix\n// ===========\n\n// Prefix\n// ------\n// Output simple prefixed properties.\n// - $prop      : <css property>\n// - $val       : <css value>\n// - [$prefix]  : <browser prefix list>\n@mixin susy-prefix(\n  $prop,\n  $val,\n  $prefix: official\n) {\n  @each $fix in $prefix {\n    $fix: if($fix == official or not($fix), $prop, '-#{$fix}-#{$prop}');\n    @include susy-rem($fix, $val);\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/support/_rem.scss",
    "content": "// rem Support\n// ===========\n\n// rem\n// ---\n// Check for an existing support mixin, or output directly.\n// - $prop  : <css property>\n// - $val   : <css value>\n@mixin susy-rem(\n  $prop,\n  $val\n) {\n  $_reqs: (\n    variable: rhythm-unit rem-with-px-fallback,\n    mixin: rem,\n  );\n  @if susy-support(rem, $_reqs, $warn: false) and $rhythm-unit == rem {\n    @include rem($prop, $val);\n  } @else {\n    #{$prop}: $val;\n  }\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/output/support/_support.scss",
    "content": "// Browser Support\n// ===============\n\n// Susy Support Defaults\n// ---------------------\n@include susy-defaults((\n  use-custom: (\n    clearfix: false,\n    background-image: true,\n    background-options: false,\n    breakpoint: true,\n    box-sizing: true,\n    rem: true,\n  ),\n));\n\n\n// Susy Support [mixin]\n// --------------------\n// Send property-value pairs to the proper support modules.\n// - $prop  : <css property>\n// - $val   : <css value>\n@mixin susy-support(\n  $prop,\n  $val\n) {\n  // Background Support\n  @if $prop == background-image {\n    @include susy-background-image($val);\n  } @else if $prop == background-size {\n    @include susy-background-size($val);\n  } @else if $prop == background-origin {\n    @include susy-background-origin($val);\n  } @else if $prop == background-clip {\n    @include susy-background-clip($val);\n  }\n\n  // Box-Sizing Support\n  @else if $prop == box-sizing {\n    @include susy-box-sizing($val);\n  }\n\n  // Rem Support\n  @else {\n    @include susy-rem($prop, $val);\n  }\n}\n\n\n// Susy Support [function]\n// -----------------------\n// Check for support of a feature.\n// - $feature       : <string>\n//                    - e.g \"rem\" or \"box-sizing\"\n// - $requirements  : <map>\n//                    - e.g (variable: rem-with-px-fallback, mixin: rem)\n// - $warn          : <bool>\n@function susy-support(\n  $feature,\n  $requirements: (),\n  $warn: true\n) {\n  $_support: susy-get(use-custom $feature);\n\n  @if $_support {\n    $_fail: false;\n\n    @each $_type, $_req in $requirements {\n      @each $_i in $_req {\n        $_pass: call(get-function(unquote(\"#{$_type}-exists\")), $_i);\n\n        @if not($_pass) {\n          $_fail: true;\n          @if $warn {\n            @warn \"You requested custom support of #{$feature}, but the #{$_i} #{$_type} is not available.\";\n          }\n        }\n      }\n    }\n\n    $_support: if($_fail, false, $_support);\n  }\n\n  @return $_support;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/su/_grid.scss",
    "content": "// Column math\n// ===========\n\n\n// Is Symmetrical\n// --------------\n// Returns true if a grid is symmetrical.\n// - [$columns]   : <number> | <list>\n@function is-symmetrical(\n  $columns: susy-get(columns)\n) {\n  $columns: valid-columns($columns);\n  @return if(type-of($columns) == number, $columns, null);\n}\n\n\n// Susy Count\n// ----------\n// Find the number of columns in a given layout\n// - [$columns]   : <number> | <list>\n@function susy-count(\n  $columns: susy-get(columns)\n) {\n  $columns: valid-columns($columns);\n  @return is-symmetrical($columns) or length($columns);\n}\n\n\n// Susy Sum\n// --------\n// Find the total sum of column-units in a layout\n// - [$columns]   : <number> | <list>\n// - [$gutters]   : <ratio>\n// - [$spread]    : false/narrow | wide | wider\n@function susy-sum(\n  $columns  : susy-get(columns),\n  $gutters  : susy-get(gutters),\n  $spread   : false\n) {\n  $columns: valid-columns($columns);\n  $gutters: valid-gutters($gutters);\n\n  $spread: if($spread == wide, 0, if($spread == wider, 1, -1));\n  $gutter-sum: (susy-count($columns) + $spread) * $gutters;\n  $column-sum: is-symmetrical($columns);\n\n  @if not($column-sum) {\n    @each $column in $columns {\n      $column-sum: ($column-sum or 0) + $column;\n    }\n  }\n\n  @return $column-sum + $gutter-sum;\n}\n\n\n// Susy Slice\n// ----------\n// Return a subset of columns at a given location.\n// - $span        : <number>\n// - $location    : <number>\n// - [$columns]   : <number> | <list>\n@function susy-slice(\n  $span,\n  $location,\n  $columns: susy-get(columns)\n) {\n  $columns: valid-columns($columns);\n  $sub-columns: $span;\n\n  @if not(is-symmetrical($columns)) {\n    $location: $location or 1;\n    $sub-columns: ();\n    @for $i from $location to ($location + $span) {\n      $sub-columns: append($sub-columns, nth($columns, $i));\n    }\n  }\n\n  @return $sub-columns;\n}\n\n\n// Susy\n// ----\n// Find the sum of a column-span.\n// - $span        : <number>\n// - $location    : <number>\n// - [$columns]   : <number> | <list>\n// - [$gutters]   : <ratio>\n// - [$spread]    : false/narrow | wide | wider\n@function susy(\n  $span,\n  $location     : false,\n  $columns      : susy-get(columns),\n  $gutters      : susy-get(gutters),\n  $spread       : false\n) {\n  $columns: valid-columns($columns);\n  $gutters: valid-gutters($gutters);\n  $span: susy-slice($span, $location, $columns);\n\n  @return susy-sum($span, $gutters, $spread);\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/su/_settings.scss",
    "content": "// Settings\n// ========\n\n// Version\n// -------\n$su-version: 1.1;\n\n\n// Default Settings\n// ----------------\n// PRIVATE: The basic settings\n$susy-defaults: (\n  columns: 4,\n  gutters: .25,\n);\n\n\n// User Settings\n// -------------\n// - Define the $susy variable with a map of your own settings.\n// - Set EITHER $column-width OR $container\n// - Use $column-width for static layouts\n$susy: () !default;\n\n\n// Susy Defaults\n// -------------\n// PRIVATE: Add defaults to Susy\n@mixin susy-defaults(\n  $defaults\n) {\n  $susy-defaults: map-merge($susy-defaults, $defaults) !global;\n}\n\n\n// Susy Set\n// --------\n// Change one setting\n// - $key   : setting name\n// - $value : setting value\n@mixin susy-set(\n  $key-value...\n) {\n  $susy: _susy-deep-set($susy, $key-value...) !global;\n}\n\n\n// Susy Get\n// --------\n// Return one setting from a grid\n// - $key     : <keyword>\n// - $layout  : <settings>\n@function susy-get(\n  $key,\n  $layout: map-merge($susy-defaults, $susy)\n) {\n  $layout: parse-grid($layout);\n  $_options: $layout $susy $susy-defaults;\n  $_break: false;\n  $_return: null;\n\n  @each $opt in $_options {\n    @if type-of($opt) == map and not($_break) {\n      $_keyset: _susy-deep-has-key($opt, $key...);\n      @if $_keyset {\n        $_return: _susy-deep-get($opt, $key...);\n        $_break: true;\n      }\n    }\n  }\n\n  @return $_return;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/su/_utilities.scss",
    "content": "// Map Functions\n// =============\n\n\n// Truncate List\n// -------------\n// - Return a list, truncated to a given length\n@function _susy-truncate-list(\n  $list,\n  $length\n) {\n  $_return: ();\n\n  @for $i from 1 through length($list) {\n    $_return: if($i <= $length, append($_return, nth($list, $i)), $_return);\n  }\n\n  @return $_return;\n}\n\n\n// Deep Get\n// --------\n// - Return a value deep in nested maps\n@function _susy-deep-get(\n  $map,\n  $keys...\n) {\n  $_return: $map;\n\n  @each $key in $keys {\n    @if type-of($_return) == map {\n      $_return: map-get($_return, $key);\n    }\n  }\n\n  @return $_return;\n}\n\n\n// Deep Set\n// --------\n// - Set a value deep in nested maps\n@function _susy-deep-set(\n  $map,\n  $keys-value...\n) {\n  $_value: nth($keys-value, -1);\n  $_keys: _susy-truncate-list($keys-value, length($keys-value) - 1);\n  $_length: length($_keys);\n  $_return: ();\n\n  @for $i from 1 through $_length {\n    $_n: 0 - $i;\n    $_level: _susy-truncate-list($_keys, $_length + $_n);\n    $_level: _susy-deep-get($map, $_level...);\n    $_merge: nth($_keys, $_n);\n    $_merge: ($_merge: $_value);\n    $_return: if($_level, map-merge($_level, $_merge), $_merge);\n    $_value: $_return;\n  }\n\n  @return $_return;\n}\n\n\n// Deep Merge\n// ----------\n// Return 2 objects of any depth, merged\n@function _susy-deep-merge(\n  $map1,\n  $map2\n) {\n\n  @if type-of($map1) != map or type-of($map2) != map {\n    $map1: $map2;\n  } @else {\n    @each $key, $value in $map2 {\n      $_new: ($key: _susy_deep-merge(map-get($map1, $key), $value));\n      $map1: map-merge($map1, $_new);\n    }\n  }\n\n  @return $map1;\n}\n\n\n// Deep Has-Key\n// ------------\n// - Return true if a deep key exists\n@function _susy-deep-has-key(\n  $map,\n  $keys...\n) {\n  $_return: null;\n  $_stop: false;\n\n  @each $key in $keys {\n    @if not($_stop) {\n      $_return: map-has-key($map, $key);\n    }\n\n    @if $_return {\n      $map: map-get($map, $key);\n    } @else {\n      $_stop: true;\n    }\n  }\n\n  @return $_return;\n}\n"
  },
  {
    "path": "_sass/vendor/susy/susy/su/_validation.scss",
    "content": "// Math Validation\n// ===============\n\n\n// Valid Columns\n// -------------\n// Check that a column setting is valid.\n@function valid-columns(\n  $columns,\n  $silent: false\n) {\n  $type: type-of($columns);\n  $return: null;\n\n  @if $type == number and unitless($columns) {\n    $return: $columns;\n  } @else if $type == list {\n    $fail: null;\n    @each $col in $columns {\n      @if type-of($col) == number {\n        $fail: $fail or if(unitless($col), null, true);\n      } @else {\n        $fail: true;\n      }\n    }\n    $return: if($fail, $return, $columns);\n  }\n\n  @if $return != $columns and not($silent) {\n    $return: null;\n    $warn: '$columns must be a unitless number or list of unitless numbers.';\n    @warn $warn + ' Current value [#{$type}]: #{$columns}';\n  }\n\n  @return $return;\n}\n\n\n// Valid Gutters\n// -------------\n// Check that a gutter setting is valid.\n@function valid-gutters(\n  $gutters,\n  $silent: false\n) {\n  $type: type-of($gutters);\n  $return: null;\n\n  @if $type == number and unitless($gutters) {\n    $return: $gutters;\n  } @else if not($silent) {\n    $warn: '$gutters must be a unitless number.';\n    @warn $warn + ' Current value [#{$type}]: #{$gutters}';\n  }\n\n  @return $return;\n}\n"
  },
  {
    "path": "_talks/2012-03-01-talk-1.md",
    "content": "---\ntitle: \"Talk 1 on Relevant Topic in Your Field\"\ncollection: talks\ntype: \"Talk\"\npermalink: /talks/2012-03-01-talk-1\nvenue: \"UC San Francisco, Department of Testing\"\ndate: 2012-03-01\nlocation: \"San Francisco, CA, USA\"\n---\n\nThis is a description of your talk, which is a markdown file that can be all markdown-ified like any other post. Yay markdown!\n"
  },
  {
    "path": "_talks/2013-03-01-tutorial-1.md",
    "content": "---\ntitle: \"Tutorial 1 on Relevant Topic in Your Field\"\ncollection: talks\ntype: \"Tutorial\"\npermalink: /talks/2013-03-01-tutorial-1\nvenue: \"UC-Berkeley Institute for Testing Science\"\ndate: 2013-03-01\nlocation: \"Berkeley, CA, USA\"\n---\n\n[More information here](http://exampleurl.com)\n\nThis is a description of your tutorial, note the different field in type. This is a markdown files that can be all markdown-ified like any other post. Yay markdown!\n"
  },
  {
    "path": "_talks/2014-02-01-talk-2.md",
    "content": "---\ntitle: \"Talk 2 on Relevant Topic in Your Field\"\ncollection: talks\ntype: \"Talk\"\npermalink: /talks/2014-02-01-talk-2\nvenue: \"London School of Testing\"\ndate: 2014-02-01\nlocation: \"London, UK\"\n---\n\n[More information here](http://example2.com)\n\nThis is a description of your talk, which is a markdown files that can be all markdown-ified like any other post. Yay markdown!\n"
  },
  {
    "path": "_talks/2014-03-01-talk-3.md",
    "content": "---\ntitle: \"Conference Proceeding talk 3 on Relevant Topic in Your Field\"\ncollection: talks\ntype: \"Conference proceedings talk\"\npermalink: /talks/2014-03-01-talk-3\nvenue: \"Testing Institute of America 2014 Annual Conference\"\ndate: 2014-03-01\nlocation: \"Los Angeles, CA, USA\"\n---\n\nThis is a description of your conference proceedings talk, note the different field in type. You can put anything in this field.\n"
  },
  {
    "path": "_teaching/2014-spring-teaching-1.md",
    "content": "---\ntitle: \"Teaching experience 1\"\ncollection: teaching\ntype: \"Undergraduate course\"\npermalink: /teaching/2014-spring-teaching-1\nvenue: \"University 1, Department\"\ndate: 2014-01-01\nlocation: \"City, Country\"\n---\n\nThis is a description of a teaching experience. You can use markdown like any other post.\n\nHeading 1\n======\n\nHeading 2\n======\n\nHeading 3\n======"
  },
  {
    "path": "_teaching/2015-spring-teaching-2.md",
    "content": "---\ntitle: \"Teaching experience 2\"\ncollection: teaching\ntype: \"Workshop\"\npermalink: /teaching/2015-spring-teaching-1\nvenue: \"University 1, Department\"\ndate: 2015-01-01\nlocation: \"City, Country\"\n---\n\nThis is a description of a teaching experience. You can use markdown like any other post.\n\nHeading 1\n======\n\nHeading 2\n======\n\nHeading 3\n======\n"
  },
  {
    "path": "assets/css/academicons.css",
    "content": "/*\n *  Academicons 1.9.4 by James Walsh (https://github.com/jpswalsh) and Katja Bercic (https://github.com/katjabercic)\n *  Fonts generated using FontForge - https://fontforge.org\n *  Square icons designed to be used alongside Font Awesome square icons - https://fortawesome.github.io/Font-Awesome/\n *  Licenses - Font: SIL OFL 1.1, CSS: MIT License\n */\n@font-face {\n    font-family: 'Academicons';\n    font-style: normal;\n    font-weight: 400;\n    font-display: block;\n    src:url('../fonts/academicons.eot');\n    src:url('../fonts/academicons.eot') format('embedded-opentype'),\n        url('../fonts/academicons.ttf') format('truetype'),\n        url('../fonts/academicons.woff') format('woff'),\n        url('../fonts/academicons.svg') format('svg');\n}\n.ai {\n  font-family: 'Academicons';\n  font-weight: 400;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  display: inline-block;\n  font-style: normal;\n  font-variant: normal;\n  text-rendering: auto;\n  line-height: 1;\n}\n.ai-academia:before {\n  content: \"\\e9af\";\n}\n.ai-academia-square:before {\n  content: \"\\e93d\";\n}\n.ai-acclaim:before {\n  content: \"\\e92e\";\n}\n.ai-acclaim-square:before {\n  content: \"\\e93a\";\n}\n.ai-acm:before {\n  content: \"\\e93c\";\n}\n.ai-acm-square:before {\n  content: \"\\e95d\";\n}\n.ai-acmdl:before {\n  content: \"\\e96a\";\n}\n.ai-acmdl-square:before {\n  content: \"\\e9d3\";\n}\n.ai-ads:before {\n  content: \"\\e9cb\";\n}\n.ai-ads-square:before {\n  content: \"\\e94a\";\n}\n.ai-africarxiv:before {\n  content: \"\\e91b\";\n}\n.ai-africarxiv-square:before {\n  content: \"\\e90b\";\n}\n.ai-archive:before {\n  content: \"\\e955\";\n}\n.ai-archive-square:before {\n  content: \"\\e956\";\n}\n.ai-arxiv:before {\n  content: \"\\e974\";\n}\n.ai-arxiv-square:before {\n  content: \"\\e9a6\";\n}\n.ai-biorxiv:before {\n  content: \"\\e9a2\";\n}\n.ai-biorxiv-square:before {\n  content: \"\\e98b\";\n}\n.ai-ceur:before {\n  content: \"\\e96d\";\n}\n.ai-ceur-square:before {\n  content: \"\\e92f\";\n}\n.ai-ciencia-vitae:before {\n  content: \"\\e912\";\n}\n.ai-ciencia-vitae-square:before {\n  content: \"\\e913\";\n}\n.ai-clarivate:before {\n  content: \"\\e924\";\n}\n.ai-clarivate-square:before {\n  content: \"\\e925\";\n}\n.ai-closed-access:before {\n  content: \"\\e942\";\n}\n.ai-closed-access-square:before {\n  content: \"\\e943\";\n}\n.ai-conversation:before {\n  content: \"\\e94c\";\n}\n.ai-conversation-square:before {\n  content: \"\\e915\";\n}\n.ai-coursera:before {\n  content: \"\\e95f\";\n}\n.ai-coursera-square:before {\n  content: \"\\e97f\";\n}\n.ai-crossref:before {\n  content: \"\\e918\";\n}\n.ai-crossref-square:before {\n  content: \"\\e919\";\n}\n.ai-cv:before {\n  content: \"\\e9a5\";\n}\n.ai-cv-square:before {\n  content: \"\\e90a\";\n}\n.ai-datacite:before {\n  content: \"\\e91c\";\n}\n.ai-datacite-square:before {\n  content: \"\\e91d\";\n}\n.ai-dataverse:before {\n  content: \"\\e9f7\";\n}\n.ai-dataverse-square:before {\n  content: \"\\e9e4\";\n}\n.ai-dblp:before {\n  content: \"\\e94f\";\n}\n.ai-dblp-square:before {\n  content: \"\\e93f\";\n}\n.ai-depsy:before {\n  content: \"\\e97a\";\n}\n.ai-depsy-square:before {\n  content: \"\\e94b\";\n}\n.ai-doi:before {\n  content: \"\\e97e\";\n}\n.ai-doi-square:before {\n  content: \"\\e98f\";\n}\n.ai-dryad:before {\n  content: \"\\e97c\";\n}\n.ai-dryad-square:before {\n  content: \"\\e98c\";\n}\n.ai-elsevier:before {\n  content: \"\\e961\";\n}\n.ai-elsevier-square:before {\n  content: \"\\e910\";\n}\n.ai-figshare:before {\n  content: \"\\e981\";\n}\n.ai-figshare-square:before {\n  content: \"\\e9e7\";\n}\n.ai-google-scholar:before {\n  content: \"\\e9d4\";\n}\n.ai-google-scholar-square:before {\n  content: \"\\e9f9\";\n}\n.ai-hal:before {\n  content: \"\\e92c\";\n}\n.ai-hal-square:before {\n  content: \"\\e92d\";\n}\n.ai-hypothesis:before {\n  content: \"\\e95a\";\n}\n.ai-hypothesis-square:before {\n  content: \"\\e95b\";\n}\n.ai-ideas-repec:before {\n  content: \"\\e9ed\";\n}\n.ai-ideas-repec-square:before {\n  content: \"\\e9f8\";\n}\n.ai-ieee:before {\n  content: \"\\e929\";\n}\n.ai-ieee-square:before {\n  content: \"\\e9b9\";\n}\n.ai-impactstory:before {\n  content: \"\\e9cf\";\n}\n.ai-impactstory-square:before {\n  content: \"\\e9aa\";\n}\n.ai-inaturalist:before {\n  content: \"\\e900\";\n}\n.ai-inaturalist-square:before {\n  content: \"\\e901\";\n}\n.ai-inpn:before {\n  content: \"\\e902\";\n}\n.ai-inpn-square:before {\n  content: \"\\e903\";\n}\n.ai-inspire:before {\n  content: \"\\e9e9\";\n}\n.ai-inspire-square:before {\n  content: \"\\e9fe\";\n}\n.ai-isidore:before {\n  content: \"\\e936\";\n}\n.ai-isidore-square:before {\n  content: \"\\e954\";\n}\n.ai-isni:before {\n  content: \"\\e957\";\n}\n.ai-isni-square:before {\n  content: \"\\e958\";\n}\n.ai-jstor:before {\n  content: \"\\e938\";\n}\n.ai-jstor-square:before {\n  content: \"\\e944\";\n}\n.ai-lattes:before {\n  content: \"\\e9b3\";\n}\n.ai-lattes-square:before {\n  content: \"\\e99c\";\n}\n.ai-mathoverflow:before {\n  content: \"\\e9f6\";\n}\n.ai-mathoverflow-square:before {\n  content: \"\\e97b\";\n}\n.ai-mendeley:before {\n  content: \"\\e9f0\";\n}\n.ai-mendeley-square:before {\n  content: \"\\e9f3\";\n}\n.ai-moodle:before {\n  content: \"\\e907\";\n}\n.ai-moodle-square:before {\n  content: \"\\e908\";\n}\n.ai-mtmt:before {\n  content: \"\\e950\";\n}\n.ai-mtmt-square:before {\n  content: \"\\e951\";\n}\n.ai-nakala:before {\n  content: \"\\e940\";\n}\n.ai-nakala-square:before {\n  content: \"\\e941\";\n}\n.ai-obp:before {\n  content: \"\\e92a\";\n}\n.ai-obp-square:before {\n  content: \"\\e92b\";\n}\n.ai-open-access:before {\n  content: \"\\e939\";\n}\n.ai-open-access-square:before {\n  content: \"\\e9f4\";\n}\n.ai-open-data:before {\n  content: \"\\e966\";\n}\n.ai-open-data-square:before {\n  content: \"\\e967\";\n}\n.ai-open-materials:before {\n  content: \"\\e968\";\n}\n.ai-open-materials-square:before {\n  content: \"\\e969\";\n}\n.ai-openedition:before {\n  content: \"\\e946\";\n}\n.ai-openedition-square:before {\n  content: \"\\e947\";\n}\n.ai-orcid:before {\n  content: \"\\e9d9\";\n}\n.ai-orcid-square:before {\n  content: \"\\e9c3\";\n}\n.ai-osf:before {\n  content: \"\\e9ef\";\n}\n.ai-osf-square:before {\n  content: \"\\e931\";\n}\n.ai-overleaf:before {\n  content: \"\\e914\";\n}\n.ai-overleaf-square:before {\n  content: \"\\e98d\";\n}\n.ai-philpapers:before {\n  content: \"\\e98a\";\n}\n.ai-philpapers-square:before {\n  content: \"\\e96f\";\n}\n.ai-piazza:before {\n  content: \"\\e99a\";\n}\n.ai-piazza-square:before {\n  content: \"\\e90c\";\n}\n.ai-preregistered:before {\n  content: \"\\e906\";\n}\n.ai-preregistered-square:before {\n  content: \"\\e96b\";\n}\n.ai-protocols:before {\n  content: \"\\e952\";\n}\n.ai-protocols-square:before {\n  content: \"\\e953\";\n}\n.ai-psyarxiv:before {\n  content: \"\\e90e\";\n}\n.ai-psyarxiv-square:before {\n  content: \"\\e90f\";\n}\n.ai-publons:before {\n  content: \"\\e937\";\n}\n.ai-publons-square:before {\n  content: \"\\e94e\";\n}\n.ai-pubmed:before {\n  content: \"\\e99f\";\n}\n.ai-pubmed-square:before {\n  content: \"\\e97d\";\n}\n.ai-pubpeer:before {\n  content: \"\\e922\";\n}\n.ai-pubpeer-square:before {\n  content: \"\\e923\";\n}\n.ai-researcherid:before {\n  content: \"\\e91a\";\n}\n.ai-researcherid-square:before {\n  content: \"\\e95c\";\n}\n.ai-researchgate:before {\n  content: \"\\e95e\";\n}\n.ai-researchgate-square:before {\n  content: \"\\e99e\";\n}\n.ai-ror:before {\n  content: \"\\e948\";\n}\n.ai-ror-square:before {\n  content: \"\\e949\";\n}\n.ai-sci-hub:before {\n  content: \"\\e959\";\n}\n.ai-sci-hub-square:before {\n  content: \"\\e905\";\n}\n.ai-scirate:before {\n  content: \"\\e98e\";\n}\n.ai-scirate-square:before {\n  content: \"\\e99d\";\n}\n.ai-scopus:before {\n  content: \"\\e91e\";\n}\n.ai-scopus-square:before {\n  content: \"\\e91f\";\n}\n.ai-semantic-scholar:before {\n  content: \"\\e96e\";\n}\n.ai-semantic-scholar-square:before {\n  content: \"\\e96c\";\n}\n.ai-springer:before {\n  content: \"\\e928\";\n}\n.ai-springer-square:before {\n  content: \"\\e99b\";\n}\n.ai-ssrn:before {\n  content: \"\\e916\";\n}\n.ai-ssrn-square:before {\n  content: \"\\e917\";\n}\n.ai-stackoverflow:before {\n  content: \"\\e920\";\n}\n.ai-stackoverflow-square:before {\n  content: \"\\e921\";\n}\n.ai-viaf:before {\n  content: \"\\e933\";\n}\n.ai-viaf-square:before {\n  content: \"\\e934\";\n}\n.ai-wiley:before {\n  content: \"\\e926\";\n}\n.ai-wiley-square:before {\n  content: \"\\e927\";\n}\n.ai-zenodo:before {\n  content: \"\\e911\";\n}\n.ai-zotero:before {\n  content: \"\\e962\";\n}\n.ai-zotero-square:before {\n  content: \"\\e932\";\n}\n/*  Duplication of the FontAwesome style classes using 'ai' in place of 'fa'. */\n.ai-lg {\n  font-size: 1.33333em;\n  line-height: 0.75em;\n  vertical-align: -.0667em;\n}\n.ai-xs {\n  font-size: .75em;\n}\n.ai-sm {\n  font-size: .875em;\n}\n\n.ai-1x {\n  font-size: 1em;\n}\n.ai-2x {\n  font-size: 2em;\n}\n.ai-3x {\n  font-size: 3em;\n}\n.ai-4x {\n  font-size: 4em;\n}\n.ai-5x {\n  font-size: 5em;\n}\n.ai-6x {\n  font-size: 6em;\n}\n.ai-7x {\n  font-size: 7em;\n}\n.ai-8x {\n  font-size: 8em;\n}\n.ai-9x {\n  font-size: 9em;\n}\n.ai-10x {\n  font-size: 10em;\n}\n\n.ai-fw {\n  text-align: center;\n  width: 1.25em;\n}\n\n.ai-ul {\n  list-style-type: none;\n  margin-left: 2.5em;\n  padding-left: 0;\n}\n.ai-ul > li {\n    position: relative;\n}\n.ai-li {\n  left: -2em;\n  position: absolute;\n  text-align: center;\n  width: 2em;\n  line-height: inherit;\n}\n\n.ai-border {\nborder: solid 0.08em #eee;\nborder-radius: .1em;\n  padding: .2em .25em .15em;\n}\n\n.ai-pull-left {\n  float: left;\n}\n.ai-pull-right {\n  float: right;\n}\n.ai.ai-pull-left {\n  margin-right: .3em;\n}\n.ai.ai-pull-right {\n  margin-right: .3em;\n}\n\n.ai-stack {\n  display: inline-block;\n  height: 2em;\n  line-height: 2em;\n  position: relative;\n  vertical-align: middle;\n  width: 2.5em;\n}\n.ai-stack-1x,\n.ai-stack-2x {\n  left: 0;\n  position: absolute;\n  text-align: center;\n  width: 100%;\n}\n.ai-stack-1x {\n  line-height: inherit;\n}\n.ai-stack-2x {\n  font-size: 2em;\n}\n.ai-inverse {\n  color: #fff;\n}\n"
  },
  {
    "path": "assets/css/collapse.css",
    "content": ".container {\n    width:100%;\n    border:1px solid #d3d3d3;\n}\n.container div {\n    width:100%;\n}\n.container .header {\n    background-color:#d3d3d3;\n    padding: 2px;\n    cursor: pointer;\n    font-weight: bold;\n}\n.container .content {\n    display: none;\n    padding : 5px;\n}"
  },
  {
    "path": "assets/css/main.scss",
    "content": "---\n---\n\n/*\n * This file controls what is imported from /_sass\n *\n * Note that the files are processed in the order they are imported, so they are partly\n   sorted by the dependencies. Also, the first two lines of the file are required by Jekyll.\n */\n\n@import\n    \"vendor/breakpoint/breakpoint\",\n\n    \"themes\",\n    \"theme/{{ site.site_theme | default: 'default' | append: '_light' }}\",\n    \"theme/{{ site.site_theme | default: 'default' | append: '_dark' }}\",\n\n    \"include/mixins\",\n    \"vendor/susy/susy\",\n\n    \"layout/reset\",\n    \"layout/base\",\n\n    \"include/utilities\",\n    \"layout/tables\",\n    \"layout/buttons\",\n    \"layout/notices\",\n    \"layout/masthead\",\n    \"layout/navigation\",\n    \"layout/footer\",\n    \"syntax\",\n\n    \"layout/forms\",\n\n    \"layout/page\",\n    \"layout/archive\",\n    \"layout/sidebar\",\n    \"layout/json_cv\",\n\n    \"vendor/font-awesome/fontawesome\",\n    \"vendor/font-awesome/solid\",\n    \"vendor/font-awesome/brands\"\n;"
  },
  {
    "path": "assets/js/_main.js",
    "content": "/* ==========================================================================\n   Various functions that we want to use within the template\n   ========================================================================== */\n\n// Determine the expected state of the theme toggle, which can be \"dark\", \"light\", or\n// \"system\". Default is \"system\".\nlet determineThemeSetting = () => {\n  let themeSetting = localStorage.getItem(\"theme\");\n  return (themeSetting != \"dark\" && themeSetting != \"light\" && themeSetting != \"system\") ? \"system\" : themeSetting;\n};\n\n// Determine the computed theme, which can be \"dark\" or \"light\". If the theme setting is\n// \"system\", the computed theme is determined based on the user's system preference.\nlet determineComputedTheme = () => {\n  let themeSetting = determineThemeSetting();\n  if (themeSetting != \"system\") {\n    return themeSetting;\n  }\n  return (userPref && userPref(\"(prefers-color-scheme: dark)\").matches) ? \"dark\" : \"light\";\n};\n\n// detect OS/browser preference\nconst browserPref = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n\n// Set the theme on page load or when explicitly called\nlet setTheme = (theme) => {\n  const use_theme =\n    theme ||\n    localStorage.getItem(\"theme\") ||\n    $(\"html\").attr(\"data-theme\") ||\n    browserPref;\n\n  if (use_theme === \"dark\") {\n    $(\"html\").attr(\"data-theme\", \"dark\");\n    $(\"#theme-icon\").removeClass(\"fa-sun\").addClass(\"fa-moon\");\n  } else if (use_theme === \"light\") {\n    $(\"html\").removeAttr(\"data-theme\");\n    $(\"#theme-icon\").removeClass(\"fa-moon\").addClass(\"fa-sun\");\n  }\n};\n\n// Toggle the theme manually\nvar toggleTheme = () => {\n  const current_theme = $(\"html\").attr(\"data-theme\");\n  const new_theme = current_theme === \"dark\" ? \"light\" : \"dark\";\n  localStorage.setItem(\"theme\", new_theme);\n  setTheme(new_theme);\n};\n\n/* ==========================================================================\n   Plotly integration script so that Markdown codeblocks will be rendered\n   ========================================================================== */\n\n// Read the Plotly data from the code block, hide it, and render the chart as new node. This allows for the \n// JSON data to be retrieve when the theme is switched. The listener should only be added if the data is \n// actually present on the page.\nimport { plotlyDarkLayout, plotlyLightLayout } from './theme.js';\nlet plotlyElements = document.querySelectorAll(\"pre>code.language-plotly\");\nif (plotlyElements.length > 0) {\n  document.addEventListener(\"readystatechange\", () => {\n    if (document.readyState === \"complete\") {\n      plotlyElements.forEach((elem) => {\n        // Parse the Plotly JSON data and hide it\n        var jsonData = JSON.parse(elem.textContent);\n        elem.parentElement.classList.add(\"hidden\");\n\n        // Add the Plotly node\n        let chartElement = document.createElement(\"div\");\n        elem.parentElement.after(chartElement);\n\n        // Set the theme for the plot and render it\n        const theme = (determineComputedTheme() === \"dark\") ? plotlyDarkLayout : plotlyLightLayout;\n        if (jsonData.layout) {\n          jsonData.layout.template = (jsonData.layout.template) ? { ...theme, ...jsonData.layout.template } : theme;\n        } else {\n          jsonData.layout = { template: theme };\n        }\n        Plotly.react(chartElement, jsonData.data, jsonData.layout);\n      });\n    }\n  });\n}\n\n/* ==========================================================================\n   Actions that should occur when the page has been fully loaded\n   ========================================================================== */\n\n$(document).ready(function () {\n  // SCSS SETTINGS - These should be the same as the settings in the relevant files \n  const scssLarge = 925;          // pixels, from /_sass/_themes.scss\n  const scssMastheadHeight = 70;  // pixels, from the current theme (e.g., /_sass/theme/_default.scss)\n\n  // If the user hasn't chosen a theme, follow the OS preference\n  setTheme();\n  window.matchMedia('(prefers-color-scheme: dark)')\n        .addEventListener(\"change\", (e) => {\n          if (!localStorage.getItem(\"theme\")) {\n            setTheme(e.matches ? \"dark\" : \"light\");\n          }\n        });\n\n  // Enable the theme toggle\n  $('#theme-toggle').on('click', toggleTheme);\n\n  // Enable the sticky footer\n  var bumpIt = function () {\n    $(\"body\").css(\"padding-bottom\", \"0\");\n    $(\"body\").css(\"margin-bottom\", $(\".page__footer\").outerHeight(true));\n  }\n  $(window).resize(function () {\n    didResize = true;\n  });\n  setInterval(function () {\n    if (didResize) {\n      didResize = false;\n      bumpIt();\n    }}, 250);\n  var didResize = false;\n  bumpIt();\n\n  // FitVids init\n  fitvids();\n\n  // Follow menu drop down\n  $(\".author__urls-wrapper button\").on(\"click\", function () {\n    $(\".author__urls\").fadeToggle(\"fast\", function () { });\n    $(\".author__urls-wrapper button\").toggleClass(\"open\");\n  });\n\n  // Restore the follow menu if toggled on a window resize\n  jQuery(window).on('resize', function () {\n    if ($('.author__urls.social-icons').css('display') == 'none' && $(window).width() >= scssLarge) {\n      $(\".author__urls\").css('display', 'block')\n    }\n  });\n\n  // Init smooth scroll, this needs to be slightly more than then fixed masthead height\n  $(\"a\").smoothScroll({\n    offset: -scssMastheadHeight,\n    preventDefault: false,\n  });\n\n});\n"
  },
  {
    "path": "assets/js/collapse.js",
    "content": "$(\".header\").click(function () {\n\n    $header = $(this);\n    //getting the next element\n    $content = $header.next();\n    //open up the content needed - toggle the slide- if visible, slide up, if not slidedown.\n    $content.slideToggle(500, function () {\n        //execute this after slideToggle is done\n        //change text of header based on visibility of content div\n        $header.text(function () {\n            //change text based on condition\n            return $content.is(\":visible\") ? \"Collapse\" : \"Expand\";\n        });\n    });\n\n});\n"
  },
  {
    "path": "assets/js/plugins/jquery.greedy-navigation.js",
    "content": "/*\n* Greedy Navigation\n*\n* http://codepen.io/lukejacksonn/pen/PwmwWV\n*\n*/\n\nvar $nav = $('#site-nav');\nvar $btn = $('#site-nav button');\nvar $vlinks = $('#site-nav .visible-links');\nvar $vlinks_persist_tail = $vlinks.children(\"*.persist.tail\");\nvar $hlinks = $('#site-nav .hidden-links');\n\nvar breaks = [];\n\nfunction updateNav() {\n\n  var availableSpace = $btn.hasClass('hidden') ? $nav.width() : $nav.width() - $btn.width() - 30;\n\n  // The visible list is overflowing the nav\n  if ($vlinks.width() > availableSpace) {\n\n    while ($vlinks.width() > availableSpace && $vlinks.children(\"*:not(.persist)\").length > 0) {\n      // Record the width of the list\n      breaks.push($vlinks.width());\n\n      // Move item to the hidden list\n      $vlinks.children(\"*:not(.persist)\").last().prependTo($hlinks);\n\n      availableSpace = $btn.hasClass(\"hidden\") ? $nav.width() : $nav.width() - $btn.width() - 30;\n\n      // Show the dropdown btn\n      $btn.removeClass(\"hidden\");\n    }\n\n    // The visible list is not overflowing\n  } else {\n\n    // There is space for another item in the nav\n    while (breaks.length > 0 && availableSpace > breaks[breaks.length - 1]) {\n      // Move the item to the visible list\n      if ($vlinks_persist_tail.children().length > 0) {\n        $hlinks.children().first().insertBefore($vlinks_persist_tail);\n      } else {\n        $hlinks.children().first().appendTo($vlinks);\n      }\n      breaks.pop();\n    }\n\n    // Hide the dropdown btn if hidden list is empty\n    if (breaks.length < 1) {\n      $btn.addClass('hidden');\n      $btn.removeClass('close');\n      $hlinks.addClass('hidden');\n    }\n  }\n\n  // Keep counter updated\n  $btn.attr(\"count\", breaks.length);\n\n  // update masthead height and the body/sidebar top padding\n  var mastheadHeight = $('.masthead').height();\n  $('body').css('padding-top', mastheadHeight + 'px');\n  if ($(\".author__urls-wrapper button\").is(\":visible\")) {\n    $(\".sidebar\").css(\"padding-top\", \"\");\n  } else {\n    $(\".sidebar\").css(\"padding-top\", mastheadHeight + \"px\");\n  }\n\n}\n\n// Window listeners\n\n$(window).on('resize', function () {\n  updateNav();\n});\nscreen.orientation.addEventListener(\"change\", function () {\n  updateNav();\n});\n\n$btn.on('click', function () {\n  $hlinks.toggleClass('hidden');\n  $(this).toggleClass('close');\n});\n\nupdateNav();"
  },
  {
    "path": "assets/js/theme.js",
    "content": "// dark theme extracted from https://github.com/plotly/plotly.py/blob/main/plotly/package_data/templates/plotly_dark.json?raw=true\nexport const plotlyDarkLayout = {\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#f2f5fa\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"rgb(17,17,17)\",\"plot_bgcolor\":\"rgb(17,17,17)\",\"polar\":{\"bgcolor\":\"rgb(17,17,17)\",\"angularaxis\":{\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"rgb(17,17,17)\",\"aaxis\":{\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"#283442\",\"linecolor\":\"#506784\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"#283442\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"#283442\",\"linecolor\":\"#506784\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"#283442\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"rgb(17,17,17)\",\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"#C8D4E3\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"rgb(17,17,17)\",\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"#C8D4E3\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"rgb(17,17,17)\",\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"#C8D4E3\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#f2f5fa\"}},\"annotationdefaults\":{\"arrowcolor\":\"#f2f5fa\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"rgb(17,17,17)\",\"landcolor\":\"rgb(17,17,17)\",\"subunitcolor\":\"#506784\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"rgb(17,17,17)\"},\"title\":{\"x\":0.05},\"updatemenudefaults\":{\"bgcolor\":\"#506784\",\"borderwidth\":0},\"sliderdefaults\":{\"bgcolor\":\"#C8D4E3\",\"borderwidth\":1,\"bordercolor\":\"rgb(17,17,17)\",\"tickwidth\":0},\"mapbox\":{\"style\":\"dark\"}},\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"marker\":{\"line\":{\"color\":\"#283442\"}},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#f2f5fa\"},\"error_y\":{\"color\":\"#f2f5fa\"},\"marker\":{\"line\":{\"color\":\"rgb(17,17,17)\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"marker\":{\"line\":{\"color\":\"#283442\"}},\"type\":\"scattergl\"}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#A2B1C6\",\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"minorgridcolor\":\"#506784\",\"startlinecolor\":\"#A2B1C6\"},\"baxis\":{\"endlinecolor\":\"#A2B1C6\",\"gridcolor\":\"#506784\",\"linecolor\":\"#506784\",\"minorgridcolor\":\"#506784\",\"startlinecolor\":\"#A2B1C6\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#506784\"},\"line\":{\"color\":\"rgb(17,17,17)\"}},\"header\":{\"fill\":{\"color\":\"#2a3f5f\"},\"line\":{\"color\":\"rgb(17,17,17)\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"rgb(17,17,17)\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]}};\n\n// light theme extracted from https://github.com/plotly/plotly.py/blob/main/plotly/package_data/templates/plotly_white.json?raw=true\nexport const plotlyLightLayout = {\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"white\",\"polar\":{\"bgcolor\":\"white\",\"angularaxis\":{\"gridcolor\":\"#EBF0F8\",\"linecolor\":\"#EBF0F8\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"#EBF0F8\",\"linecolor\":\"#EBF0F8\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"white\",\"aaxis\":{\"gridcolor\":\"#DFE8F3\",\"linecolor\":\"#A2B1C6\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"#DFE8F3\",\"linecolor\":\"#A2B1C6\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"#DFE8F3\",\"linecolor\":\"#A2B1C6\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"#EBF0F8\",\"linecolor\":\"#EBF0F8\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"#EBF0F8\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"#EBF0F8\",\"linecolor\":\"#EBF0F8\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"#EBF0F8\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"white\",\"gridcolor\":\"#DFE8F3\",\"linecolor\":\"#EBF0F8\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"#EBF0F8\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"white\",\"gridcolor\":\"#DFE8F3\",\"linecolor\":\"#EBF0F8\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"#EBF0F8\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"white\",\"gridcolor\":\"#DFE8F3\",\"linecolor\":\"#EBF0F8\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"#EBF0F8\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"white\",\"subunitcolor\":\"#C8D4E3\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}},\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"white\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"#C8D4E3\",\"linecolor\":\"#C8D4E3\",\"minorgridcolor\":\"#C8D4E3\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"#C8D4E3\",\"linecolor\":\"#C8D4E3\",\"minorgridcolor\":\"#C8D4E3\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"white\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]}};\n"
  },
  {
    "path": "docker-compose.yaml",
    "content": "services:\n  jekyll-site:\n    image: jekyll-site\n    build: .\n    volumes: [ .:/usr/src/app ]\n    ports: [ 4000:4000 ]\n    user: 1000:1000\n    environment: [ JEKYLL_ENV=docker ]\n    command: jekyll serve -H 0.0.0.0 -w --config _config.yml,_config_docker.yml\n"
  },
  {
    "path": "files/bibtex1.bib",
    "content": "@article{Alice2023example,\n    title={An Example Article},\n    author={Alice, Bob and Charlie},\n    journal={Journal of Examples},\n    volume={12},\n    number={3},\n    pages={123--456},\n    year={2023},\n    publisher={Example Publisher}\n}\n"
  },
  {
    "path": "images/manifest.json",
    "content": "{\n\t\"name\": \"OOjs UI icon academic-progressive\",\n\t\"icons\": [\n\t\t{\n\t\t\t\"src\": \"/images/favicon-192x192.png\",\n\t\t\t\"sizes\": \"192x192\",\n\t\t\t\"type\": \"image/png\"\n\t\t},\n\t\t{\n\t\t\t\"src\": \"/images/favicon-512x512.png\",\n\t\t\t\"sizes\": \"512x512\",\n\t\t\t\"type\": \"image/png\"\n\t\t}\n\t]\n}\n"
  },
  {
    "path": "markdown_generator/OrcidToBib.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"01f0c5c2-619a-48e0-bb7c-e5e0be009f0e\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"orcid = '0000-0000-0000-0000' # Fill your orcid here\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"2fe4bc4e-4574-4322-8b18-0c4d33a749fa\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import requests\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"44a8b6cd-4034-4fc4-85a8-e3431dc564f1\",\n   \"metadata\": {},\n   \"source\": [\n    \"We use the `/works` api to list all works related to the orcid. This gives a summary of all works, so citation information is not included. We collect the `put-code` of all works to retrieve the citation information later.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"3b04331e-4149-4ca3-a0aa-89e3ba892723\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"response = requests.get('https://pub.orcid.org/v3.0/{}/works'.format(orcid),\\n\",\n    \"                        headers={\\\"Accept\\\": \\\"application/orcid+json\\\" })\\n\",\n    \"record = response.json()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"16f7c42d-623b-421a-8d87-bbb389313e3b\",\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"put_codes = []\\n\",\n    \"for work in record['group']:\\n\",\n    \"    put_code = work['work-summary'][0]['put-code']\\n\",\n    \"    put_codes.append(put_code)\\n\",\n    \"put_code = put_codes[0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"25e5d2aa-5233-486e-abce-a0d07a36c5ce\",\n   \"metadata\": {},\n   \"source\": [\n    \"We use the `/<orcid>/work/<put-code>` endpoint to retrieve the citation information for each record.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"dd797a16-0d91-4271-8e1e-b82579a07e45\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"citations = []\\n\",\n    \"for put_code in put_codes:\\n\",\n    \"    response = requests.get('https://pub.orcid.org/v3.0/{}/work/{}'.format(orcid, put_code),\\n\",\n    \"                            headers={\\\"Accept\\\": \\\"application/orcid+json\\\" })\\n\",\n    \"    work = response.json()\\n\",\n    \"    if work['citation'] is not None:\\n\",\n    \"        citations.append(work['citation']['citation-value'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"ad763df9-261f-41f3-bc32-00921d0a4e11\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"with open('output.bib', 'w') as bibfile:\\n\",\n    \"    for citation in citations:\\n\",\n    \"        bibfile.write(citation)\\n\",\n    \"        bibfile.write('\\\\n')\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "markdown_generator/PubsFromBib.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Publications markdown generator for academicpages\\n\",\n    \"\\n\",\n    \"Takes a set of bibtex of publications and converts them for use with [academicpages.github.io](academicpages.github.io). This is an interactive Jupyter notebook ([see more info here](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html)). \\n\",\n    \"\\n\",\n    \"The core python code is also in `pubsFromBibs.py`. \\n\",\n    \"Run either from the `markdown_generator` folder after replacing updating the publist dictionary with:\\n\",\n    \"* bib file names\\n\",\n    \"* specific venue keys based on your bib file preferences\\n\",\n    \"* any specific pre-text for specific files\\n\",\n    \"* Collection Name (future feature)\\n\",\n    \"\\n\",\n    \"TODO: Make this work with other databases of citations, \\n\",\n    \"TODO: Merge this with the existing TSV parsing solution\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from pybtex.database.input import bibtex\\n\",\n    \"import pybtex.database.input.bibtex \\n\",\n    \"from time import strptime\\n\",\n    \"import string\\n\",\n    \"import html\\n\",\n    \"import os\\n\",\n    \"import re\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"#todo: incorporate different collection types rather than a catch all publications, requires other changes to template\\n\",\n    \"publist = {\\n\",\n    \"    \\\"proceeding\\\": {\\n\",\n    \"        \\\"file\\\" : \\\"proceedings.bib\\\",\\n\",\n    \"        \\\"venuekey\\\": \\\"booktitle\\\",\\n\",\n    \"        \\\"venue-pretext\\\": \\\"In the proceedings of \\\",\\n\",\n    \"        \\\"collection\\\" : {\\\"name\\\":\\\"publications\\\",\\n\",\n    \"                        \\\"permalink\\\":\\\"/publication/\\\"}\\n\",\n    \"        \\n\",\n    \"    },\\n\",\n    \"    \\\"journal\\\":{\\n\",\n    \"        \\\"file\\\": \\\"pubs.bib\\\",\\n\",\n    \"        \\\"venuekey\\\" : \\\"journal\\\",\\n\",\n    \"        \\\"venue-pretext\\\" : \\\"\\\",\\n\",\n    \"        \\\"collection\\\" : {\\\"name\\\":\\\"publications\\\",\\n\",\n    \"                        \\\"permalink\\\":\\\"/publication/\\\"}\\n\",\n    \"    } \\n\",\n    \"}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"html_escape_table = {\\n\",\n    \"    \\\"&\\\": \\\"&amp;\\\",\\n\",\n    \"    '\\\"': \\\"&quot;\\\",\\n\",\n    \"    \\\"'\\\": \\\"&apos;\\\"\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"def html_escape(text):\\n\",\n    \"    \\\"\\\"\\\"Produce entities within text.\\\"\\\"\\\"\\n\",\n    \"    return \\\"\\\".join(html_escape_table.get(c,c) for c in text)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"for pubsource in publist:\\n\",\n    \"    parser = bibtex.Parser()\\n\",\n    \"    bibdata = parser.parse_file(publist[pubsource][\\\"file\\\"])\\n\",\n    \"\\n\",\n    \"    #loop through the individual references in a given bibtex file\\n\",\n    \"    for bib_id in bibdata.entries:\\n\",\n    \"        #reset default date\\n\",\n    \"        pub_year = \\\"1900\\\"\\n\",\n    \"        pub_month = \\\"01\\\"\\n\",\n    \"        pub_day = \\\"01\\\"\\n\",\n    \"        \\n\",\n    \"        b = bibdata.entries[bib_id].fields\\n\",\n    \"        \\n\",\n    \"        try:\\n\",\n    \"            pub_year = f'{b[\\\"year\\\"]}'\\n\",\n    \"\\n\",\n    \"            #todo: this hack for month and day needs some cleanup\\n\",\n    \"            if \\\"month\\\" in b.keys(): \\n\",\n    \"                if(len(b[\\\"month\\\"])<3):\\n\",\n    \"                    pub_month = \\\"0\\\"+b[\\\"month\\\"]\\n\",\n    \"                    pub_month = pub_month[-2:]\\n\",\n    \"                elif(b[\\\"month\\\"] not in range(12)):\\n\",\n    \"                    tmnth = strptime(b[\\\"month\\\"][:3],'%b').tm_mon   \\n\",\n    \"                    pub_month = \\\"{:02d}\\\".format(tmnth) \\n\",\n    \"                else:\\n\",\n    \"                    pub_month = str(b[\\\"month\\\"])\\n\",\n    \"            if \\\"day\\\" in b.keys(): \\n\",\n    \"                pub_day = str(b[\\\"day\\\"])\\n\",\n    \"\\n\",\n    \"                \\n\",\n    \"            pub_date = pub_year+\\\"-\\\"+pub_month+\\\"-\\\"+pub_day\\n\",\n    \"            \\n\",\n    \"            #strip out {} as needed (some bibtex entries that maintain formatting)\\n\",\n    \"            clean_title = b[\\\"title\\\"].replace(\\\"{\\\", \\\"\\\").replace(\\\"}\\\",\\\"\\\").replace(\\\"\\\\\\\\\\\",\\\"\\\").replace(\\\" \\\",\\\"-\\\")    \\n\",\n    \"\\n\",\n    \"            url_slug = re.sub(\\\"\\\\\\\\[.*\\\\\\\\]|[^a-zA-Z0-9_-]\\\", \\\"\\\", clean_title)\\n\",\n    \"            url_slug = url_slug.replace(\\\"--\\\",\\\"-\\\")\\n\",\n    \"\\n\",\n    \"            md_filename = (str(pub_date) + \\\"-\\\" + url_slug + \\\".md\\\").replace(\\\"--\\\",\\\"-\\\")\\n\",\n    \"            html_filename = (str(pub_date) + \\\"-\\\" + url_slug).replace(\\\"--\\\",\\\"-\\\")\\n\",\n    \"\\n\",\n    \"            #Build Citation from text\\n\",\n    \"            citation = \\\"\\\"\\n\",\n    \"\\n\",\n    \"            #citation authors - todo - add highlighting for primary author?\\n\",\n    \"            for author in bibdata.entries[bib_id].persons[\\\"author\\\"]:\\n\",\n    \"                citation = citation+\\\" \\\"+author.first_names[0]+\\\" \\\"+author.last_names[0]+\\\", \\\"\\n\",\n    \"\\n\",\n    \"            #citation title\\n\",\n    \"            citation = citation + \\\"\\\\\\\"\\\" + html_escape(b[\\\"title\\\"].replace(\\\"{\\\", \\\"\\\").replace(\\\"}\\\",\\\"\\\").replace(\\\"\\\\\\\\\\\",\\\"\\\")) + \\\".\\\\\\\"\\\"\\n\",\n    \"\\n\",\n    \"            #add venue logic depending on citation type\\n\",\n    \"            venue = publist[pubsource][\\\"venue-pretext\\\"]+b[publist[pubsource][\\\"venuekey\\\"]].replace(\\\"{\\\", \\\"\\\").replace(\\\"}\\\",\\\"\\\").replace(\\\"\\\\\\\\\\\",\\\"\\\")\\n\",\n    \"\\n\",\n    \"            citation = citation + \\\" \\\" + html_escape(venue)\\n\",\n    \"            citation = citation + \\\", \\\" + pub_year + \\\".\\\"\\n\",\n    \"\\n\",\n    \"            \\n\",\n    \"            ## YAML variables\\n\",\n    \"            md = \\\"---\\\\ntitle: \\\\\\\"\\\"   + html_escape(b[\\\"title\\\"].replace(\\\"{\\\", \\\"\\\").replace(\\\"}\\\",\\\"\\\").replace(\\\"\\\\\\\\\\\",\\\"\\\")) + '\\\"\\\\n'\\n\",\n    \"            \\n\",\n    \"            md += \\\"\\\"\\\"collection: \\\"\\\"\\\" +  publist[pubsource][\\\"collection\\\"][\\\"name\\\"]\\n\",\n    \"\\n\",\n    \"            md += \\\"\\\"\\\"\\\\npermalink: \\\"\\\"\\\" + publist[pubsource][\\\"collection\\\"][\\\"permalink\\\"]  + html_filename\\n\",\n    \"            \\n\",\n    \"            note = False\\n\",\n    \"            if \\\"note\\\" in b.keys():\\n\",\n    \"                if len(str(b[\\\"note\\\"])) > 5:\\n\",\n    \"                    md += \\\"\\\\nexcerpt: '\\\" + html_escape(b[\\\"note\\\"]) + \\\"'\\\"\\n\",\n    \"                    note = True\\n\",\n    \"\\n\",\n    \"            md += \\\"\\\\ndate: \\\" + str(pub_date) \\n\",\n    \"\\n\",\n    \"            md += \\\"\\\\nvenue: '\\\" + html_escape(venue) + \\\"'\\\"\\n\",\n    \"            \\n\",\n    \"            url = False\\n\",\n    \"            if \\\"url\\\" in b.keys():\\n\",\n    \"                if len(str(b[\\\"url\\\"])) > 5:\\n\",\n    \"                    md += \\\"\\\\npaperurl: '\\\" + b[\\\"url\\\"] + \\\"'\\\"\\n\",\n    \"                    url = True\\n\",\n    \"\\n\",\n    \"            md += \\\"\\\\ncitation: '\\\" + html_escape(citation) + \\\"'\\\"\\n\",\n    \"\\n\",\n    \"            md += \\\"\\\\n---\\\"\\n\",\n    \"\\n\",\n    \"            \\n\",\n    \"            ## Markdown description for individual page\\n\",\n    \"            if note:\\n\",\n    \"                md += \\\"\\\\n\\\" + html_escape(b[\\\"note\\\"]) + \\\"\\\\n\\\"\\n\",\n    \"\\n\",\n    \"            if url:\\n\",\n    \"                md += \\\"\\\\n[Access paper here](\\\" + b[\\\"url\\\"] + \\\"){:target=\\\\\\\"_blank\\\\\\\"}\\\\n\\\" \\n\",\n    \"            else:\\n\",\n    \"                md += \\\"\\\\nUse [Google Scholar](https://scholar.google.com/scholar?q=\\\"+html.escape(clean_title.replace(\\\"-\\\",\\\"+\\\"))+\\\"){:target=\\\\\\\"_blank\\\\\\\"} for full citation\\\"\\n\",\n    \"\\n\",\n    \"            md_filename = os.path.basename(md_filename)\\n\",\n    \"\\n\",\n    \"            with open(\\\"../_publications/\\\" + md_filename, 'w', encoding=\\\"utf-8\\\") as f:\\n\",\n    \"                f.write(md)\\n\",\n    \"            print(f'SUCESSFULLY PARSED {bib_id}: \\\\\\\"', b[\\\"title\\\"][:60],\\\"...\\\"*(len(b['title'])>60),\\\"\\\\\\\"\\\")\\n\",\n    \"        # field may not exist for a reference\\n\",\n    \"        except KeyError as e:\\n\",\n    \"            print(f'WARNING Missing Expected Field {e} from entry {bib_id}: \\\\\\\"', b[\\\"title\\\"][:30],\\\"...\\\"*(len(b['title'])>30),\\\"\\\\\\\"\\\")\\n\",\n    \"            continue\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}"
  },
  {
    "path": "markdown_generator/README.md",
    "content": "# Markdown Generator\n\nThis directory contains various ways of creating Markdown for your site. In general, filenames that end with `.ipynb` or `.py` are similar, but may contain different documentation or are intended to be run from with GitHub when deploying your site.\n\n## Python Scripts\n\nThe .py files are Python scripts that that can be run from the command line (ex., `python3 publications.py publications.csv`) with the objective of also ensuring that they have reduced requirements for packages, which may allow them to run when deploying your site from within GitHub.\n\n## Jupyter Notebooks\n\nThese .ipynb files are Jupyter notebook files that convert a TSV containing structured data about talks (`talks.tsv`) or presentations (`presentations.tsv`) into individual markdown files that will be properly formatted for the academicpages template. The notebooks contain a lot of documentation about the process.\n"
  },
  {
    "path": "markdown_generator/publications.csv",
    "content": "pub_date,title,venue,excerpt,citation,url_slug,paper_url,slides_url,category\n2009-10-01,Paper Title Number 1,Journal 1,This paper is about the number 1. The number 2 is left for future work.,\"Your Name, You. (2009). \"\"Paper Title Number 1.\"\" <i>Journal 1</i>. 1(1).\",paper-title-number-1,https://academicpages.github.io/files/paper1.pdf,http://academicpages.github.io/files/slides1.pdf,manuscripts\n2010-10-01,Paper Title Number 2,Journal 1,This paper is about the number 2. The number 3 is left for future work.,\"Your Name, You. (2010). \"\"Paper Title Number 2.\"\" <i>Journal 1</i>. 1(2).\",paper-title-number-2,https://academicpages.github.io/files/paper2.pdf,http://academicpages.github.io/files/slides2.pdf,manuscripts\n2015-10-01,Paper Title Number 3,Journal 1,This paper is about the number 3. The number 4 is left for future work.,\"Your Name, You. (2015). \"\"Paper Title Number 3.\"\" <i>Journal 1</i>. 1(3).\",paper-title-number-3,https://academicpages.github.io/files/paper3.pdf,http://academicpages.github.io/files/slides3.pdf,manuscripts\n"
  },
  {
    "path": "markdown_generator/publications.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"source\": [\n    \"# Publications markdown generator for academicpages\\n\",\n    \"\\n\",\n    \"Takes a TSV of publications with metadata and converts them for use with [academicpages.github.io](academicpages.github.io). This is an interactive Jupyter notebook ([see more info here](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html)). The core python code is also in `publications.py`. Run either from the `markdown_generator` folder after replacing `publications.tsv` with one containing your data.\\n\",\n    \"\\n\",\n    \"TODO: Make this work with BibTex and other databases of citations, rather than Stuart's non-standard TSV format and citation style.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Data format\\n\",\n    \"\\n\",\n    \"The TSV needs to have the following columns: pub_date, title, venue, excerpt, citation, site_url, and paper_url, with a header at the top. \\n\",\n    \"\\n\",\n    \"- `excerpt` and `paper_url` can be blank, but the others must have values. \\n\",\n    \"- `pub_date` must be formatted as YYYY-MM-DD.\\n\",\n    \"- `url_slug` will be the descriptive part of the .md file and the permalink URL for the page about the paper. The .md file will be `YYYY-MM-DD-[url_slug].md` and the permalink will be `https://[yourdomain]/publications/YYYY-MM-DD-[url_slug]`\\n\",\n    \"\\n\",\n    \"This is how the raw file looks (it doesn't look pretty, use a spreadsheet or other program to edit and create).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"pub_date\\ttitle\\tvenue\\texcerpt\\tcitation\\turl_slug\\tpaper_url\\tslides_url\\n\",\n      \"2009-10-01\\tPaper Title Number 1\\tJournal 1\\tThis paper is about the number 1. The number 2 is left for future work.\\tYour Name, You. (2009). \\\"Paper Title Number 1.\\\" <i>Journal 1</i>. 1(1).\\tpaper-title-number-1\\thttp://academicpages.github.io/files/paper1.pdf\\thttp://academicpages.github.io/files/slides1.pdf\\n\",\n      \"2010-10-01\\tPaper Title Number 2\\tJournal 1\\tThis paper is about the number 2. The number 3 is left for future work.\\tYour Name, You. (2010). \\\"Paper Title Number 2.\\\" <i>Journal 1</i>. 1(2).\\tpaper-title-number-2\\thttp://academicpages.github.io/files/paper2.pdf\\thttp://academicpages.github.io/files/slides2.pdf\\n\",\n      \"2015-10-01\\tPaper Title Number 3\\tJournal 1\\tThis paper is about the number 3. The number 4 is left for future work.\\tYour Name, You. (2015). \\\"Paper Title Number 3.\\\" <i>Journal 1</i>. 1(3).\\tpaper-title-number-3\\thttp://academicpages.github.io/files/paper3.pdf\\thttp://academicpages.github.io/files/slides3.pdf\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!cat publications.tsv\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Import pandas\\n\",\n    \"\\n\",\n    \"We are using the very handy pandas library for dataframes.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {\n    \"collapsed\": true,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import pandas as pd\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Import TSV\\n\",\n    \"\\n\",\n    \"Pandas makes this easy with the read_csv function. We are using a TSV, so we specify the separator as a tab, or `\\\\t`.\\n\",\n    \"\\n\",\n    \"I found it important to put this data in a tab-separated values format, because there are a lot of commas in this kind of data and comma-separated values can get messed up. However, you can modify the import statement, as pandas also has read_excel(), read_json(), and others.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>pub_date</th>\\n\",\n       \"      <th>title</th>\\n\",\n       \"      <th>venue</th>\\n\",\n       \"      <th>excerpt</th>\\n\",\n       \"      <th>citation</th>\\n\",\n       \"      <th>url_slug</th>\\n\",\n       \"      <th>paper_url</th>\\n\",\n       \"      <th>slides_url</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2009-10-01</td>\\n\",\n       \"      <td>Paper Title Number 1</td>\\n\",\n       \"      <td>Journal 1</td>\\n\",\n       \"      <td>This paper is about the number 1. The number 2...</td>\\n\",\n       \"      <td>Your Name, You. (2009). \\\"Paper Title Number 1....</td>\\n\",\n       \"      <td>paper-title-number-1</td>\\n\",\n       \"      <td>http://academicpages.github.io/files/paper1.pdf</td>\\n\",\n       \"      <td>http://academicpages.github.io/files/slides1.pdf</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2010-10-01</td>\\n\",\n       \"      <td>Paper Title Number 2</td>\\n\",\n       \"      <td>Journal 1</td>\\n\",\n       \"      <td>This paper is about the number 2. The number 3...</td>\\n\",\n       \"      <td>Your Name, You. (2010). \\\"Paper Title Number 2....</td>\\n\",\n       \"      <td>paper-title-number-2</td>\\n\",\n       \"      <td>http://academicpages.github.io/files/paper2.pdf</td>\\n\",\n       \"      <td>http://academicpages.github.io/files/slides2.pdf</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2015-10-01</td>\\n\",\n       \"      <td>Paper Title Number 3</td>\\n\",\n       \"      <td>Journal 1</td>\\n\",\n       \"      <td>This paper is about the number 3. The number 4...</td>\\n\",\n       \"      <td>Your Name, You. (2015). \\\"Paper Title Number 3....</td>\\n\",\n       \"      <td>paper-title-number-3</td>\\n\",\n       \"      <td>http://academicpages.github.io/files/paper3.pdf</td>\\n\",\n       \"      <td>http://academicpages.github.io/files/slides3.pdf</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"     pub_date                 title      venue  \\\\\\n\",\n       \"0  2009-10-01  Paper Title Number 1  Journal 1   \\n\",\n       \"1  2010-10-01  Paper Title Number 2  Journal 1   \\n\",\n       \"2  2015-10-01  Paper Title Number 3  Journal 1   \\n\",\n       \"\\n\",\n       \"                                             excerpt  \\\\\\n\",\n       \"0  This paper is about the number 1. The number 2...   \\n\",\n       \"1  This paper is about the number 2. The number 3...   \\n\",\n       \"2  This paper is about the number 3. The number 4...   \\n\",\n       \"\\n\",\n       \"                                            citation              url_slug  \\\\\\n\",\n       \"0  Your Name, You. (2009). \\\"Paper Title Number 1....  paper-title-number-1   \\n\",\n       \"1  Your Name, You. (2010). \\\"Paper Title Number 2....  paper-title-number-2   \\n\",\n       \"2  Your Name, You. (2015). \\\"Paper Title Number 3....  paper-title-number-3   \\n\",\n       \"\\n\",\n       \"                                         paper_url  \\\\\\n\",\n       \"0  http://academicpages.github.io/files/paper1.pdf   \\n\",\n       \"1  http://academicpages.github.io/files/paper2.pdf   \\n\",\n       \"2  http://academicpages.github.io/files/paper3.pdf   \\n\",\n       \"\\n\",\n       \"                                         slides_url  \\n\",\n       \"0  http://academicpages.github.io/files/slides1.pdf  \\n\",\n       \"1  http://academicpages.github.io/files/slides2.pdf  \\n\",\n       \"2  http://academicpages.github.io/files/slides3.pdf  \"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"publications = pd.read_csv(\\\"publications.tsv\\\", sep=\\\"\\\\t\\\", header=0)\\n\",\n    \"publications\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Escape special characters\\n\",\n    \"\\n\",\n    \"YAML is very picky about how it takes a valid string, so we are replacing single and double quotes (and ampersands) with their HTML encoded equivilents. This makes them look not so readable in raw format, but they are parsed and rendered nicely.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {\n    \"collapsed\": true,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"html_escape_table = {\\n\",\n    \"    \\\"&\\\": \\\"&amp;\\\",\\n\",\n    \"    '\\\"': \\\"&quot;\\\",\\n\",\n    \"    \\\"'\\\": \\\"&apos;\\\"\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"def html_escape(text):\\n\",\n    \"    \\\"\\\"\\\"Produce entities within text.\\\"\\\"\\\"\\n\",\n    \"    return \\\"\\\".join(html_escape_table.get(c,c) for c in text)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Creating the markdown files\\n\",\n    \"\\n\",\n    \"This is where the heavy lifting is done. This loops through all the rows in the TSV dataframe, then starts to concatentate a big string (```md```) that contains the markdown for each type. It does the YAML metadata first, then does the description for the individual page.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import os\\n\",\n    \"for row, item in publications.iterrows():\\n\",\n    \"    \\n\",\n    \"    md_filename = str(item.pub_date) + \\\"-\\\" + item.url_slug + \\\".md\\\"\\n\",\n    \"    html_filename = str(item.pub_date) + \\\"-\\\" + item.url_slug\\n\",\n    \"    year = item.pub_date[:4]\\n\",\n    \"    \\n\",\n    \"    ## YAML variables\\n\",\n    \"    \\n\",\n    \"    md = \\\"---\\\\ntitle: \\\\\\\"\\\"   + item.title + '\\\"\\\\n'\\n\",\n    \"    \\n\",\n    \"    md += \\\"\\\"\\\"collection: publications\\\"\\\"\\\"\\n\",\n    \"    \\n\",\n    \"    md += \\\"\\\"\\\"\\\\npermalink: /publication/\\\"\\\"\\\" + html_filename\\n\",\n    \"    \\n\",\n    \"    if len(str(item.excerpt)) > 5:\\n\",\n    \"        md += \\\"\\\\nexcerpt: '\\\" + html_escape(item.excerpt) + \\\"'\\\"\\n\",\n    \"    \\n\",\n    \"    md += \\\"\\\\ndate: \\\" + str(item.pub_date) \\n\",\n    \"    \\n\",\n    \"    md += \\\"\\\\nvenue: '\\\" + html_escape(item.venue) + \\\"'\\\"\\n\",\n    \"    \\n\",\n    \"    if len(str(item.slides_url)) > 5:\\n\",\n    \"        md += \\\"\\\\nslidesurl: '\\\" + item.slides_url + \\\"'\\\"\\n\",\n    \"\\n\",\n    \"    if len(str(item.paper_url)) > 5:\\n\",\n    \"        md += \\\"\\\\npaperurl: '\\\" + item.paper_url + \\\"'\\\"\\n\",\n    \"    \\n\",\n    \"    md += \\\"\\\\ncitation: '\\\" + html_escape(item.citation) + \\\"'\\\"\\n\",\n    \"    \\n\",\n    \"    md += \\\"\\\\n---\\\"\\n\",\n    \"    \\n\",\n    \"    ## Markdown description for individual page\\n\",\n    \"        \\n\",\n    \"    if len(str(item.excerpt)) > 5:\\n\",\n    \"        md += \\\"\\\\n\\\" + html_escape(item.excerpt) + \\\"\\\\n\\\"\\n\",\n    \"\\n\",\n    \"    if len(str(item.slides_url)) > 5:\\n\",\n    \"        md += \\\"\\\\n[Download slides here](\\\" + item.slides_url + \\\")\\\\n\\\" \\n\",\n    \"\\n\",\n    \"    if len(str(item.paper_url)) > 5:\\n\",\n    \"        md += \\\"\\\\n[Download paper here](\\\" + item.paper_url + \\\")\\\\n\\\" \\n\",\n    \"        \\n\",\n    \"    md += \\\"\\\\nRecommended citation: \\\" + item.citation\\n\",\n    \"    \\n\",\n    \"    md_filename = os.path.basename(md_filename)\\n\",\n    \"       \\n\",\n    \"    with open(\\\"../_publications/\\\" + md_filename, 'w') as f:\\n\",\n    \"        f.write(md)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"These files are in the publications directory, one directory below where we're working from.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"2009-10-01-paper-title-number-1.md  2015-10-01-paper-title-number-3.md\\n\",\n      \"2010-10-01-paper-title-number-2.md  2024-02-17-paper-title-number-4.md\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!ls ../_publications/\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"---\\n\",\n      \"title: \\\"Paper Title Number 1\\\"\\n\",\n      \"collection: publications\\n\",\n      \"permalink: /publication/2009-10-01-paper-title-number-1\\n\",\n      \"excerpt: 'This paper is about the number 1. The number 2 is left for future work.'\\n\",\n      \"date: 2009-10-01\\n\",\n      \"venue: 'Journal 1'\\n\",\n      \"slidesurl: 'http://academicpages.github.io/files/slides1.pdf'\\n\",\n      \"paperurl: 'http://academicpages.github.io/files/paper1.pdf'\\n\",\n      \"citation: 'Your Name, You. (2009). &quot;Paper Title Number 1.&quot; <i>Journal 1</i>. 1(1).'\\n\",\n      \"---\\n\",\n      \"This paper is about the number 1. The number 2 is left for future work.\\n\",\n      \"\\n\",\n      \"[Download slides here](http://academicpages.github.io/files/slides1.pdf)\\n\",\n      \"\\n\",\n      \"[Download paper here](http://academicpages.github.io/files/paper1.pdf)\\n\",\n      \"\\n\",\n      \"Recommended citation: Your Name, You. (2009). \\\"Paper Title Number 1.\\\" <i>Journal 1</i>. 1(1).\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!cat ../_publications/2009-10-01-paper-title-number-1.md\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "markdown_generator/publications.py",
    "content": "# Publications markdown generator for AcademicPages\n# \n# Takes a TSV / CSV of publications with metadata and converts them for use with [academicpages.github.io](academicpages.github.io). \n# Can be called via the command prompt by using `python3 publications.py [filename]`.\n\n# Data format\n# \n# The file needs to have the following columns as a header at the top:\n# pub_date, title, venue, excerpt, citation, url_slug, paper_url, slides_url\n# - `excerpt`, `paper_url`, and slides_url can be blank, but the others must have values. \n# - `pub_date` must be formatted as YYYY-MM-DD.\n# - `url_slug` will be the descriptive part of the .md file and the permalink URL for the page about the paper. \n#    The .md file will be `YYYY-MM-DD-[url_slug].md` and the permalink will be `https://[yourdomain]/publications/YYYY-MM-DD-[url_slug]`\nimport csv\nimport os\nimport sys\n\n# Flag to indicate an error occurred\nEXIT_ERROR = 0\n\n# The expected layout of the CSV / TSV file\nHEADER_LEGACY  = ['pub_date', 'title', 'venue', 'excerpt', 'citation', 'url_slug', 'paper_url', 'slides_url']\nHEADER_UPDATED = ['pub_date', 'title', 'venue', 'excerpt', 'citation', 'url_slug', 'paper_url', 'slides_url', 'category']\n\n# YAML is very picky about how it takes a valid string, so we are replacing single and double quotes (and ampersands)\n# with their HTML encoded equivalents. This makes them look not so readable in raw format, but they are parsed and\n# rendered nicely.\nHTML_ESCAPE_TABLE = {\n    \"&\": \"&amp;\",\n    '\"': \"&quot;\",\n    \"'\": \"&apos;\"\n    }\n\n# This is where the heavy lifting is done. This loops through all the rows in the TSV dataframe, then starts to\n# concatenate a big string (```md```) that contains the markdown for each type. It does the YAML metadata first, then\n# does the description for the individual page.\ndef create_md(lines: list, layout: list):\n    for item in lines:\n        # Parse the filename information\n        md_filename = f\"{item[layout.index('pub_date')]}-{item[layout.index('url_slug')]}.md\"\n        html_filename = str(item[layout.index('pub_date')]) + \"-\" + item[layout.index('url_slug')]\n        \n        # Parse the YAML variables\n        md = f\"---\\ntitle: \\\"{item[layout.index('title')]}\\\"\\n\"\n        md += \"collection: publications\"\n        if len(layout) == len(HEADER_UPDATED):\n            md += f\"\\ncategory: {item[layout.index('category')]}\"\n        else:\n            md += \"\\ncategory: manuscripts\"\n        md += f\"\\npermalink: /publication/{html_filename}\"\n        if len(str(item[layout.index('excerpt')])) > 5:\n            md += f\"\\nexcerpt: '{html_escape(item[layout.index('excerpt')])}'\"\n        md += f\"\\ndate: {item[layout.index('pub_date')]}\"\n        md += f\"\\nvenue: '{html_escape(item[layout.index('venue')])}'\"\n        if len(str(item[layout.index('paper_url')])) > 5:\n            md += f\"\\npaperurl: '{item[layout.index('paper_url')]}'\"\n        md += f\"\\ncitation: '{html_escape(item[layout.index('citation')])}'\"\n        md += \"\\n---\"\n        \n        # Markdown description for individual page\n        if len(str(item[layout.index('paper_url')])) > 5:\n            md += f\"\\n<a href='{item[layout.index('paper_url')]}'>Download paper here</a>\\n\"\n        if len(str(item[layout.index('excerpt')])) > 5:\n            md += f\"\\n{html_escape(item[layout.index('excerpt')])}\\n\"\n        md += f\"\\nRecommended citation: {item[layout.index('citation')]}\"\n        \n        # Write the file\n        md_filename = os.path.join(\"../_publications/\", os.path.basename(md_filename))\n        with open(md_filename, 'w') as f:\n            f.write(md)\n\ndef html_escape(text):\n    \"\"\"Produce entities within text.\"\"\"\n    return \"\".join(HTML_ESCAPE_TABLE.get(c,c) for c in text)\n\ndef read(filename: str) -> tuple[list, list]:\n    '''Read the contents of the file, check the header and return the parsed line along with the file type.'''\n\n    # Read the contents of the file\n    lines = []\n    with open(filename, 'r') as file:\n        delimiter = ',' if filename.endswith('.csv') else '\\t'\n        reader = csv.reader(file, delimiter=delimiter)\n        for row in reader:\n            lines.append(row)\n\n    # Verify the file format makes sense\n    if len(lines) <= 1:\n        print(f'Not enough lines in the file to process, found {len(lines)}', file=sys.stderr)\n        sys.exit(EXIT_ERROR)\n\n    # Verify the header, remove it once checked\n    layout = HEADER_UPDATED\n    if HEADER_LEGACY == lines[0]:\n        layout = HEADER_LEGACY\n    elif HEADER_UPDATED != lines[0]:\n        print(lines[0])\n        print('The header of the file does not match the expected format', file=sys.stderr)\n        sys.exit(EXIT_ERROR)\n    lines = lines[1:]\n    \n    # Return the lines and format\n    return lines, layout\n\nif __name__ == '__main__':\n    # Make sure a filename was given\n    if len(sys.argv) != 2:\n        print('Usage: python3 publications.py [filename]', file=sys.stderr)\n        sys.exit(EXIT_ERROR)\n\n    # Make sure the filename is TSV or CSV\n    filename = sys.argv[1]\n    if not (filename.endswith('.csv') or filename.endswith('.tsv')):\n        print(f'Expected a TSV or CSV file, got {filename}', file=sys.stderr)\n        sys.exit(EXIT_ERROR)    \n\n    # Read and process the lines\n    lines, layout = read(filename)\n    create_md(lines, layout)\n"
  },
  {
    "path": "markdown_generator/publications.tsv",
    "content": "pub_date\ttitle\tvenue\texcerpt\tcitation\turl_slug\tpaper_url\tslides_url\n2009-10-01\tPaper Title Number 1\tJournal 1\tThis paper is about the number 1. The number 2 is left for future work.\tYour Name, You. (2009). \"Paper Title Number 1.\" <i>Journal 1</i>. 1(1).\tpaper-title-number-1\thttps://academicpages.github.io/files/paper1.pdf\thttps://academicpages.github.io/files/slides1.pdf\n2010-10-01\tPaper Title Number 2\tJournal 1\tThis paper is about the number 2. The number 3 is left for future work.\tYour Name, You. (2010). \"Paper Title Number 2.\" <i>Journal 1</i>. 1(2).\tpaper-title-number-2\thttps://academicpages.github.io/files/paper2.pdf\thttps://academicpages.github.io/files/slides2.pdf\n2015-10-01\tPaper Title Number 3\tJournal 1\tThis paper is about the number 3. The number 4 is left for future work.\tYour Name, You. (2015). \"Paper Title Number 3.\" <i>Journal 1</i>. 1(3).\tpaper-title-number-3\thttps://academicpages.github.io/files/paper3.pdf\thttps://academicpages.github.io/files/slides3.pdf"
  },
  {
    "path": "markdown_generator/pubsFromBib.py",
    "content": "#!/usr/bin/env python\n# coding: utf-8\n\n# # Publications markdown generator for academicpages\n# \n# Takes a set of bibtex of publications and converts them for use with [academicpages.github.io](academicpages.github.io). This is an interactive Jupyter notebook ([see more info here](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html)). \n# \n# The core python code is also in `pubsFromBibs.py`. \n# Run either from the `markdown_generator` folder after replacing updating the publist dictionary with:\n# * bib file names\n# * specific venue keys based on your bib file preferences\n# * any specific pre-text for specific files\n# * Collection Name (future feature)\n# \n# TODO: Make this work with other databases of citations, \n# TODO: Merge this with the existing TSV parsing solution\n\n\nfrom pybtex.database.input import bibtex\nimport pybtex.database.input.bibtex \nfrom time import strptime\nimport string\nimport html\nimport os\nimport re\n\n#todo: incorporate different collection types rather than a catch all publications, requires other changes to template\npublist = {\n    \"proceeding\": {\n        \"file\" : \"proceedings.bib\",\n        \"venuekey\": \"booktitle\",\n        \"venue-pretext\": \"In the proceedings of \",\n        \"collection\" : {\"name\":\"publications\",\n                        \"permalink\":\"/publication/\"}\n        \n    },\n    \"journal\":{\n        \"file\": \"pubs.bib\",\n        \"venuekey\" : \"journal\",\n        \"venue-pretext\" : \"\",\n        \"collection\" : {\"name\":\"publications\",\n                        \"permalink\":\"/publication/\"}\n    } \n}\n\nhtml_escape_table = {\n    \"&\": \"&amp;\",\n    '\"': \"&quot;\",\n    \"'\": \"&apos;\"\n    }\n\ndef html_escape(text):\n    \"\"\"Produce entities within text.\"\"\"\n    return \"\".join(html_escape_table.get(c,c) for c in text)\n\n\nfor pubsource in publist:\n    parser = bibtex.Parser()\n    bibdata = parser.parse_file(publist[pubsource][\"file\"])\n\n    #loop through the individual references in a given bibtex file\n    for bib_id in bibdata.entries:\n        #reset default date\n        pub_year = \"1900\"\n        pub_month = \"01\"\n        pub_day = \"01\"\n        \n        b = bibdata.entries[bib_id].fields\n        \n        try:\n            pub_year = f'{b[\"year\"]}'\n\n            #todo: this hack for month and day needs some cleanup\n            if \"month\" in b.keys(): \n                if(len(b[\"month\"])<3):\n                    pub_month = \"0\"+b[\"month\"]\n                    pub_month = pub_month[-2:]\n                elif(b[\"month\"] not in range(12)):\n                    tmnth = strptime(b[\"month\"][:3],'%b').tm_mon   \n                    pub_month = \"{:02d}\".format(tmnth) \n                else:\n                    pub_month = str(b[\"month\"])\n            if \"day\" in b.keys(): \n                pub_day = str(b[\"day\"])\n\n                \n            pub_date = pub_year+\"-\"+pub_month+\"-\"+pub_day\n            \n            #strip out {} as needed (some bibtex entries that maintain formatting)\n            clean_title = b[\"title\"].replace(\"{\", \"\").replace(\"}\",\"\").replace(\"\\\\\",\"\").replace(\" \",\"-\")    \n\n            url_slug = re.sub(\"\\\\[.*\\\\]|[^a-zA-Z0-9_-]\", \"\", clean_title)\n            url_slug = url_slug.replace(\"--\",\"-\")\n\n            md_filename = (str(pub_date) + \"-\" + url_slug + \".md\").replace(\"--\",\"-\")\n            html_filename = (str(pub_date) + \"-\" + url_slug).replace(\"--\",\"-\")\n\n            #Build Citation from text\n            citation = \"\"\n\n            #citation authors - todo - add highlighting for primary author?\n            for author in bibdata.entries[bib_id].persons[\"author\"]:\n                citation = citation+\" \"+author.first_names[0]+\" \"+author.last_names[0]+\", \"\n\n            #citation title\n            citation = citation + \"\\\"\" + html_escape(b[\"title\"].replace(\"{\", \"\").replace(\"}\",\"\").replace(\"\\\\\",\"\")) + \".\\\"\"\n\n            #add venue logic depending on citation type\n            venue = publist[pubsource][\"venue-pretext\"]+b[publist[pubsource][\"venuekey\"]].replace(\"{\", \"\").replace(\"}\",\"\").replace(\"\\\\\",\"\")\n\n            citation = citation + \" \" + html_escape(venue)\n            citation = citation + \", \" + pub_year + \".\"\n\n            \n            ## YAML variables\n            md = \"---\\ntitle: \\\"\"   + html_escape(b[\"title\"].replace(\"{\", \"\").replace(\"}\",\"\").replace(\"\\\\\",\"\")) + '\"\\n'\n            \n            md += \"\"\"collection: \"\"\" +  publist[pubsource][\"collection\"][\"name\"]\n\n            md += \"\"\"\\npermalink: \"\"\" + publist[pubsource][\"collection\"][\"permalink\"]  + html_filename\n            \n            note = False\n            if \"note\" in b.keys():\n                if len(str(b[\"note\"])) > 5:\n                    md += \"\\nexcerpt: '\" + html_escape(b[\"note\"]) + \"'\"\n                    note = True\n\n            md += \"\\ndate: \" + str(pub_date) \n\n            md += \"\\nvenue: '\" + html_escape(venue) + \"'\"\n            \n            url = False\n            if \"url\" in b.keys():\n                if len(str(b[\"url\"])) > 5:\n                    md += \"\\npaperurl: '\" + b[\"url\"] + \"'\"\n                    url = True\n\n            md += \"\\ncitation: '\" + html_escape(citation) + \"'\"\n\n            md += \"\\n---\"\n\n            \n            ## Markdown description for individual page\n            if note:\n                md += \"\\n\" + html_escape(b[\"note\"]) + \"\\n\"\n\n            if url:\n                md += \"\\n[Access paper here](\" + b[\"url\"] + \"){:target=\\\"_blank\\\"}\\n\" \n            else:\n                md += \"\\nUse [Google Scholar](https://scholar.google.com/scholar?q=\"+html.escape(clean_title.replace(\"-\",\"+\"))+\"){:target=\\\"_blank\\\"} for full citation\"\n\n            md_filename = os.path.basename(md_filename)\n\n            with open(\"../_publications/\" + md_filename, 'w', encoding=\"utf-8\") as f:\n                f.write(md)\n            print(f'SUCCESSFULLY PARSED {bib_id}: \\\"', b[\"title\"][:60],\"...\"*(len(b['title'])>60),\"\\\"\")\n        # field may not exist for a reference\n        except KeyError as e:\n            print(f'WARNING Missing Expected Field {e} from entry {bib_id}: \\\"', b[\"title\"][:30],\"...\"*(len(b['title'])>30),\"\\\"\")\n            continue\n"
  },
  {
    "path": "markdown_generator/talks.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"source\": [\n    \"# Talks markdown generator for academicpages\\n\",\n    \"\\n\",\n    \"Takes a TSV of talks with metadata and converts them for use with [academicpages.github.io](academicpages.github.io). This is an interactive Jupyter notebook ([see more info here](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html)). The core python code is also in `talks.py`. Run either from the `markdown_generator` folder after replacing `talks.tsv` with one containing your data.\\n\",\n    \"\\n\",\n    \"TODO: Make this work with BibTex and other databases, rather than Stuart's non-standard TSV format and citation style.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import pandas as pd\\n\",\n    \"import os\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Data format\\n\",\n    \"\\n\",\n    \"The TSV needs to have the following columns: title, type, url_slug, venue, date, location, talk_url, description, with a header at the top. Many of these fields can be blank, but the columns must be in the TSV.\\n\",\n    \"\\n\",\n    \"- Fields that cannot be blank: `title`, `url_slug`, `date`. All else can be blank. `type` defaults to \\\"Talk\\\" \\n\",\n    \"- `date` must be formatted as YYYY-MM-DD.\\n\",\n    \"- `url_slug` will be the descriptive part of the .md file and the permalink URL for the page about the paper. \\n\",\n    \"    - The .md file will be `YYYY-MM-DD-[url_slug].md` and the permalink will be `https://[yourdomain]/talks/YYYY-MM-DD-[url_slug]`\\n\",\n    \"    - The combination of `url_slug` and `date` must be unique, as it will be the basis for your filenames\\n\",\n    \"\\n\",\n    \"This is how the raw file looks (it doesn't look pretty, use a spreadsheet or other program to edit and create).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"title\\ttype\\turl_slug\\tvenue\\tdate\\tlocation\\ttalk_url\\tdescription\\r\\n\",\n      \"Talk 1 on Relevant Topic in Your Field\\tTalk\\ttalk-1\\tUC San Francisco, Department of Testing\\t2012-03-01\\tSan Francisco, California\\t\\tThis is a description of your talk, which is a markdown files that can be all markdown-ified like any other post. Yay markdown!\\r\\n\",\n      \"Tutorial 1 on Relevant Topic in Your Field\\tTutorial\\ttutorial-1\\tUC-Berkeley Institute for Testing Science\\t2013-03-01\\tBerkeley CA, USA\\thttp://exampleurl.com\\tThis is a description of your tutorial, note the different field in type. This is a markdown files that can be all markdown-ified like any other post. Yay markdown!\\r\\n\",\n      \"Talk 2 on Relevant Topic in Your Field\\tTalk\\ttalk-2\\tLondon School of Testing\\t2014-02-01\\tLondon, UK\\thttp://example2.com\\tThis is a description of your talk, which is a markdown files that can be all markdown-ified like any other post. Yay markdown!\\r\\n\",\n      \"Conference Proceeding talk 3 on Relevant Topic in Your Field\\tConference proceedings talk\\ttalk-3\\tTesting Institute of America 2014 Annual Conference\\t2014-03-01\\tLos Angeles, CA\\t\\tThis is a description of your conference proceedings talk, note the different field in type. You can put anything in this field.\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!cat talks.tsv\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Import TSV\\n\",\n    \"\\n\",\n    \"Pandas makes this easy with the read_csv function. We are using a TSV, so we specify the separator as a tab, or `\\\\t`.\\n\",\n    \"\\n\",\n    \"I found it important to put this data in a tab-separated values format, because there are a lot of commas in this kind of data and comma-separated values can get messed up. However, you can modify the import statement, as pandas also has read_excel(), read_json(), and others.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>title</th>\\n\",\n       \"      <th>type</th>\\n\",\n       \"      <th>url_slug</th>\\n\",\n       \"      <th>venue</th>\\n\",\n       \"      <th>date</th>\\n\",\n       \"      <th>location</th>\\n\",\n       \"      <th>talk_url</th>\\n\",\n       \"      <th>description</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>Talk 1 on Relevant Topic in Your Field</td>\\n\",\n       \"      <td>Talk</td>\\n\",\n       \"      <td>talk-1</td>\\n\",\n       \"      <td>UC San Francisco, Department of Testing</td>\\n\",\n       \"      <td>2012-03-01</td>\\n\",\n       \"      <td>San Francisco, California</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>This is a description of your talk, which is a...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>Tutorial 1 on Relevant Topic in Your Field</td>\\n\",\n       \"      <td>Tutorial</td>\\n\",\n       \"      <td>tutorial-1</td>\\n\",\n       \"      <td>UC-Berkeley Institute for Testing Science</td>\\n\",\n       \"      <td>2013-03-01</td>\\n\",\n       \"      <td>Berkeley CA, USA</td>\\n\",\n       \"      <td>http://exampleurl.com</td>\\n\",\n       \"      <td>This is a description of your tutorial, note t...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>Talk 2 on Relevant Topic in Your Field</td>\\n\",\n       \"      <td>Talk</td>\\n\",\n       \"      <td>talk-2</td>\\n\",\n       \"      <td>London School of Testing</td>\\n\",\n       \"      <td>2014-02-01</td>\\n\",\n       \"      <td>London, UK</td>\\n\",\n       \"      <td>http://example2.com</td>\\n\",\n       \"      <td>This is a description of your talk, which is a...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>Conference Proceeding talk 3 on Relevant Topic...</td>\\n\",\n       \"      <td>Conference proceedings talk</td>\\n\",\n       \"      <td>talk-3</td>\\n\",\n       \"      <td>Testing Institute of America 2014 Annual Confe...</td>\\n\",\n       \"      <td>2014-03-01</td>\\n\",\n       \"      <td>Los Angeles, CA</td>\\n\",\n       \"      <td>NaN</td>\\n\",\n       \"      <td>This is a description of your conference proce...</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                               title  \\\\\\n\",\n       \"0             Talk 1 on Relevant Topic in Your Field   \\n\",\n       \"1         Tutorial 1 on Relevant Topic in Your Field   \\n\",\n       \"2             Talk 2 on Relevant Topic in Your Field   \\n\",\n       \"3  Conference Proceeding talk 3 on Relevant Topic...   \\n\",\n       \"\\n\",\n       \"                          type    url_slug  \\\\\\n\",\n       \"0                         Talk      talk-1   \\n\",\n       \"1                     Tutorial  tutorial-1   \\n\",\n       \"2                         Talk      talk-2   \\n\",\n       \"3  Conference proceedings talk      talk-3   \\n\",\n       \"\\n\",\n       \"                                               venue        date  \\\\\\n\",\n       \"0            UC San Francisco, Department of Testing  2012-03-01   \\n\",\n       \"1          UC-Berkeley Institute for Testing Science  2013-03-01   \\n\",\n       \"2                           London School of Testing  2014-02-01   \\n\",\n       \"3  Testing Institute of America 2014 Annual Confe...  2014-03-01   \\n\",\n       \"\\n\",\n       \"                    location               talk_url  \\\\\\n\",\n       \"0  San Francisco, California                    NaN   \\n\",\n       \"1           Berkeley CA, USA  http://exampleurl.com   \\n\",\n       \"2                 London, UK    http://example2.com   \\n\",\n       \"3            Los Angeles, CA                    NaN   \\n\",\n       \"\\n\",\n       \"                                         description  \\n\",\n       \"0  This is a description of your talk, which is a...  \\n\",\n       \"1  This is a description of your tutorial, note t...  \\n\",\n       \"2  This is a description of your talk, which is a...  \\n\",\n       \"3  This is a description of your conference proce...  \"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"talks = pd.read_csv(\\\"talks.tsv\\\", sep=\\\"\\\\t\\\", header=0)\\n\",\n    \"talks\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Escape special characters\\n\",\n    \"\\n\",\n    \"YAML is very picky about how it takes a valid string, so we are replacing single and double quotes (and ampersands) with their HTML encoded equivilents. This makes them look not so readable in raw format, but they are parsed and rendered nicely.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"html_escape_table = {\\n\",\n    \"    \\\"&\\\": \\\"&amp;\\\",\\n\",\n    \"    '\\\"': \\\"&quot;\\\",\\n\",\n    \"    \\\"'\\\": \\\"&apos;\\\"\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"def html_escape(text):\\n\",\n    \"    if type(text) is str:\\n\",\n    \"        return \\\"\\\".join(html_escape_table.get(c,c) for c in text)\\n\",\n    \"    else:\\n\",\n    \"        return \\\"False\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Creating the markdown files\\n\",\n    \"\\n\",\n    \"This is where the heavy lifting is done. This loops through all the rows in the TSV dataframe, then starts to concatentate a big string (```md```) that contains the markdown for each type. It does the YAML metadata first, then does the description for the individual page.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"loc_dict = {}\\n\",\n    \"\\n\",\n    \"for row, item in talks.iterrows():\\n\",\n    \"    \\n\",\n    \"    md_filename = str(item.date) + \\\"-\\\" + item.url_slug + \\\".md\\\"\\n\",\n    \"    html_filename = str(item.date) + \\\"-\\\" + item.url_slug \\n\",\n    \"    year = item.date[:4]\\n\",\n    \"    \\n\",\n    \"    md = \\\"---\\\\ntitle: \\\\\\\"\\\"   + item.title + '\\\"\\\\n'\\n\",\n    \"    md += \\\"collection: talks\\\" + \\\"\\\\n\\\"\\n\",\n    \"    \\n\",\n    \"    if len(str(item.type)) > 3:\\n\",\n    \"        md += 'type: \\\"' + item.type + '\\\"\\\\n'\\n\",\n    \"    else:\\n\",\n    \"        md += 'type: \\\"Talk\\\"\\\\n'\\n\",\n    \"    \\n\",\n    \"    md += \\\"permalink: /talks/\\\" + html_filename + \\\"\\\\n\\\"\\n\",\n    \"    \\n\",\n    \"    if len(str(item.venue)) > 3:\\n\",\n    \"        md += 'venue: \\\"' + item.venue + '\\\"\\\\n'\\n\",\n    \"        \\n\",\n    \"    if len(str(item.location)) > 3:\\n\",\n    \"        md += \\\"date: \\\" + str(item.date) + \\\"\\\\n\\\"\\n\",\n    \"    \\n\",\n    \"    if len(str(item.location)) > 3:\\n\",\n    \"        md += 'location: \\\"' + str(item.location) + '\\\"\\\\n'\\n\",\n    \"           \\n\",\n    \"    md += \\\"---\\\\n\\\"\\n\",\n    \"    \\n\",\n    \"    \\n\",\n    \"    if len(str(item.talk_url)) > 3:\\n\",\n    \"        md += \\\"\\\\n[More information here](\\\" + item.talk_url + \\\")\\\\n\\\" \\n\",\n    \"        \\n\",\n    \"    \\n\",\n    \"    if len(str(item.description)) > 3:\\n\",\n    \"        md += \\\"\\\\n\\\" + html_escape(item.description) + \\\"\\\\n\\\"\\n\",\n    \"        \\n\",\n    \"        \\n\",\n    \"    md_filename = os.path.basename(md_filename)\\n\",\n    \"    #print(md)\\n\",\n    \"    \\n\",\n    \"    with open(\\\"../_talks/\\\" + md_filename, 'w') as f:\\n\",\n    \"        f.write(md)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"These files are in the talks directory, one directory below where we're working from.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"2012-03-01-talk-1.md\\t  2014-02-01-talk-2.md\\r\\n\",\n      \"2013-03-01-tutorial-1.md  2014-03-01-talk-3.md\\r\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!ls ../_talks\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"deletable\": true,\n    \"editable\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"---\\r\\n\",\n      \"title: \\\"Tutorial 1 on Relevant Topic in Your Field\\\"\\r\\n\",\n      \"collection: talks\\r\\n\",\n      \"type: \\\"Tutorial\\\"\\r\\n\",\n      \"permalink: /talks/2013-03-01-tutorial-1\\r\\n\",\n      \"venue: \\\"UC-Berkeley Institute for Testing Science\\\"\\r\\n\",\n      \"date: 2013-03-01\\r\\n\",\n      \"location: \\\"Berkeley CA, USA\\\"\\r\\n\",\n      \"---\\r\\n\",\n      \"\\r\\n\",\n      \"[More information here](http://exampleurl.com)\\r\\n\",\n      \"\\r\\n\",\n      \"This is a description of your tutorial, note the different field in type. This is a markdown files that can be all markdown-ified like any other post. Yay markdown!\\r\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!cat ../_talks/2013-03-01-tutorial-1.md\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "markdown_generator/talks.py",
    "content": "\n# coding: utf-8\n\n# # Talks markdown generator for academicpages\n# \n# Takes a TSV of talks with metadata and converts them for use with [academicpages.github.io](academicpages.github.io). This is an interactive Jupyter notebook ([see more info here](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html)). The core python code is also in `talks.py`. Run either from the `markdown_generator` folder after replacing `talks.tsv` with one containing your data.\n# \n# TODO: Make this work with BibTex and other databases, rather than Stuart's non-standard TSV format and citation style.\n\n# In[1]:\n\nimport pandas as pd\nimport os\n\n\n# ## Data format\n# \n# The TSV needs to have the following columns: title, type, url_slug, venue, date, location, talk_url, description, with a header at the top. Many of these fields can be blank, but the columns must be in the TSV.\n# \n# - Fields that cannot be blank: `title`, `url_slug`, `date`. All else can be blank. `type` defaults to \"Talk\" \n# - `date` must be formatted as YYYY-MM-DD.\n# - `url_slug` will be the descriptive part of the .md file and the permalink URL for the page about the paper. \n#     - The .md file will be `YYYY-MM-DD-[url_slug].md` and the permalink will be `https://[yourdomain]/talks/YYYY-MM-DD-[url_slug]`\n#     - The combination of `url_slug` and `date` must be unique, as it will be the basis for your filenames\n# \n\n\n# ## Import TSV\n# \n# Pandas makes this easy with the read_csv function. We are using a TSV, so we specify the separator as a tab, or `\\t`.\n# \n# I found it important to put this data in a tab-separated values format, because there are a lot of commas in this kind of data and comma-separated values can get messed up. However, you can modify the import statement, as pandas also has read_excel(), read_json(), and others.\n\n# In[3]:\n\ntalks = pd.read_csv(\"talks.tsv\", sep=\"\\t\", header=0)\ntalks\n\n\n# ## Escape special characters\n# \n# YAML is very picky about how it takes a valid string, so we are replacing single and double quotes (and ampersands) with their HTML encoded equivilents. This makes them look not so readable in raw format, but they are parsed and rendered nicely.\n\n# In[4]:\n\nhtml_escape_table = {\n    \"&\": \"&amp;\",\n    '\"': \"&quot;\",\n    \"'\": \"&apos;\"\n    }\n\ndef html_escape(text):\n    if type(text) is str:\n        return \"\".join(html_escape_table.get(c,c) for c in text)\n    else:\n        return \"False\"\n\n\n# ## Creating the markdown files\n# \n# This is where the heavy lifting is done. This loops through all the rows in the TSV dataframe, then starts to concatentate a big string (```md```) that contains the markdown for each type. It does the YAML metadata first, then does the description for the individual page.\n\n# In[5]:\n\nloc_dict = {}\n\nfor row, item in talks.iterrows():\n    \n    md_filename = str(item.date) + \"-\" + item.url_slug + \".md\"\n    html_filename = str(item.date) + \"-\" + item.url_slug \n    year = item.date[:4]\n    \n    md = \"---\\ntitle: \\\"\"   + item.title + '\"\\n'\n    md += \"collection: talks\" + \"\\n\"\n    \n    if len(str(item.type)) > 3:\n        md += 'type: \"' + item.type + '\"\\n'\n    else:\n        md += 'type: \"Talk\"\\n'\n    \n    md += \"permalink: /talks/\" + html_filename + \"\\n\"\n    \n    if len(str(item.venue)) > 3:\n        md += 'venue: \"' + item.venue + '\"\\n'\n        \n    if len(str(item.date)) > 3:\n        md += \"date: \" + str(item.date) + \"\\n\"\n    \n    if len(str(item.location)) > 3:\n        md += 'location: \"' + str(item.location) + '\"\\n'\n           \n    md += \"---\\n\"\n    \n    \n    if len(str(item.talk_url)) > 3:\n        md += \"\\n[More information here](\" + item.talk_url + \")\\n\" \n        \n    \n    if len(str(item.description)) > 3:\n        md += \"\\n\" + html_escape(item.description) + \"\\n\"\n        \n        \n    md_filename = os.path.basename(md_filename)\n    #print(md)\n    \n    with open(\"../_talks/\" + md_filename, 'w') as f:\n        f.write(md)\n\n\n# These files are in the talks directory, one directory below where we're working from.\n\n"
  },
  {
    "path": "markdown_generator/talks.tsv",
    "content": "title\ttype\turl_slug\tvenue\tdate\tlocation\ttalk_url\tdescription\nTalk 1 on Relevant Topic in Your Field\tTalk\ttalk-1\tUC San Francisco, Department of Testing\t2012-03-01\tSan Francisco, California\t\tThis is a description of your talk, which is a markdown files that can be all markdown-ified like any other post. Yay markdown!\nTutorial 1 on Relevant Topic in Your Field\tTutorial\ttutorial-1\tUC-Berkeley Institute for Testing Science\t2013-03-01\tBerkeley CA, USA\thttp://exampleurl.com\tThis is a description of your tutorial, note the different field in type. This is a markdown files that can be all markdown-ified like any other post. Yay markdown!\nTalk 2 on Relevant Topic in Your Field\tTalk\ttalk-2\tLondon School of Testing\t2014-02-01\tLondon, UK\thttp://example2.com\tThis is a description of your talk, which is a markdown files that can be all markdown-ified like any other post. Yay markdown!\nConference Proceeding talk 3 on Relevant Topic in Your Field\tConference proceedings talk\ttalk-3\tTesting Institute of America 2014 Annual Conference\t2014-03-01\tLos Angeles, CA\t\tThis is a description of your conference proceedings talk, note the different field in type. You can put anything in this field."
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"academic-pages\",\n  \"version\": \"0.8.1.1\",\n  \"description\": \"Academic Pages Mistakes Jekyll theme npm build scripts\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/academicpages/academicpages.github.io\"\n  },\n  \"keywords\": [\n    \"jekyll\",\n    \"theme\",\n    \"minimal\"\n  ],\n  \"contributors\": [\n    \"Michael Rose\",\n    \"Robert Zupko\"\n  ],\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/academicpages/academicpages.github.io/issues\"\n  },\n  \"homepage\": \"https://github.com/academicpages/academicpages.github.io\",\n  \"engines\": {\n    \"node\": \">= 0.10.0\"\n  },\n  \"dependencies\": {\n    \"fitvids\": \"^2.1.1\",\n    \"jquery\": \"^3.7.1\",\n    \"jquery-smooth-scroll\": \"^2.2.0\",\n    \"plotly.js-dist-min\": \"^3.3.0\"\n  },\n  \"devDependencies\": {\n    \"onchange\": \"^7.1.0\",\n    \"uglify-js\": \"^3.17.4\"\n  },\n  \"scripts\": {\n    \"uglify\": \"uglifyjs node_modules/jquery/dist/jquery.min.js node_modules/fitvids/dist/fitvids.min.js node_modules/jquery-smooth-scroll/jquery.smooth-scroll.min.js node_modules/plotly.js-dist-min/plotly.min.js assets/js/plugins/jquery.greedy-navigation.js assets/js/_main.js -c -m -o assets/js/main.min.js\",\n    \"watch:js\": \"onchange \\\"assets/js/**/*.js\\\" -e \\\"assets/js/main.min.js\\\" -- npm run build:js\",\n    \"build:js\": \"npm run uglify\"\n  }\n}\n"
  },
  {
    "path": "scripts/cv_markdown_to_json.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\nScript to convert markdown CV to JSON format\nAuthor: Yuan Chen\n\"\"\"\n\nimport os\nimport re\nimport json\nimport yaml\nimport argparse\nfrom datetime import datetime, date\nfrom pathlib import Path\nimport glob\n\n# Custom JSON encoder to handle date objects\nclass DateTimeEncoder(json.JSONEncoder):\n    def default(self, obj):\n        if isinstance(obj, (datetime, date)):\n            return obj.isoformat()\n        return super().default(obj)\n\ndef parse_markdown_cv(md_file):\n    \"\"\"Parse the markdown CV file and extract sections.\"\"\"\n    with open(md_file, 'r', encoding='utf-8') as file:\n        content = file.read()\n    \n    # Remove YAML front matter\n    content = re.sub(r'^---.*?---\\s*', '', content, flags=re.DOTALL)\n    \n    # Extract sections\n    sections = {}\n    current_section = None\n    section_content = []\n    \n    for line in content.split('\\n'):\n        if re.match(r'^=+$', line):\n            continue\n        \n        section_match = re.match(r'^([A-Za-z\\s]+)$', line.strip())\n        if section_match and len(line.strip()) > 0:\n            if current_section:\n                sections[current_section] = '\\n'.join(section_content).strip()\n                section_content = []\n            current_section = section_match.group(1).strip()\n        elif current_section:\n            section_content.append(line)\n    \n    # Add the last section\n    if current_section and section_content:\n        sections[current_section] = '\\n'.join(section_content).strip()\n    \n    return sections\n\ndef parse_config(config_file):\n    \"\"\"Parse the Jekyll _config.yml file for additional information.\"\"\"\n    if not os.path.exists(config_file):\n        return {}\n    \n    with open(config_file, 'r', encoding='utf-8') as file:\n        config = yaml.safe_load(file)\n    \n    return config\n\ndef extract_author_info(config):\n    \"\"\"Extract author information from the config file.\"\"\"\n    author_info = {\n        \"name\": config.get('name', ''),\n        \"email\": \"\",\n        \"phone\": \"\",\n        \"website\": config.get('url', ''),\n        \"summary\": \"\",\n        \"location\": {\n            \"address\": \"\",\n            \"postalCode\": \"\",\n            \"city\": \"\",\n            \"countryCode\": \"US\",\n            \"region\": \"\"\n        },\n        \"profiles\": []\n    }\n    \n    # Extract author details if available\n    if 'author' in config:\n        author = config.get('author', {})\n        \n        # Override name if author name is available\n        if author.get('name'):\n            author_info['name'] = author.get('name')\n        \n        # Add email\n        if author.get('email'):\n            author_info['email'] = author.get('email')\n        \n        # Add location\n        if author.get('location'):\n            author_info['location']['city'] = author.get('location', '')\n        \n        # Add employer as part of summary\n        if author.get('employer'):\n            author_info['summary'] = f\"Currently employed at {author.get('employer')}\"\n        \n        # Add bio to summary if available\n        if author.get('bio'):\n            if author_info['summary']:\n                author_info['summary'] += f\". {author.get('bio')}\"\n            else:\n                author_info['summary'] = author.get('bio')\n        \n        # Add social profiles\n        profiles = []\n        \n        # Academic profiles\n        if author.get('googlescholar'):\n            profiles.append({\n                \"network\": \"Google Scholar\",\n                \"username\": \"\",\n                \"url\": author.get('googlescholar')\n            })\n        \n        if author.get('orcid'):\n            profiles.append({\n                \"network\": \"ORCID\",\n                \"username\": \"\",\n                \"url\": author.get('orcid')\n            })\n        \n        if author.get('researchgate'):\n            profiles.append({\n                \"network\": \"ResearchGate\",\n                \"username\": \"\",\n                \"url\": author.get('researchgate')\n            })\n        \n        # Social media profiles\n        if author.get('github'):\n            profiles.append({\n                \"network\": \"GitHub\",\n                \"username\": author.get('github'),\n                \"url\": f\"https://github.com/{author.get('github')}\"\n            })\n        \n        if author.get('linkedin'):\n            profiles.append({\n                \"network\": \"LinkedIn\",\n                \"username\": author.get('linkedin'),\n                \"url\": f\"https://www.linkedin.com/in/{author.get('linkedin')}\"\n            })\n        \n        if author.get('twitter'):\n            profiles.append({\n                \"network\": \"Twitter\",\n                \"username\": author.get('twitter'),\n                \"url\": f\"https://twitter.com/{author.get('twitter')}\"\n            })\n        \n        author_info['profiles'] = profiles\n    \n    return author_info\n\ndef parse_education(education_text):\n    \"\"\"Parse education section from markdown.\"\"\"\n    education_entries = []\n    \n    # Extract education entries\n    entries = re.findall(r'\\* (.*?)(?=\\n\\*|\\Z)', education_text, re.DOTALL)\n    \n    for entry in entries:\n        # Parse degree, institution, and year\n        match = re.match(r'([^,]+), ([^,]+), (\\d{4})(.*)', entry.strip())\n        if match:\n            degree, institution, year, additional = match.groups()\n            \n            # Extract GPA if available\n            gpa_match = re.search(r'GPA: ([\\d\\.]+)', additional)\n            gpa = gpa_match.group(1) if gpa_match else None\n            \n            education_entries.append({\n                \"institution\": institution.strip(),\n                \"area\": degree.strip(),\n                \"studyType\": \"\",\n                \"startDate\": \"\",\n                \"endDate\": year.strip(),\n                \"gpa\": gpa,\n                \"courses\": []\n            })\n    \n    return education_entries\n\ndef parse_work_experience(work_text):\n    \"\"\"Parse work experience section from markdown.\"\"\"\n    work_entries = []\n    \n    # Extract work entries\n    entries = re.findall(r'\\* (.*?)(?=\\n\\*|\\Z)', work_text, re.DOTALL)\n    \n    for entry in entries:\n        lines = entry.strip().split('\\n')\n        if not lines:\n            continue\n            \n        # Parse position and company\n        first_line = lines[0].strip()\n        position_match = re.match(r'(.*?), (.*?)(?:, |$)', first_line)\n        \n        if position_match:\n            position, company = position_match.groups()\n            \n            # Extract dates if available\n            date_match = re.search(r'(\\d{4})\\s*-\\s*(\\d{4}|present)', entry, re.IGNORECASE)\n            start_date = date_match.group(1) if date_match else \"\"\n            end_date = date_match.group(2) if date_match else \"\"\n            \n            # Extract highlights\n            highlights = []\n            for line in lines[1:]:\n                if line.strip().startswith('*') or line.strip().startswith('-'):\n                    highlights.append(line.strip()[1:].strip())\n            \n            work_entries.append({\n                \"company\": company.strip(),\n                \"position\": position.strip(),\n                \"website\": \"\",\n                \"startDate\": start_date,\n                \"endDate\": end_date,\n                \"summary\": \"\",\n                \"highlights\": highlights\n            })\n    \n    return work_entries\n\ndef parse_skills(skills_text):\n    \"\"\"Parse skills section from markdown.\"\"\"\n    skills_entries = []\n    \n    # Extract skill categories\n    categories = re.findall(r'(?:^|\\n)(\\w+.*?):\\s*(.*?)(?=\\n\\w+.*?:|\\Z)', skills_text, re.DOTALL)\n    \n    for category, skills in categories:\n        # Extract individual skills\n        skill_list = [s.strip() for s in re.split(r',|\\n', skills) if s.strip()]\n        \n        skills_entries.append({\n            \"name\": category.strip(),\n            \"level\": \"\",\n            \"keywords\": skill_list\n        })\n    \n    return skills_entries\n\ndef parse_publications(pub_dir):\n    \"\"\"Parse publications from the _publications directory.\"\"\"\n    publications = []\n    \n    if not os.path.exists(pub_dir):\n        return publications\n    \n    for pub_file in sorted(glob.glob(os.path.join(pub_dir, \"*.md\"))):\n        with open(pub_file, 'r', encoding='utf-8') as file:\n            content = file.read()\n        \n        # Extract front matter\n        front_matter_match = re.match(r'^---\\s*(.*?)\\s*---', content, re.DOTALL)\n        if front_matter_match:\n            front_matter = yaml.safe_load(front_matter_match.group(1))\n            \n            # Extract publication details\n            pub_entry = {\n                \"name\": front_matter.get('title', ''),\n                \"publisher\": front_matter.get('venue', ''),\n                \"releaseDate\": front_matter.get('date', ''),\n                \"website\": front_matter.get('paperurl', ''),\n                \"summary\": front_matter.get('excerpt', '')\n            }\n            \n            publications.append(pub_entry)\n    \n    return publications\n\ndef parse_talks(talks_dir):\n    \"\"\"Parse talks from the _talks directory.\"\"\"\n    talks = []\n    \n    if not os.path.exists(talks_dir):\n        return talks\n    \n    for talk_file in sorted(glob.glob(os.path.join(talks_dir, \"*.md\"))):\n        with open(talk_file, 'r', encoding='utf-8') as file:\n            content = file.read()\n        \n        # Extract front matter\n        front_matter_match = re.match(r'^---\\s*(.*?)\\s*---', content, re.DOTALL)\n        if front_matter_match:\n            front_matter = yaml.safe_load(front_matter_match.group(1))\n            \n            # Extract talk details\n            talk_entry = {\n                \"name\": front_matter.get('title', ''),\n                \"event\": front_matter.get('venue', ''),\n                \"date\": front_matter.get('date', ''),\n                \"location\": front_matter.get('location', ''),\n                \"description\": front_matter.get('excerpt', '')\n            }\n            \n            talks.append(talk_entry)\n    \n    return talks\n\ndef parse_teaching(teaching_dir):\n    \"\"\"Parse teaching from the _teaching directory.\"\"\"\n    teaching = []\n    \n    if not os.path.exists(teaching_dir):\n        return teaching\n    \n    for teaching_file in sorted(glob.glob(os.path.join(teaching_dir, \"*.md\"))):\n        with open(teaching_file, 'r', encoding='utf-8') as file:\n            content = file.read()\n        \n        # Extract front matter\n        front_matter_match = re.match(r'^---\\s*(.*?)\\s*---', content, re.DOTALL)\n        if front_matter_match:\n            front_matter = yaml.safe_load(front_matter_match.group(1))\n            \n            # Extract teaching details\n            teaching_entry = {\n                \"course\": front_matter.get('title', ''),\n                \"institution\": front_matter.get('venue', ''),\n                \"date\": front_matter.get('date', ''),\n                \"role\": front_matter.get('type', ''),\n                \"description\": front_matter.get('excerpt', '')\n            }\n            \n            teaching.append(teaching_entry)\n    \n    return teaching\n\ndef parse_portfolio(portfolio_dir):\n    \"\"\"Parse portfolio items from the _portfolio directory.\"\"\"\n    portfolio = []\n    \n    if not os.path.exists(portfolio_dir):\n        return portfolio\n    \n    for portfolio_file in sorted(glob.glob(os.path.join(portfolio_dir, \"*.md\"))):\n        with open(portfolio_file, 'r', encoding='utf-8') as file:\n            content = file.read()\n        \n        # Extract front matter\n        front_matter_match = re.match(r'^---\\s*(.*?)\\s*---', content, re.DOTALL)\n        if front_matter_match:\n            front_matter = yaml.safe_load(front_matter_match.group(1))\n            \n            # Extract portfolio details\n            portfolio_entry = {\n                \"name\": front_matter.get('title', ''),\n                \"category\": front_matter.get('collection', 'portfolio'),\n                \"date\": front_matter.get('date', ''),\n                \"url\": front_matter.get('permalink', ''),\n                \"description\": front_matter.get('excerpt', '')\n            }\n            \n            portfolio.append(portfolio_entry)\n    \n    return portfolio\n\ndef create_cv_json(md_file, config_file, repo_root, output_file):\n    \"\"\"Create a JSON CV from markdown and other repository data.\"\"\"\n    # Parse the markdown CV\n    sections = parse_markdown_cv(md_file)\n    \n    # Parse config file\n    config = parse_config(config_file)\n    \n    # Extract author information\n    author_info = extract_author_info(config)\n    \n    # Create the JSON structure\n    cv_json = {\n        \"basics\": author_info,\n        \"work\": parse_work_experience(sections.get('Work experience', '')),\n        \"education\": parse_education(sections.get('Education', '')),\n        \"skills\": parse_skills(sections.get('Skills', '')),\n        \"languages\": [],\n        \"interests\": [],\n        \"references\": []\n    }\n    \n    # Add publications\n    cv_json[\"publications\"] = parse_publications(os.path.join(repo_root, \"_publications\"))\n    \n    # Add talks\n    cv_json[\"presentations\"] = parse_talks(os.path.join(repo_root, \"_talks\"))\n    \n    # Add teaching\n    cv_json[\"teaching\"] = parse_teaching(os.path.join(repo_root, \"_teaching\"))\n    \n    # Add portfolio\n    cv_json[\"portfolio\"] = parse_portfolio(os.path.join(repo_root, \"_portfolio\"))\n    \n    # Extract languages and interests from config if available\n    if 'languages' in config:\n        cv_json[\"languages\"] = config.get('languages', [])\n    \n    if 'interests' in config:\n        cv_json[\"interests\"] = config.get('interests', [])\n    \n    # Write the JSON to a file\n    with open(output_file, 'w', encoding='utf-8') as file:\n        json.dump(cv_json, file, indent=2, cls=DateTimeEncoder)\n    \n    print(f\"Successfully converted {md_file} to {output_file}\")\n\ndef main():\n    \"\"\"Main function to parse arguments and run the conversion.\"\"\"\n    parser = argparse.ArgumentParser(description='Convert markdown CV to JSON format')\n    parser.add_argument('--input', '-i', required=True, help='Input markdown CV file')\n    parser.add_argument('--output', '-o', required=True, help='Output JSON file')\n    parser.add_argument('--config', '-c', help='Jekyll _config.yml file')\n    \n    args = parser.parse_args()\n    \n    # Get repository root (parent directory of the input file's directory)\n    repo_root = str(Path(args.input).parent.parent)\n    \n    create_cv_json(args.input, args.config, repo_root, args.output)\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "scripts/update_cv_json.sh",
    "content": "#!/bin/bash\n\n# Script to update the CV JSON file from the markdown CV\n# Author: Yuan Chen\n\n# Set the base directory to the repository root\nBASE_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\n\n# Define file paths\nCV_MARKDOWN=\"$BASE_DIR/_pages/cv.md\"\nCV_JSON=\"$BASE_DIR/_data/cv.json\"\nCONFIG_FILE=\"$BASE_DIR/_config.yml\"\n\n# Check if the Python script exists\nPYTHON_SCRIPT=\"$BASE_DIR/scripts/cv_markdown_to_json.py\"\nif [ ! -f \"$PYTHON_SCRIPT\" ]; then\n  echo \"Error: Python script not found at $PYTHON_SCRIPT\"\n  exit 1\nfi\n\n# Check if the markdown CV exists\nif [ ! -f \"$CV_MARKDOWN\" ]; then\n  echo \"Error: Markdown CV not found at $CV_MARKDOWN\"\n  exit 1\nfi\n\n# Run the Python script to convert markdown to JSON\necho \"Converting markdown CV to JSON...\"\npython3 \"$PYTHON_SCRIPT\" --input \"$CV_MARKDOWN\" --output \"$CV_JSON\" --config \"$CONFIG_FILE\"\n\n# Check if the conversion was successful\nif [ $? -eq 0 ]; then\n  echo \"Successfully updated CV JSON file at $CV_JSON\"\n  \n  # Optional: Build the Jekyll site to see the changes\n  echo \"Would you like to build the Jekyll site to see the changes? (y/n)\"\n  read -r answer\n  if [[ \"$answer\" =~ ^[Yy]$ ]]; then\n    echo \"Building Jekyll site...\"\n    cd \"$BASE_DIR\" && bundle exec jekyll serve\n  fi\nelse\n  echo \"Error: Failed to update CV JSON file\"\n  exit 1\nfi\n\nexit 0\n"
  },
  {
    "path": "talkmap/leaflet_dist/MarkerCluster.Default.css",
    "content": "\n    .marker-cluster-small {\n        background-color: rgba(181, 226, 140, 0.6);\n        }\n    .marker-cluster-small div {\n        background-color: rgba(110, 204, 57, 0.6);\n        }\n\n    .marker-cluster-medium {\n        background-color: rgba(241, 211, 87, 0.6);\n        }\n    .marker-cluster-medium div {\n        background-color: rgba(240, 194, 12, 0.6);\n        }\n\n    .marker-cluster-large {\n        background-color: rgba(253, 156, 115, 0.6);\n        }\n    .marker-cluster-large div {\n        background-color: rgba(241, 128, 23, 0.6);\n        }\n\n        /* IE 6-8 fallback colors */\n    .leaflet-oldie .marker-cluster-small {\n        background-color: rgb(181, 226, 140);\n        }\n    .leaflet-oldie .marker-cluster-small div {\n        background-color: rgb(110, 204, 57);\n        }\n\n    .leaflet-oldie .marker-cluster-medium {\n        background-color: rgb(241, 211, 87);\n        }\n    .leaflet-oldie .marker-cluster-medium div {\n        background-color: rgb(240, 194, 12);\n        }\n\n    .leaflet-oldie .marker-cluster-large {\n        background-color: rgb(253, 156, 115);\n        }\n    .leaflet-oldie .marker-cluster-large div {\n        background-color: rgb(241, 128, 23);\n    }\n\n    .marker-cluster {\n        background-clip: padding-box;\n        border-radius: 20px;\n        }\n    .marker-cluster div {\n        width: 30px;\n        height: 30px;\n        margin-left: 5px;\n        margin-top: 5px;\n\n        text-align: center;\n        border-radius: 15px;\n        font: 12px \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        }\n    .marker-cluster span {\n        line-height: 30px;\n        }\n        "
  },
  {
    "path": "talkmap/leaflet_dist/MarkerCluster.css",
    "content": "\n\t.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {\n\t\t-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t\t-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t\t-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t\ttransition: transform 0.3s ease-out, opacity 0.3s ease-in;\n\t}\n\n\t.leaflet-cluster-spider-leg {\n\t\t/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */\n\t\t-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;\n\t\t-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;\n\t\t-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;\n\t\ttransition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;\n\t}\n        "
  },
  {
    "path": "talkmap/leaflet_dist/leaflet.markercluster-src.js",
    "content": "\n\t/*\n\t Leaflet.markercluster, Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.\n\t https://github.com/Leaflet/Leaflet.markercluster\n\t (c) 2012-2013, Dave Leaver, smartrak\n\t*/\n\t(function (window, document, undefined) {/*\n\t * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within\n\t */\n\n\tL.MarkerClusterGroup = L.FeatureGroup.extend({\n\n\t\toptions: {\n\t\t\tmaxClusterRadius: 80, //A cluster will cover at most this many pixels from its center\n\t\t\ticonCreateFunction: null,\n\n\t\t\tspiderfyOnMaxZoom: true,\n\t\t\tshowCoverageOnHover: true,\n\t\t\tzoomToBoundsOnClick: true,\n\t\t\tsingleMarkerMode: false,\n\n\t\t\tdisableClusteringAtZoom: null,\n\n\t\t\t// Setting this to false prevents the removal of any clusters outside of the viewpoint, which\n\t\t\t// is the default behaviour for performance reasons.\n\t\t\tremoveOutsideVisibleBounds: true,\n\n\t\t\t// Set to false to disable all animations (zoom and spiderfy).\n\t\t\t// If false, option animateAddingMarkers below has no effect.\n\t\t\t// If L.DomUtil.TRANSITION is falsy, this option has no effect.\n\t\t\tanimate: true,\n\n\t\t\t//Whether to animate adding markers after adding the MarkerClusterGroup to the map\n\t\t\t// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.\n\t\t\tanimateAddingMarkers: false,\n\n\t\t\t//Increase to increase the distance away that spiderfied markers appear from the center\n\t\t\tspiderfyDistanceMultiplier: 1,\n\n\t\t\t// Make it possible to specify a polyline options on a spider leg\n\t\t\tspiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },\n\n\t\t\t// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts\n\t\t\tchunkedLoading: false,\n\t\t\tchunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)\n\t\t\tchunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser\n\t\t\tchunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)\n\n\t\t\t//Options to pass to the L.Polygon constructor\n\t\t\tpolygonOptions: {}\n\t\t},\n\n\t\tinitialize: function (options) {\n\t\t\tL.Util.setOptions(this, options);\n\t\t\tif (!this.options.iconCreateFunction) {\n\t\t\t\tthis.options.iconCreateFunction = this._defaultIconCreateFunction;\n\t\t\t}\n\n\t\t\tthis._featureGroup = L.featureGroup();\n\t\t\tthis._featureGroup.addEventParent(this);\n\n\t\t\tthis._nonPointGroup = L.featureGroup();\n\t\t\tthis._nonPointGroup.addEventParent(this);\n\n\t\t\tthis._inZoomAnimation = 0;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of\n\t\t\t//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move\n\t\t\tthis._currentShownBounds = null;\n\n\t\t\tthis._queue = [];\n\n\t\t\t// Hook the appropriate animation methods.\n\t\t\tvar animate = L.DomUtil.TRANSITION && this.options.animate;\n\t\t\tL.extend(this, animate ? this._withAnimation : this._noAnimation);\n\t\t\t// Remember which MarkerCluster class to instantiate (animated or not).\n\t\t\tthis._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;\n\t\t},\n\n\t\taddLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.addLayers([layer]);\n\t\t\t}\n\n\t\t\t//Don't cluster non point data\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.addLayer(layer);\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering.push(layer);\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\n\t\t\t//If we have already clustered we'll need to add this one to a cluster\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t}\n\n\t\t\tthis._addLayer(layer, this._maxZoom);\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Work out what is visible\n\t\t\tvar visibleLayer = layer,\n\t\t\t\tcurrentZoom = this._map.getZoom();\n\t\t\tif (layer.__parent) {\n\t\t\t\twhile (visibleLayer.__parent._zoom >= currentZoom) {\n\t\t\t\t\tvisibleLayer = visibleLayer.__parent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._currentShownBounds.contains(visibleLayer.getLatLng())) {\n\t\t\t\tif (this.options.animateAddingMarkers) {\n\t\t\t\t\tthis._animationAddLayer(layer, visibleLayer);\n\t\t\t\t} else {\n\t\t\t\t\tthis._animationAddLayerNonAnimated(layer, visibleLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tremoveLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.removeLayers([layer]);\n\t\t\t}\n\n\t\t\t//Non point layers\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.removeLayer(layer);\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tif (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {\n\t\t\t\t\tthis._needsRemoving.push(layer);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!layer.__parent) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t\tthis._unspiderfyLayer(layer);\n\t\t\t}\n\n\t\t\t//Remove the marker from clusters\n\t\t\tthis._removeLayer(layer, true);\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\tlayer.off('move', this._childMarkerMoved, this);\n\n\t\t\tif (this._featureGroup.hasLayer(layer)) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and adds them in bulk\n\t\taddLayers: function (layersArray) {\n\t\t\tif (!L.Util.isArray(layersArray)) {\n\t\t\t\treturn this.addLayer(layersArray);\n\t\t\t}\n\n\t\t\tvar fg = this._featureGroup,\n\t\t\t    npg = this._nonPointGroup,\n\t\t\t    chunked = this.options.chunkedLoading,\n\t\t\t    chunkInterval = this.options.chunkInterval,\n\t\t\t    chunkProgress = this.options.chunkProgress,\n\t\t\t    l = layersArray.length,\n\t\t\t    offset = 0,\n\t\t\t    originalArray = true,\n\t\t\t    m;\n\n\t\t\tif (this._map) {\n\t\t\t\tvar started = (new Date()).getTime();\n\t\t\t\tvar process = L.bind(function () {\n\t\t\t\t\tvar start = (new Date()).getTime();\n\t\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\t\tif (chunked && offset % 200 === 0) {\n\t\t\t\t\t\t\t// every couple hundred markers, instrument the time elapsed since processing started:\n\t\t\t\t\t\t\tvar elapsed = (new Date()).getTime() - start;\n\t\t\t\t\t\t\tif (elapsed > chunkInterval) {\n\t\t\t\t\t\t\t\tbreak; // been working too hard, time to take a break :-)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\t\t// Side effects:\n\t\t\t\t\t\t// - Total increases, so chunkProgress ratio jumps backward.\n\t\t\t\t\t\t// - Groups are not included in this group, only their non-group child layers (hasLayer).\n\t\t\t\t\t\t// Changing array length while looping does not affect performance in current browsers:\n\t\t\t\t\t\t// http://jsperf.com/for-loop-changing-length/6\n\t\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._addLayer(m, this._maxZoom);\n\n\t\t\t\t\t\t//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will\n\t\t\t\t\t\tif (m.__parent) {\n\t\t\t\t\t\t\tif (m.__parent.getChildCount() === 2) {\n\t\t\t\t\t\t\t\tvar markers = m.__parent.getAllChildMarkers(),\n\t\t\t\t\t\t\t\t    otherMarker = markers[0] === m ? markers[1] : markers[0];\n\t\t\t\t\t\t\t\tfg.removeLayer(otherMarker);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunkProgress) {\n\t\t\t\t\t\t// report progress and time elapsed:\n\t\t\t\t\t\tchunkProgress(offset, l, (new Date()).getTime() - started);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Completed processing all markers.\n\t\t\t\t\tif (offset === l) {\n\n\t\t\t\t\t\t// Refresh bounds and weighted positions.\n\t\t\t\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\t\t\t\tthis._refreshClustersIcons();\n\n\t\t\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(process, this.options.chunkDelay);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tprocess();\n\t\t\t} else {\n\t\t\t\tvar needsClustering = this._needsClustering;\n\n\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsClustering.push(m);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and removes them in bulk\n\t\tremoveLayers: function (layersArray) {\n\t\t\tvar i, m,\n\t\t\t    l = layersArray.length,\n\t\t\t    fg = this._featureGroup,\n\t\t\t    npg = this._nonPointGroup,\n\t\t\t    originalArray = true;\n\n\t\t\tif (!this._map) {\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tm = layersArray[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._arraySplice(this._needsClustering, m);\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tthis._needsRemoving.push(m);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\n\t\t\t\t// Work on a copy of the array, so that next loop is not affected.\n\t\t\t\tvar layersArray2 = layersArray.slice(),\n\t\t\t\t    l2 = l;\n\t\t\t\tfor (i = 0; i < l2; i++) {\n\t\t\t\t\tm = layersArray2[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray2);\n\t\t\t\t\t\tl2 = layersArray2.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._unspiderfyLayer(m);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\tm = layersArray[i];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!m.__parent) {\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._removeLayer(m, true, true);\n\n\t\t\t\tif (fg.hasLayer(m)) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Fix up the clusters and markers on the map\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Removes all layers from the MarkerClusterGroup\n\t\tclearLayers: function () {\n\t\t\t//Need our own special implementation as the LayerGroup one doesn't work for us\n\n\t\t\t//If we aren't on the map (yet), blow away the markers we know of\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering = [];\n\t\t\t\tdelete this._gridClusters;\n\t\t\t\tdelete this._gridUnclustered;\n\t\t\t}\n\n\t\t\tif (this._noanimationUnspiderfy) {\n\t\t\t\tthis._noanimationUnspiderfy();\n\t\t\t}\n\n\t\t\t//Remove all the visible layers\n\t\t\tthis._featureGroup.clearLayers();\n\t\t\tthis._nonPointGroup.clearLayers();\n\n\t\t\tthis.eachLayer(function (marker) {\n\t\t\t\tmarker.off('move', this._childMarkerMoved, this);\n\t\t\t\tdelete marker.__parent;\n\t\t\t});\n\n\t\t\tif (this._map) {\n\t\t\t\t//Reset _topClusterLevel and the DistanceGrids\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Override FeatureGroup.getBounds as it doesn't work\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tbounds.extend(this._topClusterLevel._bounds);\n\t\t\t}\n\n\t\t\tfor (var i = this._needsClustering.length - 1; i >= 0; i--) {\n\t\t\t\tbounds.extend(this._needsClustering[i].getLatLng());\n\t\t\t}\n\n\t\t\tbounds.extend(this._nonPointGroup.getBounds());\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Overrides LayerGroup.eachLayer\n\t\teachLayer: function (method, context) {\n\t\t\tvar markers = this._needsClustering.slice(),\n\t\t\t\tneedsRemoving = this._needsRemoving,\n\t\t\t\ti;\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tthis._topClusterLevel.getAllChildMarkers(markers);\n\t\t\t}\n\n\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\tif (needsRemoving.indexOf(markers[i]) === -1) {\n\t\t\t\t\tmethod.call(context, markers[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._nonPointGroup.eachLayer(method, context);\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayers\n\t\tgetLayers: function () {\n\t\t\tvar layers = [];\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tlayers.push(l);\n\t\t\t});\n\t\t\treturn layers;\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayer, WARNING: Really bad performance\n\t\tgetLayer: function (id) {\n\t\t\tvar result = null;\n\t\t\t\n\t\t\tid = parseInt(id, 10);\n\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tif (L.stamp(l) === id) {\n\t\t\t\t\tresult = l;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\n\t\t//Returns true if the given layer is in this MarkerClusterGroup\n\t\thasLayer: function (layer) {\n\t\t\tif (!layer) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar i, anArray = this._needsClustering;\n\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === layer) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tanArray = this._needsRemoving;\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === layer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);\n\t\t},\n\n\t\t//Zoom down to show the given layer (spiderfying if necessary) then calls the callback\n\t\tzoomToShowLayer: function (layer, callback) {\n\t\t\t\n\t\t\tif (typeof callback !== 'function') {\n\t\t\t\tcallback = function () {};\n\t\t\t}\n\n\t\t\tvar showMarker = function () {\n\t\t\t\tif ((layer._icon || layer.__parent._icon) && !this._inZoomAnimation) {\n\t\t\t\t\tthis._map.off('moveend', showMarker, this);\n\t\t\t\t\tthis.off('animationend', showMarker, this);\n\n\t\t\t\t\tif (layer._icon) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if (layer.__parent._icon) {\n\t\t\t\t\t\tthis.once('spiderfied', callback, this);\n\t\t\t\t\t\tlayer.__parent.spiderfy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {\n\t\t\t\t//Layer is visible ond on screen, immediate return\n\t\t\t\tcallback();\n\t\t\t} else if (layer.__parent._zoom < this._map.getZoom()) {\n\t\t\t\t//Layer should be visible at this zoom level. It must not be on screen so just pan over to it\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis._map.panTo(layer.getLatLng());\n\t\t\t} else {\n\t\t\t\tvar moveStart = function () {\n\t\t\t\t\tthis._map.off('movestart', moveStart, this);\n\t\t\t\t\tmoveStart = null;\n\t\t\t\t};\n\n\t\t\t\tthis._map.on('movestart', moveStart, this);\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis.on('animationend', showMarker, this);\n\t\t\t\tlayer.__parent.zoomToBounds();\n\n\t\t\t\tif (moveStart) {\n\t\t\t\t\t//Never started moving, must already be there, probably need clustering however\n\t\t\t\t\tshowMarker.call(this);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//Overrides FeatureGroup.onAdd\n\t\tonAdd: function (map) {\n\t\t\tthis._map = map;\n\t\t\tvar i, l, layer;\n\n\t\t\tif (!isFinite(this._map.getMaxZoom())) {\n\t\t\t\tthrow \"Map has no maxZoom specified\";\n\t\t\t}\n\n\t\t\tthis._featureGroup.addTo(map);\n\t\t\tthis._nonPointGroup.addTo(map);\n\n\t\t\tif (!this._gridClusters) {\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\tthis._maxLat = map.options.crs.projection.MAX_LATITUDE;\n\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tthis._removeLayer(layer, true);\n\t\t\t}\n\t\t\tthis._needsRemoving = [];\n\n\t\t\t//Remember the current zoom level and bounds\n\t\t\tthis._zoom = this._map.getZoom();\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._map.on('zoomend', this._zoomEnd, this);\n\t\t\tthis._map.on('moveend', this._moveEnd, this);\n\n\t\t\tif (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnAdd();\n\t\t\t}\n\n\t\t\tthis._bindEvents();\n\n\t\t\t//Actually add our markers to the map:\n\t\t\tl = this._needsClustering;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis.addLayers(l);\n\t\t},\n\n\t\t//Overrides FeatureGroup.onRemove\n\t\tonRemove: function (map) {\n\t\t\tmap.off('zoomend', this._zoomEnd, this);\n\t\t\tmap.off('moveend', this._moveEnd, this);\n\n\t\t\tthis._unbindEvents();\n\n\t\t\t//In case we are in a cluster animation\n\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\n\t\t\tif (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnRemove();\n\t\t\t}\n\n\t\t\tdelete this._maxLat;\n\n\t\t\t//Clean up all the layers we added to the map\n\t\t\tthis._hideCoverage();\n\t\t\tthis._featureGroup.remove();\n\t\t\tthis._nonPointGroup.remove();\n\n\t\t\tthis._featureGroup.clearLayers();\n\n\t\t\tthis._map = null;\n\t\t},\n\n\t\tgetVisibleParent: function (marker) {\n\t\t\tvar vMarker = marker;\n\t\t\twhile (vMarker && !vMarker._icon) {\n\t\t\t\tvMarker = vMarker.__parent;\n\t\t\t}\n\t\t\treturn vMarker || null;\n\t\t},\n\n\t\t//Remove the given object from the given array\n\t\t_arraySplice: function (anArray, obj) {\n\t\t\tfor (var i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === obj) {\n\t\t\t\t\tanArray.splice(i, 1);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.\n\t\t * @param marker to be removed from _gridUnclustered.\n\t\t * @param z integer bottom start zoom level (included)\n\t\t * @private\n\t\t */\n\t\t_removeFromGridUnclustered: function (marker, z) {\n\t\t\tvar map             = this._map,\n\t\t\t    gridUnclustered = this._gridUnclustered;\n\n\t\t\tfor (; z >= 0; z--) {\n\t\t\t\tif (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_childMarkerMoved: function (e) {\n\t\t\tif (!this._ignoreMove) {\n\t\t\t\te.target._latlng = e.oldLatLng;\n\t\t\t\tthis.removeLayer(e.target);\n\n\t\t\t\te.target._latlng = e.latlng;\n\t\t\t\tthis.addLayer(e.target);\n\t\t\t}\n\t\t},\n\n\t\t//Internal function for removing a marker from everything.\n\t\t//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)\n\t\t_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t\tgridUnclustered = this._gridUnclustered,\n\t\t\t\tfg = this._featureGroup,\n\t\t\t\tmap = this._map;\n\n\t\t\t//Remove the marker from distance clusters it might be in\n\t\t\tif (removeFromDistanceGrid) {\n\t\t\t\tthis._removeFromGridUnclustered(marker, this._maxZoom);\n\t\t\t}\n\n\t\t\t//Work our way up the clusters removing them as we go if required\n\t\t\tvar cluster = marker.__parent,\n\t\t\t\tmarkers = cluster._markers,\n\t\t\t\totherMarker;\n\n\t\t\t//Remove the marker from the immediate parents marker list\n\t\t\tthis._arraySplice(markers, marker);\n\n\t\t\twhile (cluster) {\n\t\t\t\tcluster._childCount--;\n\t\t\t\tcluster._boundsNeedUpdate = true;\n\n\t\t\t\tif (cluster._zoom < 0) {\n\t\t\t\t\t//Top level, do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required\n\t\t\t\t\t//We need to push the other marker up to the parent\n\t\t\t\t\totherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];\n\n\t\t\t\t\t//Update distance grid\n\t\t\t\t\tgridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));\n\t\t\t\t\tgridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));\n\n\t\t\t\t\t//Move otherMarker up to parent\n\t\t\t\t\tthis._arraySplice(cluster.__parent._childClusters, cluster);\n\t\t\t\t\tcluster.__parent._markers.push(otherMarker);\n\t\t\t\t\totherMarker.__parent = cluster.__parent;\n\n\t\t\t\t\tif (cluster._icon) {\n\t\t\t\t\t\t//Cluster is currently on the map, need to put the marker on the map instead\n\t\t\t\t\t\tfg.removeLayer(cluster);\n\t\t\t\t\t\tif (!dontUpdateMap) {\n\t\t\t\t\t\t\tfg.addLayer(otherMarker);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._iconNeedsUpdate = true;\n\t\t\t\t}\n\n\t\t\t\tcluster = cluster.__parent;\n\t\t\t}\n\n\t\t\tdelete marker.__parent;\n\t\t},\n\n\t\t_isOrIsParent: function (el, oel) {\n\t\t\twhile (oel) {\n\t\t\t\tif (el === oel) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\toel = oel.parentNode;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t//Override L.Evented.fire\n\t\tfire: function (type, data, propagate) {\n\t\t\tif (data && data.layer instanceof L.MarkerCluster) {\n\t\t\t\t//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)\n\t\t\t\tif (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttype = 'cluster' + type;\n\t\t\t}\n\n\t\t\tL.FeatureGroup.prototype.fire.call(this, type, data, propagate);\n\t\t},\n\n\t\t//Override L.Evented.listens\n\t\tlistens: function (type, propagate) {\n\t\t\treturn L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);\n\t\t},\n\n\t\t//Default functionality\n\t\t_defaultIconCreateFunction: function (cluster) {\n\t\t\tvar childCount = cluster.getChildCount();\n\n\t\t\tvar c = ' marker-cluster-';\n\t\t\tif (childCount < 10) {\n\t\t\t\tc += 'small';\n\t\t\t} else if (childCount < 100) {\n\t\t\t\tc += 'medium';\n\t\t\t} else {\n\t\t\t\tc += 'large';\n\t\t\t}\n\n\t\t\treturn new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });\n\t\t},\n\n\t\t_bindEvents: function () {\n\t\t\tvar map = this._map,\n\t\t\t    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t    showCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick;\n\n\t\t\t//Zoom on cluster click or spiderfy if we are at the lowest level\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick) {\n\t\t\t\tthis.on('clusterclick', this._zoomOrSpiderfy, this);\n\t\t\t}\n\n\t\t\t//Show convex hull (boundary) polygon on mouse over\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.on('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.on('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.on('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomOrSpiderfy: function (e) {\n\t\t\tvar cluster = e.layer,\n\t\t\t    bottomCluster = cluster;\n\n\t\t\twhile (bottomCluster._childClusters.length === 1) {\n\t\t\t\tbottomCluster = bottomCluster._childClusters[0];\n\t\t\t}\n\n\t\t\tif (bottomCluster._zoom === this._maxZoom &&\n\t\t\t\tbottomCluster._childCount === cluster._childCount &&\n\t\t\t\tthis.options.spiderfyOnMaxZoom) {\n\n\t\t\t\t// All child markers are contained in a single cluster from this._maxZoom to this cluster.\n\t\t\t\tcluster.spiderfy();\n\t\t\t} else if (this.options.zoomToBoundsOnClick) {\n\t\t\t\tcluster.zoomToBounds();\n\t\t\t}\n\n\t\t\t// Focus the map again for keyboard users.\n\t\t\tif (e.originalEvent && e.originalEvent.keyCode === 13) {\n\t\t\t\tthis._map._container.focus();\n\t\t\t}\n\t\t},\n\n\t\t_showCoverage: function (e) {\n\t\t\tvar map = this._map;\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tmap.removeLayer(this._shownPolygon);\n\t\t\t}\n\t\t\tif (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {\n\t\t\t\tthis._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);\n\t\t\t\tmap.addLayer(this._shownPolygon);\n\t\t\t}\n\t\t},\n\n\t\t_hideCoverage: function () {\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tthis._map.removeLayer(this._shownPolygon);\n\t\t\t\tthis._shownPolygon = null;\n\t\t\t}\n\t\t},\n\n\t\t_unbindEvents: function () {\n\t\t\tvar spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t\tshowCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t\tzoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\t\tmap = this._map;\n\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick) {\n\t\t\t\tthis.off('clusterclick', this._zoomOrSpiderfy, this);\n\t\t\t}\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.off('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.off('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.off('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomEnd: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._mergeSplitClusters();\n\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\t\t},\n\n\t\t_moveEnd: function () {\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar newBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, this._zoom, newBounds);\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);\n\n\t\t\tthis._currentShownBounds = newBounds;\n\t\t\treturn;\n\t\t},\n\n\t\t_generateInitialClusters: function () {\n\t\t\tvar maxZoom = this._map.getMaxZoom(),\n\t\t\t\tradius = this.options.maxClusterRadius,\n\t\t\t\tradiusFn = radius;\n\t\t\n\t\t\t//If we just set maxClusterRadius to a single number, we need to create\n\t\t\t//a simple function to return that number. Otherwise, we just have to\n\t\t\t//use the function we've passed in.\n\t\t\tif (typeof radius !== \"function\") {\n\t\t\t\tradiusFn = function () { return radius; };\n\t\t\t}\n\n\t\t\tif (this.options.disableClusteringAtZoom) {\n\t\t\t\tmaxZoom = this.options.disableClusteringAtZoom - 1;\n\t\t\t}\n\t\t\tthis._maxZoom = maxZoom;\n\t\t\tthis._gridClusters = {};\n\t\t\tthis._gridUnclustered = {};\n\t\t\n\t\t\t//Set up DistanceGrids for each zoom\n\t\t\tfor (var zoom = maxZoom; zoom >= 0; zoom--) {\n\t\t\t\tthis._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t\tthis._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t}\n\n\t\t\t// Instantiate the appropriate L.MarkerCluster class (animated or not).\n\t\t\tthis._topClusterLevel = new this._markerCluster(this, -1);\n\t\t},\n\n\t\t//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)\n\t\t_addLayer: function (layer, zoom) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t    gridUnclustered = this._gridUnclustered,\n\t\t\t    markerPoint, z;\n\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._overrideMarkerIcon(layer);\n\t\t\t}\n\n\t\t\tlayer.on('move', this._childMarkerMoved, this);\n\n\t\t\t//Find the lowest zoom level to slot this one in\n\t\t\tfor (; zoom >= 0; zoom--) {\n\t\t\t\tmarkerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position\n\n\t\t\t\t//Try find a cluster close by\n\t\t\t\tvar closest = gridClusters[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tclosest._addChild(layer);\n\t\t\t\t\tlayer.__parent = closest;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Try find a marker close by to form a new cluster with\n\t\t\t\tclosest = gridUnclustered[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tvar parent = closest.__parent;\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._removeLayer(closest, false);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Create new cluster with these 2 in it\n\n\t\t\t\t\tvar newCluster = new this._markerCluster(this, zoom, closest, layer);\n\t\t\t\t\tgridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));\n\t\t\t\t\tclosest.__parent = newCluster;\n\t\t\t\t\tlayer.__parent = newCluster;\n\n\t\t\t\t\t//First create any new intermediate parent clusters that don't exist\n\t\t\t\t\tvar lastParent = newCluster;\n\t\t\t\t\tfor (z = zoom - 1; z > parent._zoom; z--) {\n\t\t\t\t\t\tlastParent = new this._markerCluster(this, z, lastParent);\n\t\t\t\t\t\tgridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));\n\t\t\t\t\t}\n\t\t\t\t\tparent._addChild(lastParent);\n\n\t\t\t\t\t//Remove closest from this zoom level and any above that it is in, replace with newCluster\n\t\t\t\t\tthis._removeFromGridUnclustered(closest, zoom);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards\n\t\t\t\tgridUnclustered[zoom].addObject(layer, markerPoint);\n\t\t\t}\n\n\t\t\t//Didn't get in anything, add us to the top\n\t\t\tthis._topClusterLevel._addChild(layer);\n\t\t\tlayer.__parent = this._topClusterLevel;\n\t\t\treturn;\n\t\t},\n\n\t\t/**\n\t\t * Refreshes the icon of all \"dirty\" visible clusters.\n\t\t * Non-visible \"dirty\" clusters will be updated when they are added to the map.\n\t\t * @private\n\t\t */\n\t\t_refreshClustersIcons: function () {\n\t\t\tthis._featureGroup.eachLayer(function (c) {\n\t\t\t\tif (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {\n\t\t\t\t\tc._updateIcon();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t//Enqueue code to fire after the marker expand/contract has happened\n\t\t_enqueue: function (fn) {\n\t\t\tthis._queue.push(fn);\n\t\t\tif (!this._queueTimeout) {\n\t\t\t\tthis._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);\n\t\t\t}\n\t\t},\n\t\t_processQueue: function () {\n\t\t\tfor (var i = 0; i < this._queue.length; i++) {\n\t\t\t\tthis._queue[i].call(this);\n\t\t\t}\n\t\t\tthis._queue.length = 0;\n\t\t\tclearTimeout(this._queueTimeout);\n\t\t\tthis._queueTimeout = null;\n\t\t},\n\n\t\t//Merge and split any existing clusters that are too big or small\n\t\t_mergeSplitClusters: function () {\n\t\t\tvar mapZoom = Math.round(this._map._zoom);\n\n\t\t\t//In case we are starting to split before the animation finished\n\t\t\tthis._processQueue();\n\n\t\t\tif (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split\n\t\t\t\tthis._animationStart();\n\t\t\t\t//Remove clusters now off screen\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, this._zoom, this._getExpandedVisibleBounds());\n\n\t\t\t\tthis._animationZoomIn(this._zoom, mapZoom);\n\n\t\t\t} else if (this._zoom > mapZoom) { //Zoom out, merge\n\t\t\t\tthis._animationStart();\n\n\t\t\t\tthis._animationZoomOut(this._zoom, mapZoom);\n\t\t\t} else {\n\t\t\t\tthis._moveEnd();\n\t\t\t}\n\t\t},\n\n\t\t//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)\n\t\t_getExpandedVisibleBounds: function () {\n\t\t\tif (!this.options.removeOutsideVisibleBounds) {\n\t\t\t\treturn this._mapBoundsInfinite;\n\t\t\t} else if (L.Browser.mobile) {\n\t\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds());\n\t\t\t}\n\n\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.\n\t\t},\n\n\t\t/**\n\t\t * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude\n\t\t * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).\n\t\t * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without\n\t\t * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,\n\t\t * making the user think that MCG \"eats\" them and never displays them again.\n\t\t * @param bounds L.LatLngBounds\n\t\t * @returns {L.LatLngBounds}\n\t\t * @private\n\t\t */\n\t\t_checkBoundsMaxLat: function (bounds) {\n\t\t\tvar maxLat = this._maxLat;\n\n\t\t\tif (maxLat !== undefined) {\n\t\t\t\tif (bounds.getNorth() >= maxLat) {\n\t\t\t\t\tbounds._northEast.lat = Infinity;\n\t\t\t\t}\n\t\t\t\tif (bounds.getSouth() <= -maxLat) {\n\t\t\t\t\tbounds._southWest.lat = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Shared animation code\n\t\t_animationAddLayerNonAnimated: function (layer, newCluster) {\n\t\t\tif (newCluster === layer) {\n\t\t\t\tthis._featureGroup.addLayer(layer);\n\t\t\t} else if (newCluster._childCount === 2) {\n\t\t\t\tnewCluster._addToMap();\n\n\t\t\t\tvar markers = newCluster.getAllChildMarkers();\n\t\t\t\tthis._featureGroup.removeLayer(markers[0]);\n\t\t\t\tthis._featureGroup.removeLayer(markers[1]);\n\t\t\t} else {\n\t\t\t\tnewCluster._updateIcon();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extracts individual (i.e. non-group) layers from a Layer Group.\n\t\t * @param group to extract layers from.\n\t\t * @param output {Array} in which to store the extracted layers.\n\t\t * @returns {*|Array}\n\t\t * @private\n\t\t */\n\t\t_extractNonGroupLayers: function (group, output) {\n\t\t\tvar layers = group.getLayers(),\n\t\t\t    i = 0,\n\t\t\t    layer;\n\n\t\t\toutput = output || [];\n\n\t\t\tfor (; i < layers.length; i++) {\n\t\t\t\tlayer = layers[i];\n\n\t\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\t\tthis._extractNonGroupLayers(layer, output);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\toutput.push(layer);\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\n\t\t/**\n\t\t * Implements the singleMarkerMode option.\n\t\t * @param layer Marker to re-style using the Clusters iconCreateFunction.\n\t\t * @returns {L.Icon} The newly created icon.\n\t\t * @private\n\t\t */\n\t\t_overrideMarkerIcon: function (layer) {\n\t\t\tvar icon = layer.options.icon = this.options.iconCreateFunction({\n\t\t\t\tgetChildCount: function () {\n\t\t\t\t\treturn 1;\n\t\t\t\t},\n\t\t\t\tgetAllChildMarkers: function () {\n\t\t\t\t\treturn [layer];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn icon;\n\t\t}\n\t});\n\n\t// Constant bounds used in case option \"removeOutsideVisibleBounds\" is set to false.\n\tL.MarkerClusterGroup.include({\n\t\t_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))\n\t});\n\n\tL.MarkerClusterGroup.include({\n\t\t_noAnimation: {\n\t\t\t//Non Animated versions of everything\n\t\t\t_animationStart: function () {\n\t\t\t\t//Do nothing...\n\t\t\t},\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tthis._animationAddLayerNonAnimated(layer, newCluster);\n\t\t\t}\n\t\t},\n\n\t\t_withAnimation: {\n\t\t\t//Animated versions here\n\t\t\t_animationStart: function () {\n\t\t\t\tthis._map._mapPane.className += ' leaflet-cluster-anim';\n\t\t\t\tthis._inZoomAnimation++;\n\t\t\t},\n\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\t    fg     = this._featureGroup,\n\t\t\t\t    i;\n\n\t\t\t\tthis._ignoreMove = true;\n\n\t\t\t\t//Add all children of current clusters to map and remove those clusters from map\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, 0, function (c) {\n\t\t\t\t\tvar startPos = c._latlng,\n\t\t\t\t\t    markers  = c._markers,\n\t\t\t\t\t    m;\n\n\t\t\t\t\tif (!bounds.contains(startPos)) {\n\t\t\t\t\t\tstartPos = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Fade out old cluster\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Remove all markers that aren't visible any more\n\t\t\t\t\t//TODO: Do we actually need to do this on the higher levels too?\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\t\t\t\t\t\tif (!bounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\tthis._forceLayout();\n\n\t\t\t\t//Update opacities\n\t\t\t\tthis._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);\n\t\t\t\t//TODO Maybe? Update markers in _recursivelyBecomeVisible\n\t\t\t\tfg.eachLayer(function (n) {\n\t\t\t\t\tif (!(n instanceof L.MarkerCluster) && n._icon) {\n\t\t\t\t\t\tn.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {\n\t\t\t\t\tc._recursivelyRestoreChildPositions(newZoomLevel);\n\t\t\t\t});\n\n\t\t\t\tthis._ignoreMove = false;\n\n\t\t\t\t//Remove the old clusters and close the zoom animation\n\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, 0, function (c) {\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._animationEnd();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);\n\n\t\t\t\t//Need to add markers for those that weren't on the map before but are now\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t\t//Remove markers that were on the map before but won't be now\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t},\n\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tvar me = this,\n\t\t\t\t    fg = this._featureGroup;\n\n\t\t\t\tfg.addLayer(layer);\n\t\t\t\tif (newCluster !== layer) {\n\t\t\t\t\tif (newCluster._childCount > 2) { //Was already a cluster\n\n\t\t\t\t\t\tnewCluster._updateIcon();\n\t\t\t\t\t\tthis._forceLayout();\n\t\t\t\t\t\tthis._animationStart();\n\n\t\t\t\t\t\tlayer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));\n\t\t\t\t\t\tlayer.clusterHide();\n\n\t\t\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t\t\tfg.removeLayer(layer);\n\t\t\t\t\t\t\tlayer.clusterShow();\n\n\t\t\t\t\t\t\tme._animationEnd();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t} else { //Just became a cluster\n\t\t\t\t\t\tthis._forceLayout();\n\n\t\t\t\t\t\tme._animationStart();\n\t\t\t\t\t\tme._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._map.getZoom());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Private methods for animated versions.\n\t\t_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {\n\t\t\tvar bounds = this._getExpandedVisibleBounds();\n\n\t\t\t//Animate all of the markers in the clusters to move to their cluster center point\n\t\t\tcluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, previousZoomLevel + 1, newZoomLevel);\n\n\t\t\tvar me = this;\n\n\t\t\t//Update the opacity (If we immediately set it they won't animate)\n\t\t\tthis._forceLayout();\n\t\t\tcluster._recursivelyBecomeVisible(bounds, newZoomLevel);\n\n\t\t\t//TODO: Maybe use the transition timing stuff to make this more reliable\n\t\t\t//When the animations are done, tidy up\n\t\t\tthis._enqueue(function () {\n\n\t\t\t\t//This cluster stopped being a cluster before the timeout fired\n\t\t\t\tif (cluster._childCount === 1) {\n\t\t\t\t\tvar m = cluster._markers[0];\n\t\t\t\t\t//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it\n\t\t\t\t\tthis._ignoreMove = true;\n\t\t\t\t\tm.setLatLng(m.getLatLng());\n\t\t\t\t\tthis._ignoreMove = false;\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._recursively(bounds, newZoomLevel, 0, function (c) {\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel + 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tme._animationEnd();\n\t\t\t});\n\t\t},\n\n\t\t_animationEnd: function () {\n\t\t\tif (this._map) {\n\t\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\t\t\t}\n\t\t\tthis._inZoomAnimation--;\n\t\t\tthis.fire('animationend');\n\t\t},\n\n\t\t//Force a browser layout of stuff in the map\n\t\t// Should apply the current opacity and location to all elements so we can update them again for an animation\n\t\t_forceLayout: function () {\n\t\t\t//In my testing this works, infact offsetWidth of any element seems to work.\n\t\t\t//Could loop all this._layers and do this for each _icon if it stops working\n\n\t\t\tL.Util.falseFn(document.body.offsetWidth);\n\t\t}\n\t});\n\n\tL.markerClusterGroup = function (options) {\n\t\treturn new L.MarkerClusterGroup(options);\n\t};\n\n\n\tL.MarkerCluster = L.Marker.extend({\n\t\tinitialize: function (group, zoom, a, b) {\n\n\t\t\tL.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), { icon: this });\n\n\n\t\t\tthis._group = group;\n\t\t\tthis._zoom = zoom;\n\n\t\t\tthis._markers = [];\n\t\t\tthis._childClusters = [];\n\t\t\tthis._childCount = 0;\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tthis._boundsNeedUpdate = true;\n\n\t\t\tthis._bounds = new L.LatLngBounds();\n\n\t\t\tif (a) {\n\t\t\t\tthis._addChild(a);\n\t\t\t}\n\t\t\tif (b) {\n\t\t\t\tthis._addChild(b);\n\t\t\t}\n\t\t},\n\n\t\t//Recursively retrieve all child markers of this cluster\n\t\tgetAllChildMarkers: function (storageArray) {\n\t\t\tstorageArray = storageArray || [];\n\n\t\t\tfor (var i = this._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\tthis._childClusters[i].getAllChildMarkers(storageArray);\n\t\t\t}\n\n\t\t\tfor (var j = this._markers.length - 1; j >= 0; j--) {\n\t\t\t\tstorageArray.push(this._markers[j]);\n\t\t\t}\n\n\t\t\treturn storageArray;\n\t\t},\n\n\t\t//Returns the count of how many child markers we have\n\t\tgetChildCount: function () {\n\t\t\treturn this._childCount;\n\t\t},\n\n\t\t//Zoom to the minimum of showing all of the child markers, or the extents of this cluster\n\t\tzoomToBounds: function () {\n\t\t\tvar childClusters = this._childClusters.slice(),\n\t\t\t\tmap = this._group._map,\n\t\t\t\tboundsZoom = map.getBoundsZoom(this._bounds),\n\t\t\t\tzoom = this._zoom + 1,\n\t\t\t\tmapZoom = map.getZoom(),\n\t\t\t\ti;\n\n\t\t\t//calculate how far we need to zoom down to see all of the markers\n\t\t\twhile (childClusters.length > 0 && boundsZoom > zoom) {\n\t\t\t\tzoom++;\n\t\t\t\tvar newClusters = [];\n\t\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\t\tnewClusters = newClusters.concat(childClusters[i]._childClusters);\n\t\t\t\t}\n\t\t\t\tchildClusters = newClusters;\n\t\t\t}\n\n\t\t\tif (boundsZoom > zoom) {\n\t\t\t\tthis._group._map.setView(this._latlng, zoom);\n\t\t\t} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead\n\t\t\t\tthis._group._map.setView(this._latlng, mapZoom + 1);\n\t\t\t} else {\n\t\t\t\tthis._group._map.fitBounds(this._bounds);\n\t\t\t}\n\t\t},\n\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\t\t\tbounds.extend(this._bounds);\n\t\t\treturn bounds;\n\t\t},\n\n\t\t_updateIcon: function () {\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tif (this._icon) {\n\t\t\t\tthis.setIcon(this);\n\t\t\t}\n\t\t},\n\n\t\t//Cludge for Icon, we pretend to be an icon for performance\n\t\tcreateIcon: function () {\n\t\t\tif (this._iconNeedsUpdate) {\n\t\t\t\tthis._iconObj = this._group.options.iconCreateFunction(this);\n\t\t\t\tthis._iconNeedsUpdate = false;\n\t\t\t}\n\t\t\treturn this._iconObj.createIcon();\n\t\t},\n\t\tcreateShadow: function () {\n\t\t\treturn this._iconObj.createShadow();\n\t\t},\n\n\n\t\t_addChild: function (new1, isNotificationFromChild) {\n\n\t\t\tthis._iconNeedsUpdate = true;\n\n\t\t\tthis._boundsNeedUpdate = true;\n\t\t\tthis._setClusterCenter(new1);\n\n\t\t\tif (new1 instanceof L.MarkerCluster) {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._childClusters.push(new1);\n\t\t\t\t\tnew1.__parent = this;\n\t\t\t\t}\n\t\t\t\tthis._childCount += new1._childCount;\n\t\t\t} else {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._markers.push(new1);\n\t\t\t\t}\n\t\t\t\tthis._childCount++;\n\t\t\t}\n\n\t\t\tif (this.__parent) {\n\t\t\t\tthis.__parent._addChild(new1, true);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.\n\t\t * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.\n\t\t * @private\n\t\t */\n\t\t_setClusterCenter: function (child) {\n\t\t\tif (!this._cLatLng) {\n\t\t\t\t// when clustering, take position of the first point as the cluster center\n\t\t\t\tthis._cLatLng = child._cLatLng || child._latlng;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Assigns impossible bounding values so that the next extend entirely determines the new bounds.\n\t\t * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.\n\t\t * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.\n\t\t * @private\n\t\t */\n\t\t_resetBounds: function () {\n\t\t\tvar bounds = this._bounds;\n\n\t\t\tif (bounds._southWest) {\n\t\t\t\tbounds._southWest.lat = Infinity;\n\t\t\t\tbounds._southWest.lng = Infinity;\n\t\t\t}\n\t\t\tif (bounds._northEast) {\n\t\t\t\tbounds._northEast.lat = -Infinity;\n\t\t\t\tbounds._northEast.lng = -Infinity;\n\t\t\t}\n\t\t},\n\n\t\t_recalculateBounds: function () {\n\t\t\tvar markers = this._markers,\n\t\t\t    childClusters = this._childClusters,\n\t\t\t    latSum = 0,\n\t\t\t    lngSum = 0,\n\t\t\t    totalCount = this._childCount,\n\t\t\t    i, child, childLatLng, childCount;\n\n\t\t\t// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.\n\t\t\tif (totalCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Reset rather than creating a new object, for performance.\n\t\t\tthis._resetBounds();\n\n\t\t\t// Child markers.\n\t\t\tfor (i = 0; i < markers.length; i++) {\n\t\t\t\tchildLatLng = markers[i]._latlng;\n\n\t\t\t\tthis._bounds.extend(childLatLng);\n\n\t\t\t\tlatSum += childLatLng.lat;\n\t\t\t\tlngSum += childLatLng.lng;\n\t\t\t}\n\n\t\t\t// Child clusters.\n\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\tchild = childClusters[i];\n\n\t\t\t\t// Re-compute child bounds and weighted position first if necessary.\n\t\t\t\tif (child._boundsNeedUpdate) {\n\t\t\t\t\tchild._recalculateBounds();\n\t\t\t\t}\n\n\t\t\t\tthis._bounds.extend(child._bounds);\n\n\t\t\t\tchildLatLng = child._wLatLng;\n\t\t\t\tchildCount = child._childCount;\n\n\t\t\t\tlatSum += childLatLng.lat * childCount;\n\t\t\t\tlngSum += childLatLng.lng * childCount;\n\t\t\t}\n\n\t\t\tthis._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);\n\n\t\t\t// Reset dirty flag.\n\t\t\tthis._boundsNeedUpdate = false;\n\t\t},\n\n\t\t//Set our markers position as given and add it to the map\n\t\t_addToMap: function (startPos) {\n\t\t\tif (startPos) {\n\t\t\t\tthis._backupLatlng = this._latlng;\n\t\t\t\tthis.setLatLng(startPos);\n\t\t\t}\n\t\t\tthis._group._featureGroup.addLayer(this);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {\n\t\t\tthis._recursively(bounds, 0, maxZoom - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar markers = c._markers,\n\t\t\t\t\t\ti, m;\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\n\t\t\t\t\t\t//Only do it if the icon is still on the map\n\t\t\t\t\t\tif (m._icon) {\n\t\t\t\t\t\t\tm._setPos(center);\n\t\t\t\t\t\t\tm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar childClusters = c._childClusters,\n\t\t\t\t\t\tj, cm;\n\t\t\t\t\tfor (j = childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tcm = childClusters[j];\n\t\t\t\t\t\tif (cm._icon) {\n\t\t\t\t\t\t\tcm._setPos(center);\n\t\t\t\t\t\t\tcm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, previousZoomLevel, newZoomLevel) {\n\t\t\tthis._recursively(bounds, newZoomLevel, 0,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);\n\n\t\t\t\t\t//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.\n\t\t\t\t\t//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds\n\t\t\t\t\t} else {\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t}\n\n\t\t\t\t\tc._addToMap();\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyBecomeVisible: function (bounds, zoomLevel) {\n\t\t\tthis._recursively(bounds, 0, zoomLevel, null, function (c) {\n\t\t\t\tc.clusterShow();\n\t\t\t});\n\t\t},\n\n\t\t_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {\n\t\t\tthis._recursively(bounds, -1, zoomLevel,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tif (zoomLevel === c._zoom) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Add our child markers at startPos (so they can be animated out)\n\t\t\t\t\tfor (var i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tvar nm = c._markers[i];\n\n\t\t\t\t\t\tif (!bounds.contains(nm._latlng)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (startPos) {\n\t\t\t\t\t\t\tnm._backupLatlng = nm.getLatLng();\n\n\t\t\t\t\t\t\tnm.setLatLng(startPos);\n\t\t\t\t\t\t\tif (nm.clusterHide) {\n\t\t\t\t\t\t\t\tnm.clusterHide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc._group._featureGroup.addLayer(nm);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._addToMap(startPos);\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyRestoreChildPositions: function (zoomLevel) {\n\t\t\t//Fix positions of child markers\n\t\t\tfor (var i = this._markers.length - 1; i >= 0; i--) {\n\t\t\t\tvar nm = this._markers[i];\n\t\t\t\tif (nm._backupLatlng) {\n\t\t\t\t\tnm.setLatLng(nm._backupLatlng);\n\t\t\t\t\tdelete nm._backupLatlng;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomLevel - 1 === this._zoom) {\n\t\t\t\t//Reposition child clusters\n\t\t\t\tfor (var j = this._childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\tthis._childClusters[j]._restorePosition();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = this._childClusters.length - 1; k >= 0; k--) {\n\t\t\t\t\tthis._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_restorePosition: function () {\n\t\t\tif (this._backupLatlng) {\n\t\t\t\tthis.setLatLng(this._backupLatlng);\n\t\t\t\tdelete this._backupLatlng;\n\t\t\t}\n\t\t},\n\n\t\t//exceptBounds: If set, don't remove any markers/clusters in it\n\t\t_recursivelyRemoveChildrenFromMap: function (previousBounds, zoomLevel, exceptBounds) {\n\t\t\tvar m, i;\n\t\t\tthis._recursively(previousBounds, -1, zoomLevel - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove markers at every level\n\t\t\t\t\tfor (i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._markers[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove child clusters at just the bottom level\n\t\t\t\t\tfor (i = c._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._childClusters[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t//Run the given functions recursively to this and child clusters\n\t\t// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to\n\t\t// zoomLevelToStart: zoom level to start running functions (inclusive)\n\t\t// zoomLevelToStop: zoom level to stop running functions (inclusive)\n\t\t// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level\n\t\t// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level\n\t\t_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {\n\t\t\tvar childClusters = this._childClusters,\n\t\t\t    zoom = this._zoom,\n\t\t\t    i, c;\n\n\t\t\tif (zoomLevelToStart > zoom) { //Still going down to required depth, just recurse to child clusters\n\t\t\t\tfor (i = childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\tc = childClusters[i];\n\t\t\t\t\tif (boundsToApplyTo.intersects(c._bounds)) {\n\t\t\t\t\t\tc._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else { //In required depth\n\n\t\t\t\tif (runAtEveryLevel) {\n\t\t\t\t\trunAtEveryLevel(this);\n\t\t\t\t}\n\t\t\t\tif (runAtBottomLevel && this._zoom === zoomLevelToStop) {\n\t\t\t\t\trunAtBottomLevel(this);\n\t\t\t\t}\n\n\t\t\t\t//TODO: This loop is almost the same as above\n\t\t\t\tif (zoomLevelToStop > zoom) {\n\t\t\t\t\tfor (i = childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tc = childClusters[i];\n\t\t\t\t\t\tif (boundsToApplyTo.intersects(c._bounds)) {\n\t\t\t\t\t\t\tc._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//Returns true if we are the parent of only one cluster and that cluster is the same as us\n\t\t_isSingleParent: function () {\n\t\t\t//Don't need to check this._markers as the rest won't work if there are any\n\t\t\treturn this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;\n\t\t}\n\t});\n\n\n\n\t/*\n\t* Extends L.Marker to include two extra methods: clusterHide and clusterShow.\n\t* \n\t* They work as setOpacity(0) and setOpacity(1) respectively, but\n\t* they will remember the marker's opacity when hiding and showing it again.\n\t* \n\t*/\n\n\n\tL.Marker.include({\n\t\t\n\t\tclusterHide: function () {\n\t\t\tthis.options.opacityWhenUnclustered = this.options.opacity || 1;\n\t\t\treturn this.setOpacity(0);\n\t\t},\n\t\t\n\t\tclusterShow: function () {\n\t\t\tvar ret = this.setOpacity(this.options.opacity || this.options.opacityWhenUnclustered);\n\t\t\tdelete this.options.opacityWhenUnclustered;\n\t\t\treturn ret;\n\t\t}\n\t\t\n\t});\n\n\n\n\n\n\tL.DistanceGrid = function (cellSize) {\n\t\tthis._cellSize = cellSize;\n\t\tthis._sqCellSize = cellSize * cellSize;\n\t\tthis._grid = {};\n\t\tthis._objectPoint = { };\n\t};\n\n\tL.DistanceGrid.prototype = {\n\n\t\taddObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    grid = this._grid,\n\t\t\t    row = grid[y] = grid[y] || {},\n\t\t\t    cell = row[x] = row[x] || [],\n\t\t\t    stamp = L.Util.stamp(obj);\n\n\t\t\tthis._objectPoint[stamp] = point;\n\n\t\t\tcell.push(obj);\n\t\t},\n\n\t\tupdateObject: function (obj, point) {\n\t\t\tthis.removeObject(obj);\n\t\t\tthis.addObject(obj, point);\n\t\t},\n\n\t\t//Returns true if the object was found\n\t\tremoveObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    grid = this._grid,\n\t\t\t    row = grid[y] = grid[y] || {},\n\t\t\t    cell = row[x] = row[x] || [],\n\t\t\t    i, len;\n\n\t\t\tdelete this._objectPoint[L.Util.stamp(obj)];\n\n\t\t\tfor (i = 0, len = cell.length; i < len; i++) {\n\t\t\t\tif (cell[i] === obj) {\n\n\t\t\t\t\tcell.splice(i, 1);\n\n\t\t\t\t\tif (len === 1) {\n\t\t\t\t\t\tdelete row[x];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\teachObject: function (fn, context) {\n\t\t\tvar i, j, k, len, row, cell, removed,\n\t\t\t    grid = this._grid;\n\n\t\t\tfor (i in grid) {\n\t\t\t\trow = grid[i];\n\n\t\t\t\tfor (j in row) {\n\t\t\t\t\tcell = row[j];\n\n\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\tremoved = fn.call(context, cell[k]);\n\t\t\t\t\t\tif (removed) {\n\t\t\t\t\t\t\tk--;\n\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetNearObject: function (point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    i, j, k, row, cell, len, obj, dist,\n\t\t\t    objectPoint = this._objectPoint,\n\t\t\t    closestDistSq = this._sqCellSize,\n\t\t\t    closest = null;\n\n\t\t\tfor (i = y - 1; i <= y + 1; i++) {\n\t\t\t\trow = this._grid[i];\n\t\t\t\tif (row) {\n\n\t\t\t\t\tfor (j = x - 1; j <= x + 1; j++) {\n\t\t\t\t\t\tcell = row[j];\n\t\t\t\t\t\tif (cell) {\n\n\t\t\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\t\t\tobj = cell[k];\n\t\t\t\t\t\t\t\tdist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);\n\t\t\t\t\t\t\t\tif (dist < closestDistSq) {\n\t\t\t\t\t\t\t\t\tclosestDistSq = dist;\n\t\t\t\t\t\t\t\t\tclosest = obj;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn closest;\n\t\t},\n\n\t\t_getCoord: function (x) {\n\t\t\treturn Math.floor(x / this._cellSize);\n\t\t},\n\n\t\t_sqDist: function (p, p2) {\n\t\t\tvar dx = p2.x - p.x,\n\t\t\t    dy = p2.y - p.y;\n\t\t\treturn dx * dx + dy * dy;\n\t\t}\n\t};\n\n\n\t/* Copyright (c) 2012 the authors listed at the following URL, and/or\n\tthe authors of referenced articles or incorporated external code:\n\thttp://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256\n\n\tPermission is hereby granted, free of charge, to any person obtaining\n\ta copy of this software and associated documentation files (the\n\t\"Software\"), to deal in the Software without restriction, including\n\twithout limitation the rights to use, copy, modify, merge, publish,\n\tdistribute, sublicense, and/or sell copies of the Software, and to\n\tpermit persons to whom the Software is furnished to do so, subject to\n\tthe following conditions:\n\n\tThe above copyright notice and this permission notice shall be\n\tincluded in all copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\tMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n\tIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n\tCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n\tTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n\tSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tRetrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434\n\t*/\n\n\t(function () {\n\t\tL.QuickHull = {\n\n\t\t\t/*\n\t\t\t * @param {Object} cpt a point to be measured from the baseline\n\t\t\t * @param {Array} bl the baseline, as represented by a two-element\n\t\t\t *   array of latlng objects.\n\t\t\t * @returns {Number} an approximate distance measure\n\t\t\t */\n\t\t\tgetDistant: function (cpt, bl) {\n\t\t\t\tvar vY = bl[1].lat - bl[0].lat,\n\t\t\t\t\tvX = bl[0].lng - bl[1].lng;\n\t\t\t\treturn (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {Array} baseLine a two-element array of latlng objects\n\t\t\t *   representing the baseline to project from\n\t\t\t * @param {Array} latLngs an array of latlng objects\n\t\t\t * @returns {Object} the maximum point and all new points to stay\n\t\t\t *   in consideration for the hull.\n\t\t\t */\n\t\t\tfindMostDistantPointFromBaseLine: function (baseLine, latLngs) {\n\t\t\t\tvar maxD = 0,\n\t\t\t\t\tmaxPt = null,\n\t\t\t\t\tnewPoints = [],\n\t\t\t\t\ti, pt, d;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tpt = latLngs[i];\n\t\t\t\t\td = this.getDistant(pt, baseLine);\n\n\t\t\t\t\tif (d > 0) {\n\t\t\t\t\t\tnewPoints.push(pt);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (d > maxD) {\n\t\t\t\t\t\tmaxD = d;\n\t\t\t\t\t\tmaxPt = pt;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { maxPoint: maxPt, newPoints: newPoints };\n\t\t\t},\n\n\n\t\t\t/*\n\t\t\t * Given a baseline, compute the convex hull of latLngs as an array\n\t\t\t * of latLngs.\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tbuildConvexHull: function (baseLine, latLngs) {\n\t\t\t\tvar convexHullBaseLines = [],\n\t\t\t\t\tt = this.findMostDistantPointFromBaseLine(baseLine, latLngs);\n\n\t\t\t\tif (t.maxPoint) { // if there is still a point \"outside\" the base line\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\treturn convexHullBaseLines;\n\t\t\t\t} else {  // if there is no more point \"outside\" the base line, the current base line is part of the convex hull\n\t\t\t\t\treturn [baseLine[0]];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Given an array of latlngs, compute a convex hull as an array\n\t\t\t * of latlngs\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tgetConvexHull: function (latLngs) {\n\t\t\t\t// find first baseline\n\t\t\t\tvar maxLat = false, minLat = false,\n\t\t\t\t\tmaxLng = false, minLng = false,\n\t\t\t\t\tmaxLatPt = null, minLatPt = null,\n\t\t\t\t\tmaxLngPt = null, minLngPt = null,\n\t\t\t\t\tmaxPt = null, minPt = null,\n\t\t\t\t\ti;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar pt = latLngs[i];\n\t\t\t\t\tif (maxLat === false || pt.lat > maxLat) {\n\t\t\t\t\t\tmaxLatPt = pt;\n\t\t\t\t\t\tmaxLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLat === false || pt.lat < minLat) {\n\t\t\t\t\t\tminLatPt = pt;\n\t\t\t\t\t\tminLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (maxLng === false || pt.lng > maxLng) {\n\t\t\t\t\t\tmaxLngPt = pt;\n\t\t\t\t\t\tmaxLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLng === false || pt.lng < minLng) {\n\t\t\t\t\t\tminLngPt = pt;\n\t\t\t\t\t\tminLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (minLat !== maxLat) {\n\t\t\t\t\tminPt = minLatPt;\n\t\t\t\t\tmaxPt = maxLatPt;\n\t\t\t\t} else {\n\t\t\t\t\tminPt = minLngPt;\n\t\t\t\t\tmaxPt = maxLngPt;\n\t\t\t\t}\n\n\t\t\t\tvar ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),\n\t\t\t\t\t\t\t\t\tthis.buildConvexHull([maxPt, minPt], latLngs));\n\t\t\t\treturn ch;\n\t\t\t}\n\t\t};\n\t}());\n\n\tL.MarkerCluster.include({\n\t\tgetConvexHull: function () {\n\t\t\tvar childMarkers = this.getAllChildMarkers(),\n\t\t\t\tpoints = [],\n\t\t\t\tp, i;\n\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tp = childMarkers[i].getLatLng();\n\t\t\t\tpoints.push(p);\n\t\t\t}\n\n\t\t\treturn L.QuickHull.getConvexHull(points);\n\t\t}\n\t});\n\n\n\t//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet\n\t//Huge thanks to jawj for implementing it first to make my job easy :-)\n\n\tL.MarkerCluster.include({\n\n\t\t_2PI: Math.PI * 2,\n\t\t_circleFootSeparation: 25, //related to circumference of circle\n\t\t_circleStartAngle: Math.PI / 6,\n\n\t\t_spiralFootSeparation:  28, //related to size of spiral (experiment!)\n\t\t_spiralLengthStart: 11,\n\t\t_spiralLengthFactor: 5,\n\n\t\t_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.\n\t\t\t\t\t\t\t\t\t// 0 -> always spiral; Infinity -> always circle\n\n\t\tspiderfy: function () {\n\t\t\tif (this._group._spiderfied === this || this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar childMarkers = this.getAllChildMarkers(),\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tcenter = map.latLngToLayerPoint(this._latlng),\n\t\t\t\tpositions;\n\n\t\t\tthis._group._unspiderfy();\n\t\t\tthis._group._spiderfied = this;\n\n\t\t\t//TODO Maybe: childMarkers order by distance to center\n\n\t\t\tif (childMarkers.length >= this._circleSpiralSwitchover) {\n\t\t\t\tpositions = this._generatePointsSpiral(childMarkers.length, center);\n\t\t\t} else {\n\t\t\t\tcenter.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\n\t\t\t\tpositions = this._generatePointsCircle(childMarkers.length, center);\n\t\t\t}\n\n\t\t\tthis._animationSpiderfy(childMarkers, positions);\n\t\t},\n\n\t\tunspiderfy: function (zoomDetails) {\n\t\t\t/// <param Name=\"zoomDetails\">Argument from zoomanim if being called in a zoom animation or null otherwise</param>\n\t\t\tif (this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._animationUnspiderfy(zoomDetails);\n\n\t\t\tthis._group._spiderfied = null;\n\t\t},\n\n\t\t_generatePointsCircle: function (count, centerPt) {\n\t\t\tvar circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),\n\t\t\t\tlegLength = circumference / this._2PI,  //radius from circumference\n\t\t\t\tangleStep = this._2PI / count,\n\t\t\t\tres = [],\n\t\t\t\ti, angle;\n\n\t\t\tres.length = count;\n\n\t\t\tfor (i = count - 1; i >= 0; i--) {\n\t\t\t\tangle = this._circleStartAngle + i * angleStep;\n\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t}\n\n\t\t\treturn res;\n\t\t},\n\n\t\t_generatePointsSpiral: function (count, centerPt) {\n\t\t\tvar spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,\n\t\t\t\tlegLength = spiderfyDistanceMultiplier * this._spiralLengthStart,\n\t\t\t\tseparation = spiderfyDistanceMultiplier * this._spiralFootSeparation,\n\t\t\t\tlengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,\n\t\t\t\tangle = 0,\n\t\t\t\tres = [],\n\t\t\t\ti;\n\n\t\t\tres.length = count;\n\n\t\t\t// Higher index, closer position to cluster center.\n\t\t\tfor (i = count - 1; i >= 0; i--) {\n\t\t\t\tangle += separation / legLength + i * 0.0005;\n\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t\tlegLength += lengthFactor / angle;\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tchildMarkers = this.getAllChildMarkers(),\n\t\t\t\tm, i;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tfg.removeLayer(m);\n\n\t\t\t\tif (m._preSpiderfyLatlng) {\n\t\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\t\tdelete m._preSpiderfyLatlng;\n\t\t\t\t}\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup._spiderfied = null;\n\t\t}\n\t});\n\n\t//Non Animated versions of everything\n\tL.MarkerClusterNonAnimated = L.MarkerCluster.extend({\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tlegOptions = this._group.options.spiderLegPolylineOptions,\n\t\t\t\ti, m, leg, newPos;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([this._latlng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Now add the marker.\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING\n\t\t\t\t}\n\n\t\t\t\tfg.addLayer(m);\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup.fire('spiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t},\n\n\t\t_animationUnspiderfy: function () {\n\t\t\tthis._noanimationUnspiderfy();\n\t\t}\n\t});\n\n\t//Animated versions here\n\tL.MarkerCluster.include({\n\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerLatLng = this._latlng,\n\t\t\t\tthisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tlegOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.\n\t\t\t\tfinalLegOpacity = legOptions.opacity,\n\t\t\t\ti, m, leg, legPath, legLength, newPos;\n\n\t\t\tif (finalLegOpacity === undefined) {\n\t\t\t\tfinalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;\n\t\t\t}\n\n\t\t\tif (svg) {\n\t\t\t\t// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.\n\t\t\t\tlegOptions.opacity = 0;\n\n\t\t\t\t// Add the class for CSS transitions.\n\t\t\t\tlegOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';\n\t\t\t} else {\n\t\t\t\t// Make sure we have a defined opacity.\n\t\t\t\tlegOptions.opacity = finalLegOpacity;\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Add markers and spider legs to map, hidden at our center point.\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([thisLayerLatLng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/\n\t\t\t\t// In our case the transition property is declared in the CSS file.\n\t\t\t\tif (svg) {\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.\n\t\t\t\t\tlegPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t}\n\n\t\t\t\t// If it is a marker, add it now and we'll animate it out\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Vectors just get immediately added\n\t\t\t\tfg.addLayer(m);\n\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._forceLayout();\n\t\t\tgroup._animationStart();\n\n\t\t\t// Reveal markers and spider legs.\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Move marker to new position\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\t\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\n\t\t\t\t// Animate leg (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegPath.style.strokeDashoffset = 0;\n\t\t\t\t\t//legPath.style.strokeOpacity = finalLegOpacity;\n\t\t\t\t\tleg.setStyle({opacity: finalLegOpacity});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('spiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t},\n\n\t\t_animationUnspiderfy: function (zoomDetails) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),\n\t\t\t\tchildMarkers = this.getAllChildMarkers(),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tm, i, leg, legPath, legLength, nonAnimatable;\n\n\t\t\tgroup._ignoreMove = true;\n\t\t\tgroup._animationStart();\n\n\t\t\t//Make us visible and bring the child markers back in\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Marker was added to us after we were spiderfied\n\t\t\t\tif (!m._preSpiderfyLatlng) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//Fix up the location to the real one\n\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\tdelete m._preSpiderfyLatlng;\n\n\t\t\t\t//Hack override the location to be our center\n\t\t\t\tnonAnimatable = true;\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (nonAnimatable) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t}\n\n\t\t\t\t// Animate the spider leg back in (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1;\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t\tleg.setStyle({opacity: 0});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\t//If we have only <= one child left then that marker will be shown on the map so don't remove it!\n\t\t\t\tvar stillThereChildCount = 0;\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\t\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\t\tstillThereChildCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t\tif (!m._spiderLeg) { //Has already been unspiderfied\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stillThereChildCount > 1) {\n\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t}\n\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t}\n\t});\n\n\n\tL.MarkerClusterGroup.include({\n\t\t//The MarkerCluster currently spiderfied (if any)\n\t\t_spiderfied: null,\n\n\t\tunspiderfy: function () {\n\t\t\tthis._unspiderfy.apply(this, arguments);\n\t\t},\n\n\t\t_spiderfierOnAdd: function () {\n\t\t\tthis._map.on('click', this._unspiderfyWrapper, this);\n\n\t\t\tif (this._map.options.zoomAnimation) {\n\t\t\t\tthis._map.on('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\t}\n\t\t\t//Browsers without zoomAnimation or a big zoom don't fire zoomstart\n\t\t\tthis._map.on('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\tif (!L.Browser.touch) {\n\t\t\t\tthis._map.getRenderer(this);\n\t\t\t\t//Needs to happen in the pageload, not after, or animations don't work in webkit\n\t\t\t\t//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements\n\t\t\t\t//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable\n\t\t\t}\n\t\t},\n\n\t\t_spiderfierOnRemove: function () {\n\t\t\tthis._map.off('click', this._unspiderfyWrapper, this);\n\t\t\tthis._map.off('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._map.off('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\t//Ensure that markers are back where they should be\n\t\t\t// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane\n\t\t\tthis._noanimationUnspiderfy();\n\t\t},\n\n\t\t//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)\n\t\t//This means we can define the animation they do rather than Markers doing an animation to their actual location\n\t\t_unspiderfyZoomStart: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.on('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t},\n\n\t\t_unspiderfyZoomAnim: function (zoomDetails) {\n\t\t\t//Wait until the first zoomanim after the user has finished touch-zooming before running the animation\n\t\t\tif (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._unspiderfy(zoomDetails);\n\t\t},\n\n\t\t_unspiderfyWrapper: function () {\n\t\t\t/// <summary>_unspiderfy but passes no arguments</summary>\n\t\t\tthis._unspiderfy();\n\t\t},\n\n\t\t_unspiderfy: function (zoomDetails) {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied.unspiderfy(zoomDetails);\n\t\t\t}\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied._noanimationUnspiderfy();\n\t\t\t}\n\t\t},\n\n\t\t//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc\n\t\t_unspiderfyLayer: function (layer) {\n\t\t\tif (layer._spiderLeg) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t\t\t//Position will be fixed up immediately in _animationUnspiderfy\n\t\t\t\tif (layer.setZIndexOffset) {\n\t\t\t\t\tlayer.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tthis._map.removeLayer(layer._spiderLeg);\n\t\t\t\tdelete layer._spiderLeg;\n\t\t\t}\n\t\t}\n\t});\n\n\n\t/**\n\t * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing\n\t * markers' icon options and refreshing their icon and their parent clusters\n\t * accordingly (case where their iconCreateFunction uses data of childMarkers\n\t * to make up the cluster icon).\n\t */\n\n\n\tL.MarkerClusterGroup.include({\n\t\t/**\n\t\t * Updates the icon of all clusters which are parents of the given marker(s).\n\t\t * In singleMarkerMode, also updates the given marker(s) icon.\n\t\t * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|\n\t\t * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent\n\t\t * clusters need to be updated. If not provided, retrieves all child markers of this.\n\t\t * @returns {L.MarkerClusterGroup}\n\t\t */\n\t\trefreshClusters: function (layers) {\n\t\t\tif (!layers) {\n\t\t\t\tlayers = this._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.MarkerClusterGroup) {\n\t\t\t\tlayers = layers._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.LayerGroup) {\n\t\t\t\tlayers = layers._layers;\n\t\t\t} else if (layers instanceof L.MarkerCluster) {\n\t\t\t\tlayers = layers.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.Marker) {\n\t\t\t\tlayers = [layers];\n\t\t\t} // else: must be an Array(L.Marker)|Map(L.Marker)\n\t\t\tthis._flagParentsIconsNeedUpdate(layers);\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t// In case of singleMarkerMode, also re-draw the markers.\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._refreshSingleMarkerModeMarkers(layers);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * Simply flags all parent clusters of the given markers as having a \"dirty\" icon.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_flagParentsIconsNeedUpdate: function (layers) {\n\t\t\tvar id, parent;\n\n\t\t\t// Assumes layers is an Array or an Object whose prototype is non-enumerable.\n\t\t\tfor (id in layers) {\n\t\t\t\t// Flag parent clusters' icon as \"dirty\", all the way up.\n\t\t\t\t// Dumb process that flags multiple times upper parents, but still\n\t\t\t\t// much more efficient than trying to be smart and make short lists,\n\t\t\t\t// at least in the case of a hierarchy following a power law:\n\t\t\t\t// http://jsperf.com/flag-nodes-in-power-hierarchy/2\n\t\t\t\tparent = layers[id].__parent;\n\t\t\t\twhile (parent) {\n\t\t\t\t\tparent._iconNeedsUpdate = true;\n\t\t\t\t\tparent = parent.__parent;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Re-draws the icon of the supplied markers.\n\t\t * To be used in singleMarkerMode only.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_refreshSingleMarkerModeMarkers: function (layers) {\n\t\t\tvar id, layer;\n\n\t\t\tfor (id in layers) {\n\t\t\t\tlayer = layers[id];\n\n\t\t\t\t// Make sure we do not override markers that do not belong to THIS group.\n\t\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\t\t// Need to re-create the icon first, then re-draw the marker.\n\t\t\t\t\tlayer.setIcon(this._overrideMarkerIcon(layer));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tL.Marker.include({\n\t\t/**\n\t\t * Updates the given options in the marker's icon and refreshes the marker.\n\t\t * @param options map object of icon options.\n\t\t * @param directlyRefreshClusters boolean (optional) true to trigger\n\t\t * MCG.refreshClustersOf() right away with this single marker.\n\t\t * @returns {L.Marker}\n\t\t */\n\t\trefreshIconOptions: function (options, directlyRefreshClusters) {\n\t\t\tvar icon = this.options.icon;\n\n\t\t\tL.setOptions(icon, options);\n\n\t\t\tthis.setIcon(icon);\n\n\t\t\t// Shortcut to refresh the associated MCG clusters right away.\n\t\t\t// To be used when refreshing a single marker.\n\t\t\t// Otherwise, better use MCG.refreshClusters() once at the end with\n\t\t\t// the list of modified markers.\n\t\t\tif (directlyRefreshClusters && this.__parent) {\n\t\t\t\tthis.__parent._group.refreshClusters(this);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t});\n\n\n\t}(window, document));\n        "
  },
  {
    "path": "talkmap/leaflet_dist/leaflet.markercluster.js",
    "content": "\n\t/*\n\t Leaflet.markercluster, Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.\n\t https://github.com/Leaflet/Leaflet.markercluster\n\t (c) 2012-2013, Dave Leaver, smartrak\n\t*/\n\t!function(e,t,i){L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[];var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this;if(!this._map)return this._needsClustering.push(e),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._map.getZoom();if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):e.getLatLng?this._map?e.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(\"move\",this._childMarkerMoved,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push(e),this):(this._nonPointGroup.removeLayer(e),this)},addLayers:function(e){if(!L.Util.isArray(e))return this.addLayer(e);var t,i=this._featureGroup,n=this._nonPointGroup,s=this.options.chunkedLoading,r=this.options.chunkInterval,o=this.options.chunkProgress,a=e.length,h=0,u=!0;if(this._map){var l=(new Date).getTime(),_=L.bind(function(){for(var d=(new Date).getTime();a>h;h++){if(s&&0===h%200){var c=(new Date).getTime()-d;if(c>r)break}if(t=e[h],t instanceof L.LayerGroup)u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(t,e),a=e.length;else if(t.getLatLng){if(!this.hasLayer(t)&&(this._addLayer(t,this._maxZoom),t.__parent&&2===t.__parent.getChildCount())){var p=t.__parent.getAllChildMarkers(),f=p[0]===t?p[1]:p[0];i.removeLayer(f)}}else n.addLayer(t)}o&&o(h,a,(new Date).getTime()-l),h===a?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(_,this.options.chunkDelay)},this);_()}else for(var d=this._needsClustering;a>h;h++)t=e[h],t instanceof L.LayerGroup?(u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(t,e),a=e.length):t.getLatLng?this.hasLayer(t)||d.push(t):n.addLayer(t);return this},removeLayers:function(e){var t,i,n=e.length,s=this._featureGroup,r=this._nonPointGroup,o=!0;if(!this._map){for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):(this._arraySplice(this._needsClustering,i),r.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push(i));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=n;for(t=0;h>t;t++)i=a[t],i instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):i.__parent?(this._removeLayer(i,!0,!0),s.hasLayer(i)&&(s.removeLayer(i),i.clusterShow&&i.clusterShow())):r.removeLayer(i);return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(\"move\",this._childMarkerMoved,this),delete e.__parent}),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;t>=0;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,n=this._needsClustering.slice(),s=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(n),i=n.length-1;i>=0;i--)-1===s.indexOf(n[i])&&e.call(t,n[i]);this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var e=[];return this.eachLayer(function(t){e.push(t)}),e},getLayer:function(e){var t=null;return e=parseInt(e,10),this.eachLayer(function(i){L.stamp(i)===e&&(t=i)}),t},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;t>=0;t--)if(i[t]===e)return!0;for(i=this._needsRemoving,t=i.length-1;t>=0;t--)if(i[t]===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){\"function\"!=typeof t&&(t=function(){});var i=function(){!e._icon&&!e.__parent._icon||this._inZoomAnimation||(this._map.off(\"moveend\",i,this),this.off(\"animationend\",i,this),e._icon?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};if(e._icon&&this._map.getBounds().contains(e.getLatLng()))t();else if(e.__parent._zoom<this._map.getZoom())this._map.on(\"moveend\",i,this),this._map.panTo(e.getLatLng());else{var n=function(){this._map.off(\"movestart\",n,this),n=null};this._map.on(\"movestart\",n,this),this._map.on(\"moveend\",i,this),this.on(\"animationend\",i,this),e.__parent.zoomToBounds(),n&&i.call(this)}},onAdd:function(e){this._map=e;var t,i,n;if(!isFinite(this._map.getMaxZoom()))throw\"Map has no maxZoom specified\";for(this._featureGroup.addTo(e),this._nonPointGroup.addTo(e),this._gridClusters||this._generateInitialClusters(),this._maxLat=e.options.crs.projection.MAX_LATITUDE,t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],this._removeLayer(n,!0);this._needsRemoving=[],this._zoom=this._map.getZoom(),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;i>=0;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,n=this._gridUnclustered;t>=0&&n[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerMoved:function(e){this._ignoreMove||(e.target._latlng=e.oldLatLng,this.removeLayer(e.target),e.target._latlng=e.latlng,this.addLayer(e.target))},_removeLayer:function(e,t,i){var n=this._gridClusters,s=this._gridUnclustered,r=this._featureGroup,o=this._map;t&&this._removeFromGridUnclustered(e,this._maxZoom);var a,h=e.__parent,u=h._markers;for(this._arraySplice(u,e);h&&(h._childCount--,h._boundsNeedUpdate=!0,!(h._zoom<0));)t&&h._childCount<=1?(a=h._markers[0]===e?h._markers[1]:h._markers[0],n[h._zoom].removeObject(h,o.project(h._cLatLng,h._zoom)),s[h._zoom].addObject(a,o.project(a.getLatLng(),h._zoom)),this._arraySplice(h.__parent._childClusters,h),h.__parent._markers.push(a),a.__parent=h.__parent,h._icon&&(r.removeLayer(h),i||r.addLayer(a))):h._iconNeedsUpdate=!0,h=h.__parent;delete e.__parent},_isOrIsParent:function(e,t){for(;t;){if(e===t)return!0;t=t.parentNode}return!1},fire:function(e,t,i){if(t&&t.layer instanceof L.MarkerCluster){if(t.originalEvent&&this._isOrIsParent(t.layer._icon,t.originalEvent.relatedTarget))return;e=\"cluster\"+e}L.FeatureGroup.prototype.fire.call(this,e,t,i)},listens:function(e,t){return L.FeatureGroup.prototype.listens.call(this,e,t)||L.FeatureGroup.prototype.listens.call(this,\"cluster\"+e,t)},_defaultIconCreateFunction:function(e){var t=e.getChildCount(),i=\" marker-cluster-\";return i+=10>t?\"small\":100>t?\"medium\":\"large\",new L.DivIcon({html:\"<div><span>\"+t+\"</span></div>\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(t||n)&&this.on(\"clusterclick\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){for(var t=e.layer,i=t;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),e.layer.getChildCount()>2&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(e||i)&&this.off(\"clusterclick\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=this._map.getMaxZoom(),t=this.options.maxClusterRadius,i=t;\"function\"!=typeof t&&(i=function(){return t}),this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var n=e;n>=0;n--)this._gridClusters[n]=new L.DistanceGrid(i(n)),this._gridUnclustered[n]=new L.DistanceGrid(i(n));this._topClusterLevel=new this._markerCluster(this,-1)},_addLayer:function(e,t){var i,n,s=this._gridClusters,r=this._gridUnclustered;for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(\"move\",this._childMarkerMoved,this);t>=0;t--){i=this._map.project(e.getLatLng(),t);var o=s[t].getNearObject(i);if(o)return o._addChild(e),e.__parent=o,void 0;if(o=r[t].getNearObject(i)){var a=o.__parent;a&&this._removeLayer(o,!1);var h=new this._markerCluster(this,t,o,e);s[t].addObject(h,this._map.project(h._cLatLng,t)),o.__parent=h,e.__parent=h;var u=h;for(n=t-1;n>a._zoom;n--)u=new this._markerCluster(this,n,u),s[n].addObject(u,this._map.project(o.getLatLng(),n));return a._addChild(u),this._removeFromGridUnclustered(o,t),void 0}r[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;e<this._queue.length;e++)this._queue[e].call(this);this._queue.length=0,clearTimeout(this._queueTimeout),this._queueTimeout=null},_mergeSplitClusters:function(){var e=Math.round(this._map._zoom);this._processQueue(),this._zoom<e&&this._currentShownBounds.intersects(this._getExpandedVisibleBounds())?(this._animationStart(),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,this._zoom,this._getExpandedVisibleBounds()),this._animationZoomIn(this._zoom,e)):this._zoom>e?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return t!==i&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,n=e.getLayers(),s=0;for(t=t||[];s<n.length;s++)i=n[s],i instanceof L.LayerGroup?this._extractNonGroupLayers(i,t):t.push(i);return t},_overrideMarkerIcon:function(e){var t=e.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[e]}});return t}}),L.MarkerClusterGroup.include({_mapBoundsInfinite:new L.LatLngBounds(new L.LatLng(-1/0,-1/0),new L.LatLng(1/0,1/0))}),L.MarkerClusterGroup.include({_noAnimation:{_animationStart:function(){},_animationZoomIn:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationZoomOut:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationAddLayer:function(e,t){this._animationAddLayerNonAnimated(e,t)}},_withAnimation:{_animationStart:function(){this._map._mapPane.className+=\" leaflet-cluster-anim\",this._inZoomAnimation++},_animationZoomIn:function(e,t){var i,n=this._getExpandedVisibleBounds(),s=this._featureGroup;this._ignoreMove=!0,this._topClusterLevel._recursively(n,e,0,function(r){var o,a=r._latlng,h=r._markers;for(n.contains(a)||(a=null),r._isSingleParent()&&e+1===t?(s.removeLayer(r),r._recursivelyAddChildrenToMap(null,t,n)):(r.clusterHide(),r._recursivelyAddChildrenToMap(a,t,n)),i=h.length-1;i>=0;i--)o=h[i],n.contains(o._latlng)||s.removeLayer(o)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(n,t),s.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(n,e,t,function(e){e._recursivelyRestoreChildPositions(t)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(n,e,0,function(e){s.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,n=this._featureGroup;n.addLayer(e),t!==e&&(t._childCount>2?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){n.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._map.getZoom())))}},_animationZoomOutSingle:function(e,t,i){var n=this._getExpandedVisibleBounds();e._recursivelyAnimateChildrenInAndAddSelfToMap(n,t+1,i);var s=this;this._forceLayout(),e._recursivelyBecomeVisible(n,i),this._enqueue(function(){if(1===e._childCount){var r=e._markers[0];this._ignoreMove=!0,r.setLatLng(r.getLatLng()),this._ignoreMove=!1,r.clusterShow&&r.clusterShow()}else e._recursively(n,i,0,function(e){e._recursivelyRemoveChildrenFromMap(n,t+1)});s._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(t.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)},L.MarkerCluster=L.Marker.extend({initialize:function(e,t,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(e){e=e||[];for(var t=this._childClusters.length-1;t>=0;t--)this._childClusters[t].getAllChildMarkers(e);for(var i=this._markers.length-1;i>=0;i--)e.push(this._markers[i]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(){for(var e,t=this._childClusters.slice(),i=this._group._map,n=i.getBoundsZoom(this._bounds),s=this._zoom+1,r=i.getZoom();t.length>0&&n>s;){s++;var o=[];for(e=0;e<t.length;e++)o=o.concat(t[e]._childClusters);t=o}n>s?this._group._map.setView(this._latlng,s):r>=n?this._group._map.setView(this._latlng,r+1):this._group._map.fitBounds(this._bounds)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,n,s=this._markers,r=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e<s.length;e++)i=s[e]._latlng,this._bounds.extend(i),o+=i.lat,a+=i.lng;for(e=0;e<r.length;e++)t=r[e],t._boundsNeedUpdate&&t._recalculateBounds(),this._bounds.extend(t._bounds),i=t._wLatLng,n=t._childCount,o+=i.lat*n,a+=i.lng*n;this._latlng=this._wLatLng=new L.LatLng(o/h,a/h),this._boundsNeedUpdate=!1}},_addToMap:function(e){e&&(this._backupLatlng=this._latlng,this.setLatLng(e)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(e,t,i){this._recursively(e,0,i-1,function(e){var i,n,s=e._markers;for(i=s.length-1;i>=0;i--)n=s[i],n._icon&&(n._setPos(t),n.clusterHide())},function(e){var i,n,s=e._childClusters;for(i=s.length-1;i>=0;i--)n=s[i],n._icon&&(n._setPos(t),n.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(e,t,i){this._recursively(e,i,0,function(n){n._recursivelyAnimateChildrenIn(e,n._group._map.latLngToLayerPoint(n.getLatLng()).round(),t),n._isSingleParent()&&t-1===i?(n.clusterShow(),n._recursivelyRemoveChildrenFromMap(e,t)):n.clusterHide(),n._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,0,t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(e,t,i){this._recursively(i,-1,t,function(n){if(t!==n._zoom)for(var s=n._markers.length-1;s>=0;s--){var r=n._markers[s];i.contains(r._latlng)&&(e&&(r._backupLatlng=r.getLatLng(),r.setLatLng(e),r.clusterHide&&r.clusterHide()),n._group._featureGroup.addLayer(r))}},function(t){t._addToMap(e)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;t>=0;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var s=this._childClusters.length-1;s>=0;s--)this._childClusters[s]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i){var n,s;this._recursively(e,-1,t-1,function(e){for(s=e._markers.length-1;s>=0;s--)n=e._markers[s],i&&i.contains(n._latlng)||(e._group._featureGroup.removeLayer(n),n.clusterShow&&n.clusterShow())},function(e){for(s=e._childClusters.length-1;s>=0;s--)n=e._childClusters[s],i&&i.contains(n._latlng)||(e._group._featureGroup.removeLayer(n),n.clusterShow&&n.clusterShow())})},_recursively:function(e,t,i,n,s){var r,o,a=this._childClusters,h=this._zoom;if(t>h)for(r=a.length-1;r>=0;r--)o=a[r],e.intersects(o._bounds)&&o._recursively(e,t,i,n,s);else if(n&&n(this),s&&this._zoom===i&&s(this),i>h)for(r=a.length-1;r>=0;r--)o=a[r],e.intersects(o._bounds)&&o._recursively(e,t,i,n,s)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}}),L.Marker.include({clusterHide:function(){return this.options.opacityWhenUnclustered=this.options.opacity||1,this.setOpacity(0)},clusterShow:function(){var e=this.setOpacity(this.options.opacity||this.options.opacityWhenUnclustered);return delete this.options.opacityWhenUnclustered,e}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),n=this._getCoord(t.y),s=this._grid,r=s[n]=s[n]||{},o=r[i]=r[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,n,s=this._getCoord(t.x),r=this._getCoord(t.y),o=this._grid,a=o[r]=o[r]||{},h=a[s]=a[s]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,n=h.length;n>i;i++)if(h[i]===e)return h.splice(i,1),1===n&&delete a[s],!0},eachObject:function(e,t){var i,n,s,r,o,a,h,u=this._grid;for(i in u){o=u[i];for(n in o)for(a=o[n],s=0,r=a.length;r>s;s++)h=e.call(t,a[s]),h&&(s--,r--)}},getNearObject:function(e){var t,i,n,s,r,o,a,h,u=this._getCoord(e.x),l=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,c=null;for(t=l-1;l+1>=t;t++)if(s=this._grid[t])for(i=u-1;u+1>=i;i++)if(r=s[i])for(n=0,o=r.length;o>n;n++)a=r[n],h=this._sqDist(_[L.Util.stamp(a)],e),d>h&&(d=h,c=a);return c},_getCoord:function(e){return Math.floor(e/this._cellSize)},_sqDist:function(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat,n=t[0].lng-t[1].lng;return n*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,n,s,r=0,o=null,a=[];for(i=t.length-1;i>=0;i--)n=t[i],s=this.getDistant(n,e),s>0&&(a.push(n),s>r&&(r=s,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],n=this.findMostDistantPointFromBaseLine(e,t);return n.maxPoint?(i=i.concat(this.buildConvexHull([e[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,e[1]],n.newPoints))):[e[0]]},getConvexHull:function(e){var t,i=!1,n=!1,s=!1,r=!1,o=null,a=null,h=null,u=null,l=null,_=null;for(t=e.length-1;t>=0;t--){var d=e[t];(i===!1||d.lat>i)&&(o=d,i=d.lat),(n===!1||d.lat<n)&&(a=d,n=d.lat),(s===!1||d.lng>s)&&(h=d,s=d.lng),(r===!1||d.lng<r)&&(u=d,r=d.lng)}n!==i?(_=a,l=o):(_=u,l=h);var c=[].concat(this.buildConvexHull([_,l],e),this.buildConvexHull([l,_],e));return c}}}(),L.MarkerCluster.include({getConvexHull:function(){var e,t,i=this.getAllChildMarkers(),n=[];for(t=i.length-1;t>=0;t--)e=i[t].getLatLng(),n.push(e);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:Math.PI/6,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(),i=this._group,n=i._map,s=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,t.length>=this._circleSpiralSwitchover?e=this._generatePointsSpiral(t.length,s):(s.y+=10,e=this._generatePointsCircle(t.length,s)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,n,s=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e),r=s/this._2PI,o=this._2PI/e,a=[];for(a.length=e,i=e-1;i>=0;i--)n=this._circleStartAngle+i*o,a[i]=new L.Point(t.x+r*Math.cos(n),t.y+r*Math.sin(n))._round();return a},_generatePointsSpiral:function(e,t){var i,n=this._group.options.spiderfyDistanceMultiplier,s=n*this._spiralLengthStart,r=n*this._spiralFootSeparation,o=n*this._spiralLengthFactor*this._2PI,a=0,h=[];for(h.length=e,i=e-1;i>=0;i--)a+=r/s+5e-4*i,h[i]=new L.Point(t.x+s*Math.cos(a),t.y+s*Math.sin(a))._round(),s+=o/a;return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,n=i._map,s=i._featureGroup,r=this.getAllChildMarkers();for(i._ignoreMove=!0,this.setOpacity(1),t=r.length-1;t>=0;t--)e=r[t],s.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(n.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:r}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,n,s,r,o=this._group,a=o._map,h=o._featureGroup,u=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i<e.length;i++)r=a.layerPointToLatLng(t[i]),n=e[i],s=new L.Polyline([this._latlng,r],u),a.addLayer(s),n._spiderLeg=s,n._preSpiderfyLatlng=n._latlng,n.setLatLng(r),n.setZIndexOffset&&n.setZIndexOffset(1e6),h.addLayer(n);this.setOpacity(.3),o._ignoreMove=!1,o.fire(\"spiderfied\",{cluster:this,markers:e})},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerCluster.include({_animationSpiderfy:function(e,t){var n,s,r,o,a,h,u=this,l=this._group,_=l._map,d=l._featureGroup,c=this._latlng,p=_.latLngToLayerPoint(c),f=L.Path.SVG,m=L.extend({},this._group.options.spiderLegPolylineOptions),g=m.opacity;for(g===i&&(g=L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity),f?(m.opacity=0,m.className=(m.className||\"\")+\" leaflet-cluster-spider-leg\"):m.opacity=g,l._ignoreMove=!0,n=0;n<e.length;n++)s=e[n],h=_.layerPointToLatLng(t[n]),r=new L.Polyline([c,h],m),_.addLayer(r),s._spiderLeg=r,f&&(o=r._path,a=o.getTotalLength()+.1,o.style.strokeDasharray=a,o.style.strokeDashoffset=a),s.setZIndexOffset&&s.setZIndexOffset(1e6),s.clusterHide&&s.clusterHide(),d.addLayer(s),s._setPos&&s._setPos(p);for(l._forceLayout(),l._animationStart(),n=e.length-1;n>=0;n--)h=_.layerPointToLatLng(t[n]),s=e[n],s._preSpiderfyLatlng=s._latlng,s.setLatLng(h),s.clusterShow&&s.clusterShow(),f&&(r=s._spiderLeg,o=r._path,o.style.strokeDashoffset=0,r.setStyle({opacity:g}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:u,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,n,s,r,o,a=this,h=this._group,u=h._map,l=h._featureGroup,_=e?u._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):u.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(),c=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;i>=0;i--)t=d[i],t._preSpiderfyLatlng&&(t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&l.removeLayer(t),c&&(n=t._spiderLeg,s=n._path,r=s.getTotalLength()+.1,s.style.strokeDashoffset=r,n.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&e++;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),e>1&&l.removeLayer(t),u.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}})}(window,document);\n\t"
  },
  {
    "path": "talkmap/leaflet_dist/screen.css",
    "content": "\n\t#map {\n\t\twidth: 800px; \n\t\theight: 600px; \n\t\tborder: 1px solid #ccc;\n\t}\n\n\t#progress {\n\t    display: none;\n\t    position: absolute;\n\t    z-index: 1000;\n\t    left: 400px;\n\t    top: 300px;\n\t    width: 200px;\n\t    height: 20px;\n\t    margin-top: -20px;\n\t    margin-left: -100px;\n\t    background-color: #fff;\n\t    background-color: rgba(255, 255, 255, 0.7);\n\t    border-radius: 4px;\n\t    padding: 2px;\n\t}\n\n\t#progress-bar {\n\t    width: 0;\n\t    height: 100%;\n\t    background-color: #76A6FC;\n\t    border-radius: 4px;\n\t}\n        "
  },
  {
    "path": "talkmap/map.html",
    "content": "\n    <!DOCTYPE html>\n    <html>\n    <head>\n    \t<title>Leaflet debug page</title>\n\t\t\n\t\t<!-- Add Leaflet support -->\n\t\t<link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" integrity=\"sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=\" crossorigin=\"\"/>\n\t\t<script src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\" integrity=\"sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=\" crossorigin=\"\"></script>\n\n    \t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \t<link rel=\"stylesheet\" href=\"leaflet_dist/screen.css\" />\n\n    \t<link rel=\"stylesheet\" href=\"leaflet_dist/MarkerCluster.css\" />\n    \t<link rel=\"stylesheet\" href=\"leaflet_dist/MarkerCluster.Default.css\" />\n    \t<script src=\"leaflet_dist/leaflet.markercluster-src.js\"></script>\n    \t<script src=\"org-locations.js\"></script>\n\n    </head>\n    <body>\n\n    \t<div id=\"map\"></div>\n    \t<span>Mouse over a cluster to see the bounds of its children and click a cluster to zoom to those bounds</span>\n    \t<script type=\"text/javascript\">\n    \t\tvar tiles = L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}', {\n              maxZoom: 18,\n              attribution: 'Tiles &copy; Esri &mdash; Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012'\n                    }),\n    \t\t\tlatlng = L.latLng(30, 10);\n    \t\tvar map = L.map('map', {center: latlng, zoom: 0.7, layers: [tiles]});\n    \t\tvar markers = L.markerClusterGroup({\n    \t\t\tshowCoverageOnHover: false,\n    \t\t\tmaxClusterRadius: 80\n    \t\t\t});\n    \t\tfor (var i = 0; i < addressPoints.length; i++) {\n    \t\t\tvar a = addressPoints[i];\n    \t\t\tvar title = a[0];\n    \t\t\tvar marker = L.marker(new L.LatLng(a[1], a[2]), { title: title });\n    \t\t\tmarker.bindPopup(title);\n    \t\t\tmarkers.addLayer(marker);\n    \t\t}\n    \t\tmap.addLayer(markers);\n    \t\tmap.zoomIn();\n    \t</script>\n    </body>\n    </html>\n    "
  },
  {
    "path": "talkmap/org-locations.js",
    "content": "var addressPoints = [\n  [\n    \"Talk 2 on Relevant Topic in Your Field<br />London School of Testing; London, UK\",\n    51.4893335,\n    -0.14405508452768728\n  ],\n  [\n    \"Tutorial 1 on Relevant Topic in Your Field<br />UC-Berkeley Institute for Testing Science; Berkeley, CA, USA\",\n    37.8708393,\n    -122.272863\n  ],\n  [\n    \"Conference Proceeding talk 3 on Relevant Topic in Your Field<br />Testing Institute of America 2014 Annual Conference; Los Angeles, CA, USA\",\n    34.0536909,\n    -118.242766\n  ],\n  [\n    \"Talk 1 on Relevant Topic in Your Field<br />UC San Francisco, Department of Testing; San Francisco, CA, USA\",\n    37.7792588,\n    -122.4193286\n  ]\n];"
  },
  {
    "path": "talkmap.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Leaflet cluster map of talk locations\\n\",\n    \"\\n\",\n    \"Assuming you are working in a Linux or Windows Subsystem for Linux environment, you may need to install some dependencies. Assuming a clean installation, the following will be needed:\\n\",\n    \"\\n\",\n    \"```bash\\n\",\n    \"sudo apt install jupyter\\n\",\n    \"sudo apt install python3-pip\\n\",\n    \"pip install python-frontmatter getorg --upgrade\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"After which you can run this from the `_talks/` directory, via:\\n\",\n    \"\\n\",\n    \"```bash\\n\",\n    \" jupyter nbconvert --to notebook --execute talkmap.ipynb --output talkmap_out.ipynb\\n\",\n    \"```\\n\",\n    \" \\n\",\n    \"The `_talks/` directory contains `.md` files of all your talks. This scrapes the location YAML field from each `.md` file, geolocates it with `geopy/Nominatim`, and uses the `getorg` library to output data, HTML, and Javascript for a standalone cluster map.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Start by installing the dependencies\\n\",\n    \"!pip install python-frontmatter getorg --upgrade\\n\",\n    \"import frontmatter\\n\",\n    \"import glob\\n\",\n    \"import getorg\\n\",\n    \"from geopy import Nominatim\\n\",\n    \"from geopy.exc import GeocoderTimedOut\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Collect the Markdown files\\n\",\n    \"g = glob.glob(\\\"_talks/*.md\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Set the default timeout, in seconds\\n\",\n    \"TIMEOUT = 5\\n\",\n    \"\\n\",\n    \"# Prepare to geolocate\\n\",\n    \"geocoder = Nominatim(user_agent=\\\"academicpages.github.io\\\")\\n\",\n    \"location_dict = {}\\n\",\n    \"location = \\\"\\\"\\n\",\n    \"permalink = \\\"\\\"\\n\",\n    \"title = \\\"\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"In the event that this times out with an error, double check to make sure that the location is can be properly geolocated.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Perform geolocation\\n\",\n    \"for file in g:\\n\",\n    \"    # Read the file\\n\",\n    \"    data = frontmatter.load(file)\\n\",\n    \"    data = data.to_dict()\\n\",\n    \"\\n\",\n    \"    # Press on if the location is not present\\n\",\n    \"    if 'location' not in data:\\n\",\n    \"        continue\\n\",\n    \"\\n\",\n    \"    # Prepare the description\\n\",\n    \"    title = data['title'].strip()\\n\",\n    \"    venue = data['venue'].strip()\\n\",\n    \"    location = data['location'].strip()\\n\",\n    \"    description = f\\\"{title}<br />{venue}; {location}\\\"\\n\",\n    \"\\n\",\n    \"    # Geocode the location and report the status\\n\",\n    \"    try:\\n\",\n    \"        location_dict[description] = geocoder.geocode(location, timeout=TIMEOUT)\\n\",\n    \"        print(description, location_dict[description])\\n\",\n    \"    except ValueError as ex:\\n\",\n    \"        print(f\\\"Error: geocode failed on input {location} with message {ex}\\\")\\n\",\n    \"    except GeocoderTimedOut as ex:\\n\",\n    \"        print(f\\\"Error: geocode timed out on input {location} with message {ex}\\\")\\n\",\n    \"    except Exception as ex:\\n\",\n    \"        print(f\\\"An unhandled exception occurred while processing input {location} with message {ex}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Save the map\\n\",\n    \"m = getorg.orgmap.create_map_obj()\\n\",\n    \"getorg.orgmap.output_html_cluster_map(location_dict, folder_name=\\\"talkmap\\\", hashed_usernames=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.8.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  },
  {
    "path": "talkmap.py",
    "content": "# Leaflet cluster map of talk locations\n#\n# Run this from the _talks/ directory, which contains .md files of all your\n# talks. This scrapes the location YAML field from each .md file, geolocates it\n# with geopy/Nominatim, and uses the getorg library to output data, HTML, and\n# Javascript for a standalone cluster map. This is functionally the same as the\n# #talkmap Jupyter notebook.\nimport frontmatter\nimport glob\nimport getorg\nfrom geopy import Nominatim\nfrom geopy.exc import GeocoderTimedOut\n\n# Set the default timeout, in seconds\nTIMEOUT = 5\n\n# Collect the Markdown files\ng = glob.glob(\"_talks/*.md\")\n\n# Prepare to geolocate\ngeocoder = Nominatim(user_agent=\"academicpages.github.io\")\nlocation_dict = {}\nlocation = \"\"\npermalink = \"\"\ntitle = \"\"\n\n# Perform geolocation\nfor file in g:\n    # Read the file\n    data = frontmatter.load(file)\n    data = data.to_dict()\n\n    # Press on if the location is not present\n    if 'location' not in data:\n        continue\n\n    # Prepare the description\n    title = data['title'].strip()\n    venue = data['venue'].strip()\n    location = data['location'].strip()\n    description = f\"{title}<br />{venue}; {location}\"\n\n    # Geocode the location and report the status\n    try:\n        location_dict[description] = geocoder.geocode(location, timeout=TIMEOUT)\n        print(description, location_dict[description])\n    except ValueError as ex:\n        print(f\"Error: geocode failed on input {location} with message {ex}\")\n    except GeocoderTimedOut as ex:\n        print(f\"Error: geocode timed out on input {location} with message {ex}\")\n    except Exception as ex:\n        print(f\"An unhandled exception occurred while processing input {location} with message {ex}\")\n\n# Save the map\nm = getorg.orgmap.create_map_obj()\ngetorg.orgmap.output_html_cluster_map(location_dict, folder_name=\"talkmap\", hashed_usernames=False)\n"
  },
  {
    "path": "talkmap_out.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Leaflet cluster map of talk locations\\n\",\n    \"\\n\",\n    \"Assuming you are working in a Linux or Windows Subsystem for Linux environment, you may need to install some dependencies. Assuming a clean installation, the following will be needed:\\n\",\n    \"\\n\",\n    \"```bash\\n\",\n    \"sudo apt install jupyter\\n\",\n    \"sudo apt install python3-pip\\n\",\n    \"pip install python-frontmatter getorg --upgrade\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"After which you can run this from the `_talks/` directory, via:\\n\",\n    \"\\n\",\n    \"```bash\\n\",\n    \" jupyter nbconvert --to notebook --execute talkmap.ipynb --output talkmap_out.ipynb\\n\",\n    \"```\\n\",\n    \" \\n\",\n    \"The `_talks/` directory contains `.md` files of all your talks. This scrapes the location YAML field from each `.md` file, geolocates it with `geopy/Nominatim`, and uses the `getorg` library to output data, HTML, and Javascript for a standalone cluster map.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"execution\": {\n     \"iopub.execute_input\": \"2025-02-26T03:36:06.769536Z\",\n     \"iopub.status.busy\": \"2025-02-26T03:36:06.769131Z\",\n     \"iopub.status.idle\": \"2025-02-26T03:36:07.934020Z\",\n     \"shell.execute_reply\": \"2025-02-26T03:36:07.933257Z\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Collecting python-frontmatter\\r\\n\",\n      \"  Downloading python_frontmatter-1.1.0-py3-none-any.whl.metadata (4.1 kB)\\r\\n\",\n      \"Requirement already satisfied: getorg in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (0.3.1)\\r\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Requirement already satisfied: PyYAML in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from python-frontmatter) (6.0.2)\\r\\n\",\n      \"Requirement already satisfied: geopy in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from getorg) (2.4.1)\\r\\n\",\n      \"Requirement already satisfied: pygithub in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from getorg) (2.6.1)\\r\\n\",\n      \"Requirement already satisfied: retrying in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from getorg) (1.3.4)\\r\\n\",\n      \"Requirement already satisfied: geographiclib<3,>=1.52 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from geopy->getorg) (2.0)\\r\\n\",\n      \"Requirement already satisfied: pynacl>=1.4.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pygithub->getorg) (1.5.0)\\r\\n\",\n      \"Requirement already satisfied: requests>=2.14.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pygithub->getorg) (2.32.3)\\r\\n\",\n      \"Requirement already satisfied: pyjwt>=2.4.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pyjwt[crypto]>=2.4.0->pygithub->getorg) (2.10.1)\\r\\n\",\n      \"Requirement already satisfied: typing-extensions>=4.0.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pygithub->getorg) (4.12.2)\\r\\n\",\n      \"Requirement already satisfied: urllib3>=1.26.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pygithub->getorg) (2.3.0)\\r\\n\",\n      \"Requirement already satisfied: Deprecated in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pygithub->getorg) (1.2.18)\\r\\n\",\n      \"Requirement already satisfied: six>=1.7.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from retrying->getorg) (1.17.0)\\r\\n\",\n      \"Requirement already satisfied: cryptography>=3.4.0 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pyjwt[crypto]>=2.4.0->pygithub->getorg) (44.0.1)\\r\\n\",\n      \"Requirement already satisfied: cffi>=1.4.1 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from pynacl>=1.4.0->pygithub->getorg) (1.17.1)\\r\\n\",\n      \"Requirement already satisfied: charset-normalizer<4,>=2 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from requests>=2.14.0->pygithub->getorg) (3.4.1)\\r\\n\",\n      \"Requirement already satisfied: idna<4,>=2.5 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from requests>=2.14.0->pygithub->getorg) (3.10)\\r\\n\",\n      \"Requirement already satisfied: certifi>=2017.4.17 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from requests>=2.14.0->pygithub->getorg) (2025.1.31)\\r\\n\",\n      \"Requirement already satisfied: wrapt<2,>=1.10 in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from Deprecated->pygithub->getorg) (1.17.2)\\r\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Requirement already satisfied: pycparser in /opt/hostedtoolcache/Python/3.9.21/x64/lib/python3.9/site-packages (from cffi>=1.4.1->pynacl>=1.4.0->pygithub->getorg) (2.22)\\r\\n\",\n      \"Downloading python_frontmatter-1.1.0-py3-none-any.whl (9.8 kB)\\r\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Installing collected packages: python-frontmatter\\r\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Successfully installed python-frontmatter-1.1.0\\r\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Iywidgets and ipyleaflet support disabled. You must be in a Jupyter notebook to use this feature.\\n\",\n      \"Error raised:\\n\",\n      \"No module named 'ipyleaflet'\\n\",\n      \"Check that you have enabled ipyleaflet in Jupyter with:\\n\",\n      \"    jupyter nbextension enable --py ipyleaflet\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Start by installing the dependencies\\n\",\n    \"!pip install python-frontmatter getorg --upgrade\\n\",\n    \"import frontmatter\\n\",\n    \"import glob\\n\",\n    \"import getorg\\n\",\n    \"from geopy import Nominatim\\n\",\n    \"from geopy.exc import GeocoderTimedOut\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"execution\": {\n     \"iopub.execute_input\": \"2025-02-26T03:36:07.936149Z\",\n     \"iopub.status.busy\": \"2025-02-26T03:36:07.935901Z\",\n     \"iopub.status.idle\": \"2025-02-26T03:36:07.939314Z\",\n     \"shell.execute_reply\": \"2025-02-26T03:36:07.938765Z\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Collect the Markdown files\\n\",\n    \"g = glob.glob(\\\"_talks/*.md\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {\n    \"collapsed\": true,\n    \"execution\": {\n     \"iopub.execute_input\": \"2025-02-26T03:36:07.941580Z\",\n     \"iopub.status.busy\": \"2025-02-26T03:36:07.941049Z\",\n     \"iopub.status.idle\": \"2025-02-26T03:36:07.966143Z\",\n     \"shell.execute_reply\": \"2025-02-26T03:36:07.965594Z\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Set the default timeout, in seconds\\n\",\n    \"TIMEOUT = 5\\n\",\n    \"\\n\",\n    \"# Prepare to geolocate\\n\",\n    \"geocoder = Nominatim(user_agent=\\\"academicpages.github.io\\\")\\n\",\n    \"location_dict = {}\\n\",\n    \"location = \\\"\\\"\\n\",\n    \"permalink = \\\"\\\"\\n\",\n    \"title = \\\"\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"In the event that this times out with an error, double check to make sure that the location is can be properly geolocated.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"execution\": {\n     \"iopub.execute_input\": \"2025-02-26T03:36:07.968167Z\",\n     \"iopub.status.busy\": \"2025-02-26T03:36:07.967976Z\",\n     \"iopub.status.idle\": \"2025-02-26T03:36:11.603488Z\",\n     \"shell.execute_reply\": \"2025-02-26T03:36:11.602744Z\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Talk 2 on Relevant Topic in Your Field<br />London School of Testing; London, UK London, Greater London, England, United Kingdom\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Tutorial 1 on Relevant Topic in Your Field<br />UC-Berkeley Institute for Testing Science; Berkeley, CA, USA Berkeley, Alameda County, California, United States\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Conference Proceeding talk 3 on Relevant Topic in Your Field<br />Testing Institute of America 2014 Annual Conference; Los Angeles, CA, USA Los Angeles, Los Angeles County, California, United States\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Talk 1 on Relevant Topic in Your Field<br />UC San Francisco, Department of Testing; San Francisco, CA, USA San Francisco, California, United States\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Perform geolocation\\n\",\n    \"for file in g:\\n\",\n    \"    # Read the file\\n\",\n    \"    data = frontmatter.load(file)\\n\",\n    \"    data = data.to_dict()\\n\",\n    \"\\n\",\n    \"    # Press on if the location is not present\\n\",\n    \"    if 'location' not in data:\\n\",\n    \"        continue\\n\",\n    \"\\n\",\n    \"    # Prepare the description\\n\",\n    \"    title = data['title'].strip()\\n\",\n    \"    venue = data['venue'].strip()\\n\",\n    \"    location = data['location'].strip()\\n\",\n    \"    description = f\\\"{title}<br />{venue}; {location}\\\"\\n\",\n    \"\\n\",\n    \"    # Geocode the location and report the status\\n\",\n    \"    try:\\n\",\n    \"        location_dict[description] = geocoder.geocode(location, timeout=TIMEOUT)\\n\",\n    \"        print(description, location_dict[description])\\n\",\n    \"    except ValueError as ex:\\n\",\n    \"        print(f\\\"Error: geocode failed on input {location} with message {ex}\\\")\\n\",\n    \"    except GeocoderTimedOut as ex:\\n\",\n    \"        print(f\\\"Error: geocode timed out on input {location} with message {ex}\\\")\\n\",\n    \"    except Exception as ex:\\n\",\n    \"        print(f\\\"An unhandled exception occurred while processing input {location} with message {ex}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"execution\": {\n     \"iopub.execute_input\": \"2025-02-26T03:36:11.605607Z\",\n     \"iopub.status.busy\": \"2025-02-26T03:36:11.605411Z\",\n     \"iopub.status.idle\": \"2025-02-26T03:36:11.613528Z\",\n     \"shell.execute_reply\": \"2025-02-26T03:36:11.612932Z\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"'Written map to talkmap/'\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Save the map\\n\",\n    \"m = getorg.orgmap.create_map_obj()\\n\",\n    \"getorg.orgmap.output_html_cluster_map(location_dict, folder_name=\\\"talkmap\\\", hashed_usernames=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.21\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 0\n}\n"
  }
]